Jupyterの構築
いやぁ、捗りますね。今回はJupyterをインストールしてさらにRを使える様にする所までを。
- Jupyterとは
- Jupyterのインストール
- JupyterでRを使えるようにする
- githubとgist
- terminalも使える
- magic command
- ゲストOSで起動させてホストOSで動かす
- まとめ
Jupyterとは
前の名をipythonといい、pythonのコーティングをインタラクティブに行うものだった。それだけに飽きたらなかった凄腕のハッカー達がrubyもやらせろとかRもやらせろとかその他もろもろをできるようにしたのが始まり。notebookを使用するとインタラクティブな環境だけでなく、webサービスとして立ち上げて、ブラウザ上でコーディングを可能にするアプリケーションがこのJupyterだ。
Jupyterのインストール
インストールは簡単。pipで一撃
pip install jupyter
実行も簡単
jupyter notebook
このコマンドを打つとJupyterが起動し、自動的にブラウザも起動する。デフォルトではポート8888のローカルホストへと接続するとJupyterコマンドを実行したディレクトリが見えるようになる。基本的にはpython用なのだが、後述のKernelを言語ごとに入れるとそれぞれJupyter上で使える様になる。
JupyterでRを使えるようにする
JupyterでRを使えるようにするにはIRKernelを入れる必要がある。このサイトに手順が載っているのでその通りにやれば問題ない。
libzmq3-devパッケージをaptでインストール
sudo apt install libzmq3-dev
RのIRKernelパッケージをインストール
install.packages(c('rzmq','repr','IRkernel','IRdisplay'), repos = c('http://irkernel.github.io/', getOption('repos')), type = 'source')
インストールできたら、続けてIRkernelを有効に
IRkernel::installspec()
最後のコマンドの実行後はなんとも手ごたえがないのだが、これでjupyter notebookを起動するとRが使えるようになっている。Jupyterに適用できるカーネルはほかにもrubyとかperlとかscalaとか色々ある。下記リンクでたくさん紹介されているので使いたいものがあれば。
githubとgist
githubにファイルをアップするとjupyterの結果がそのまま表示される。まぁJupyterで作られるファイルはただのJSONだからね、できちゃうよね。ちなみにgistでも同じように表示される。gistに置いておけばこんな感じでブログに貼り付けることもできちゃう。Rのggplotにしろpythonのmatplotlibにしろ、ソースコードからプロットされた画像とかは勝手に描画してくれるのでアップロードも必要なくなるのがいい。
jupyterを普段動かすディレクトリをgithubでのリポジトリとして管理しておく使い方とかがいいかもしれない。
terminalも使える
なんとterminalも使える。画面端のnewを押すとterminalが出てくるので、それを押すとブラウザ内にterminalが現れる。これが便利すぎて濡れた。
magic command
jupyterは基本的にはその言語のソースを書いていくだけなのだが、ちょっと別の言語で書きたいとか、bashしたいとか色々できるコマンドがmagic commandだ。前項のterminalの存在に気付く前はmagic commandを使ってbashしていた。pythonやりながらRをやったりとかあれこれできる。magic commandはいろいろあるので下記リンクを参照。
マジックコマンドのリンク
Built-in magic commands — IPython 3.2.1 documentation
ゲストOSで起動させてホストOSで動かす
UbuntuをVMで動かしてJupyterを起動してる方々向けに。VMといってもVirtualBox限定ですが、おそらくほかのVMソフトでも同じことができるかと。
ネットワークの設定 → NAT → ポートフォワーディング
ポートフォワードの設定。特定のポートをゲストOSのポートにフォワードする
んで、Jupyterの実行時にオプションを付ける。
jupyter notebook --ip=0.0.0.0
こんな感じで設定しておけばホストOS側のブラウザからJupyterを使える。もちろん演算はゲストOS側となりますが(VMなので結局はホスト側)ですが、描画とかはホスト側のマシンパワーを余すことなく使えるようにになる。
まとめ
いいですねjupyter notebook。pythonでデータの前処理を行ってRで分析、そしてmarkdownで結果のレポートをするとかバッチ処理的な事も行うハイブリッドな実行環境を作ることも可能になる気がする。しかもPDFとしてダウンロードする機能が標準であるので提出資料を作るのにもよさげです。