TL; DR
Gemfile
gem 'jupyter_on_rails'
gem 'ffi-rzmq'
すると
rake jupyter:notebook
ができて
rails が自動ロードされるカーネルが設定された jupyter が開けるようになる。
詳細
モチベーション
jupyter で rails 読み込んで、もろもろの分析(Daru とか)を行うようなタスクをやっていると、どうも jupyter が rails に乗っかっていないような気がするので、それをできる限り自動化したいと思った。
Jupyter Notebook 上で rails c を動かす のように、 jupyter notebook 上に rails をロードする設定を書いてやればいいといえばいいのだが、
- DRY じゃない。。
- ユーザーグローバルに存在する iruby カーネルに気を遣う必要がある
のはいやだと思った。
実装方針
Rails なのだから、すべてプロジェクトディレクトリで完結して、 ruby と python さえあればだいたいよろしく動いてくれるようにする。そのために:
- jupyter は Pipfile で管理されてればそれを使う
- jupyter の設定 (iruby の設定) は rails プロジェクトルートの中で行う
- ruby で完結できるものは rake タスクで自動的に一発で
- Rails を自動読み込みしてくれる jupyter カーネル作る
できあがったものがこちら
利用法
前提条件
-
iruby
とffi-rzmq
の gem が通るように環境を整える (それぞれのページをご参照ください) -
jupyter
コマンドが利用できる。- 個人的なおすすめは、プロジェクトルート直下の Pipfile に対して
pipenv install jupyter
- 個人的なおすすめは、プロジェクトルート直下の Pipfile に対して
使い方 -> TL; DR 参照
注意点として、 iruby は session に使う gem を選択できるようになっているので、それにならい
ffi-rzmq
cztop
のいずれかをアプリケーションの Gemfile に記述することを想定してます。
どちらも存在しないと、 IRuby::Kernel::Session
がないよ!みたいなエラーがでます。
所感
spring は魔法。