【更新】Jupyter 5 系のアップデート版の記事が別にあります。
IPythonはバージョン4.0から Project Jupyter に統合されるようになりました。JupyterはPythonだけでなく、R, Julia, Scalaからも使えるようになり、データ分析の核となるツールと言えます。40を超えるプログラミング言語から使えるだけでなく、Jupyter Notebook Viewer を介して共同作業を促したり、Apache Spark と統合することも可能です。ちょっと SciPy Stack を試してみようかな、と思って IPython Notebook を使う世代とは一線を画すものになっています。
これまではNumPyやpandasと言えばインストールが大変な印象でしたが、Jupyterは複数のDockerイメージを用意してくれていますので、比較的簡単に試すことができます。ブラウザで完結したい、という場合は Try Jupyter! のサイトですぐに試してみることも可能です。
Notebookサーバーの起動
公式のDockerイメージを使ってNotebookサーバーを起動します。基本的には jupyter/datascience-notebook が良いと思いますが、Sparkを使う場合は jupyter/all-spark-notebook か jupyter/pyspark-notebook のどちらかが良いでしょう。
イメージには多くのパッケージが予めインストールされており、4.5GBくらいあります。ダウンロードの待ち時間でインストールされているパッケージを一通り眺めてみるのが良いでしょう。
$ docker pull jupyter/datascience-notebook
$ docker images jupyter/datascience-notebook
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
jupyter/datascience-notebook latest 8e21bfc3eeba 11 hours ago 4.592 GB
8888番ポートを使ってコンテナを起動します。
$ docker run -d --name notebook -p 8888:8888 jupyter/datascience-notebook
ブラウザでアクセスすると IPython Notebook よりキレイになった感じのインターフェイスを確認できます。「New」を押してみると複数の選択肢が登場することで期待感が高まるかもしれません。
Python のノートブック
色々使えるとは言っても、既存資産の流用という観点からは Python が主流になるでしょう。
Python 3 の各種モジュールが利用できることを確認しておきます。まずはBokehを使って sin/cos カーブを描いてみます。
次に、pandasのモジュールを使ってYahoo!のAPIから日経平均を取得してみます。グラフの軸に日本語が使っても文字化けしないことも確認しておきましょう。
R のノートブック
普通にRを書くならRStudioの方が使いやすいとは思いますが、チームでノートブックを共有したりサーバーサイドでクラスタを組む可能性も視野に入れると、Jupyterの使い方に慣れておいた方が良いと言えます。また、環境によってパッケージがインストールされている・いない、あるいはインストールできる・できないという環境差異を吸収する意味でも有用でしょう。
なお、カーネルを切り替えると右上のロゴも切り替わってくれます。複数の環境を行き来する場合には重宝する機能だと思います。
データのアップロード
Jupyter Notebook になってからなのか、IPython Notebook のときからだったか分かりませんが、データファイルをアップロードすることも可能です。Docker経由で起動するとデータコンテナとリンクさせる方法に難儀する場合があるかもしれません。しかし、「Upload」ボタンを使うとローカルファイルシステムにあるデータをアップロードできます。もちろん、クライアントとサーバーが別々のマシンで動作している場合にも便利です。
アップロードしたファイルはどの言語のノートブックからでも参照できます。試しにカーネルをJuliaにして確認してみます。あまり違いが無いかもしれませんが、右上の言語表示が Julia 0.3.2 になっています。
カーネルがどの言語であってもプリントプレビューやMarkdownでのダウンロードなどが可能です。簡易レポートとして分析結果を記録しておく手段としても有用と言えそうです。
パッケージのインストール
ターミナルを起動してパッケージをインストールすることも可能です。たとえば、pip
を使って xlsxwriter をインストールしてみます。
まとめ
公式のDockerイメージを使って Jupyter Notebook サーバーを起動し、Python, R, Julia が動作することを確認しました。イメージをダウンロードするには時間がかかりますが、複数ソフトウェアのバージョン不一致に起因するトラブルもなく、非常に簡単に導入できると思います。
組織やメンバーのスキル、あるいは分析手法によって異なる実行環境とデータストレージを用意するのは骨が折れると思いますが、Jupyter に統合しておくことで管理コストを低減することができるかもしれません。出力形式もおおよそは統一されますので、記録手段としても有用そうです。