Jupyter の Docker イメージを使ってみる

  • 64
    いいね
  • 1
    コメント
この記事は最終更新日から1年以上が経過しています。

IPythonはバージョン4.0から Project Jupyter に統合されるようになりました。JupyterはPythonだけでなく、R, Julia, Scalaからも使えるようになり、データ分析の核となるツールと言えます。40を超えるプログラミング言語から使えるだけでなく、Jupyter Notebook Viewer を介して共同作業を促したり、Apache Spark と統合することも可能です。ちょっと SciPy Stack を試してみようかな、と思って IPython Notebook を使う世代とは一線を画すものになっています。

これまではNumPypandasと言えばインストールが大変な印象でしたが、Jupyterは複数のDockerイメージを用意してくれていますので、比較的簡単に試すことができます。ブラウザで完結したい、という場合は Try Jupyter! のサイトですぐに試してみることも可能です。

Notebookサーバーの起動

公式のDockerイメージを使ってNotebookサーバーを起動します。基本的には jupyter/datascience-notebook が良いと思いますが、Sparkを使う場合は jupyter/all-spark-notebookjupyter/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」を押してみると複数の選択肢が登場することで期待感が高まるかもしれません。

スクリーンショット 2015-09-24 21.35.10.png

Python のノートブック

色々使えるとは言っても、既存資産の流用という観点からは Python が主流になるでしょう。
Python 3 の各種モジュールが利用できることを確認しておきます。まずはBokehを使って sin/cos カーブを描いてみます。

スクリーンショット 2015-09-24 21.48.01.png

次に、pandasのモジュールを使ってYahoo!のAPIから日経平均を取得してみます。グラフの軸に日本語が使っても文字化けしないことも確認しておきましょう。

スクリーンショット 2015-09-24 21.57.36.png

R のノートブック

普通にRを書くならRStudioの方が使いやすいとは思いますが、チームでノートブックを共有したりサーバーサイドでクラスタを組む可能性も視野に入れると、Jupyterの使い方に慣れておいた方が良いと言えます。また、環境によってパッケージがインストールされている・いない、あるいはインストールできる・できないという環境差異を吸収する意味でも有用でしょう。

なお、カーネルを切り替えると右上のロゴも切り替わってくれます。複数の環境を行き来する場合には重宝する機能だと思います。

スクリーンショット 2015-09-24 22.23.46.png

データのアップロード

Jupyter Notebook になってからなのか、IPython Notebook のときからだったか分かりませんが、データファイルをアップロードすることも可能です。Docker経由で起動するとデータコンテナとリンクさせる方法に難儀する場合があるかもしれません。しかし、「Upload」ボタンを使うとローカルファイルシステムにあるデータをアップロードできます。もちろん、クライアントとサーバーが別々のマシンで動作している場合にも便利です。

スクリーンショット 2015-09-24 22.30.14.png

アップロードしたファイルはどの言語のノートブックからでも参照できます。試しにカーネルをJuliaにして確認してみます。あまり違いが無いかもしれませんが、右上の言語表示が Julia 0.3.2 になっています。

スクリーンショット 2015-09-24 22.48.20.png

カーネルがどの言語であってもプリントプレビューやMarkdownでのダウンロードなどが可能です。簡易レポートとして分析結果を記録しておく手段としても有用と言えそうです。

パッケージのインストール

ターミナルを起動してパッケージをインストールすることも可能です。たとえば、pip を使って xlsxwriter をインストールしてみます。

スクリーンショット 2015-09-24 23.11.53.png

まとめ

公式のDockerイメージを使って Jupyter Notebook サーバーを起動し、Python, R, Julia が動作することを確認しました。イメージをダウンロードするには時間がかかりますが、複数ソフトウェアのバージョン不一致に起因するトラブルもなく、非常に簡単に導入できると思います。

組織やメンバーのスキル、あるいは分析手法によって異なる実行環境とデータストレージを用意するのは骨が折れると思いますが、Jupyter に統合しておくことで管理コストを低減することができるかもしれません。出力形式もおおよそは統一されますので、記録手段としても有用そうです。