Edited at

Rails と jupyter の連携をとても簡単にする railtie の gem を書いた


TL; DR


Gemfile

gem 'jupyter_on_rails'

gem 'ffi-rzmq'

すると

rake jupyter:notebook

ができて

the_screenshot.png

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 カーネル作る


できあがったものがこちら

https://github.com/Yuki-Inoue/jupyter_on_rails


利用法


前提条件



  • irubyffi-rzmq の gem が通るように環境を整える (それぞれのページをご参照ください)


  • jupyter コマンドが利用できる。


    • 個人的なおすすめは、プロジェクトルート直下の Pipfile に対して pipenv install jupyter




使い方 -> TL; DR 参照

注意点として、 iruby は session に使う gem を選択できるようになっているので、それにならい


  • ffi-rzmq

  • cztop

のいずれかをアプリケーションの Gemfile に記述することを想定してます。

どちらも存在しないと、 IRuby::Kernel::Session がないよ!みたいなエラーがでます。


所感

spring は魔法。