jupyterをいじってみた

最近何かと目にするpython実行環境、jupyterを触ってみました。

私がいじり回すのは組み込み分野ですので概ねC/C++言語を使っているのですが、今後はUIを始め速度を要求しない処理はpythonにしようと考えています。pythonはきちんとしたメモリ管理機能やファイルシステムが必要ですが、すでにARM Linuxが組み込みに降りてきています。逆にARM Linuxのネットワークやファイルシステムと言った豊富なミドルウェアをC/C++で使いこなすのは少々骨が折れます。Pythonなら適任でしょう。

そういうわけで、最近はEclipse + Python3 + git でpythonを時々いじっています。さてそこに現れたjupyterは、何がおもしろいのでしょうか。

サーバ・クライアント型の実行環境

jupyterはサーバ・クライアント型の実行環境です。

ユーザーはクライアント画面を見ながらプログラムを編集し、実行するよう命令します。実行はサーバーで行われますので、ユーザーのコンピュータは軽い物でかまいません。しかし、クライアント・プログラムを走らせる必要があります。

じゃぁ、クライアント・プログラムはどのOSで走るのか、となるのですが、実はクライアント・プログラムはHTMLブラウザ上で走ります。ですので、jupyterのクライアントはOS非依存です。

jupyterの処理の基本単位はノートです。一つのノートはサーバ上では1つのファイルによって実現され、クライアント側ではブラウザ上の画面1枚によって表示されます。

セル

jupyterのノートはクライアント上ではセルという副単位に分割表示されます。

セルはノート上に上から下へと並びます。ユーザーはセルに一つの巨大なプログラムを入れても構いませんし、一つの巨大なプログラムを複数のセルに分割しても構いません。

実行はセル単位であり、「一つのセルだけ」「全部のセル」「選択中のセルから後ろ全部」といった指定が可能です。

セルの面白いところはその出力機能です。セルを実行した結果として画面出力が発生すると、それはセルの直後に行われます。この画面出力は、テキスト出力、成型済み数式出力、グラフ出力など多彩です。

また、セルにはpythonコードの外にマークダウン形式のテキストを書くことも可能です。これにより、技術解説を書き、プログラムを記述し、結果を埋め込むといった高度な文書を作成可能です

モジュール群

pythonを使う理由は、実際にはpython自身と言うよりも、それを取り巻く数え切れないほどのモジュール群にあります。

これらのモジュールは、数値演算、科学技術演算、科学技術用プロット機能、数式処理(!)、オーディオ信号処理、ネットワーク・アクセス、ニューラル・ネットと、多岐にわたります。実際、pythonはプログラマだけではなく、多くの研究者によってツールとして使われており、それがこの膨大なモジュール群となっています。

jupyterからはこれらのモジュールを利用できますが、たとえばプロット出力をそのままページ内に埋め込み表示するといったことが可能です。

note

インストール

jupyterは膨大なモジュールを使えるようにする環境であるため、利用するならそれらの環境を一挙にインストールする方が便利です。

一番簡単な方法はanacondaをインストールすることでしょう。anacondaはpythonやRによるデータ・サイエンス用のパッケージをまとめたプラットホームです。フリー版が存在し、しかもanacondaをインストールするだけでjutyperが使えるようになります。

私は例によってVM上のubuntuにインストールしました。インストール後、

$ jupyter notebook

と、コマンドラインからタイプすることでjupyterが起動します。jupyterはサーバーですので、表示されたURLを開くことで、jupyterのノートが開きます

まとめ

pythonは言語仕様に加えて膨大なモジュール群があるため、なかなか勉強がすすみません。こういうセットアップも使うのも手軽な処理系があれば、勉強がはかどるかもしれません。

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください