Linux Mint 17.2 で IRuby と jupyter notebook(IRuby notebook)を使う

IRuby を使おうと思ったのですが、できるまでにかなり苦労したのでメモ。
環境は Linux Mint 17.2. Ruby 2.2.3.

まず、iPython を入れないといけないので、Python のインストールが必要です。僕は既に virtualenv を使って Python 3.4 をインストールしていました。
pip で jupyteriPython を入れます。

$ pip install jupyter
$ pip install ipython



次に RubyGem を入れなければなりません。入れるのは rbczmqiruby です。Bundler を使います。まず、rbczmq のために

$ sudo apt-get install libtool pkg-config build-essential autoconf automake uuid-dev

をやらないといけません。そうして Bundler で rbczmq と iruby をインストールします。

これでお終いではありませんでした。$ iruby とすると、

/home/***/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/iruby-0.2.9/lib/iruby/command.rb:78:in ``': No such file or directory - ipython (Errno::ENOENT)

と ipython が見つからないというエラーが出ます。どうも virtualenv で ipython を入れたせいのようです。なので、ipython の位置を探して、PATH を通してやります。自分の場合は /home/***/Documents/Python/python34/binに ありました。

これで

$ iruby
$ jupyter notebook

でそれぞれが立ち上がる筈です。

.ipynbファイルをGist経由で見る

jupyter で作った .ipynb ファイルを Gist 経由で公開することができます。例えば Gist にこんな風にアップロードします。
https://gist.github.com/obelisk68/a8d271a84f2bf48f8bc6e9b7b21d81cf
nbviewer でこんな風に見ることができます。
http://nbviewer.jupyter.org/gist/obelisk68/a8d271a84f2bf48f8bc6e9b7b21d81cf

じつは Docker から nbviewer を使おうと思ったのですが、どうもうまくいきませんでした。またやってみます。


※追記
わかりました。単純なことでした。端末で

$ docker pull jupyter/nbviewer

をすると nbviewer が使えるようになるので、

$ docker run -p 8080:8080 jupyter/nbviewer
[I 160509 03:28:08 app:122] Not indexing notebooks
[I 160509 03:28:08 app:142] Using in-memory cache
[I 160509 03:28:08 app:294] Listening on port 8080

として表示が停止します。ここでブラウザで http://localhost:8080 にアクセスしてやると、nbviewer が立ち上がります。あとは入力窓に Gist の ID その他をいれてやれば、.ipynb ファイルを見ることができます。


なお、Ruby で jupyter notebook(IRuby notebook)を使うのは、Ruby 用の超強力なプロットライブラリ Nyaplot を利用したい人が多いのではないかと思います。僕のようにアカデミズムとは関係ない人間には高級すぎるのですが、これはすごいです。暇人は試しに Nyaplot で遊んでみて下さい。作者はリンク先のブログ主で、まだ若い日本人の方のようです。優秀ですねえ。

例えば下の URL を nbviewer で見てみて下さい。三次元図がマウスでぐりぐりなめらかに動きますよ。
https://github.com/chezou/iruby-example/blob/master/nyaplot-example.ipynb


それから、IRuby notebook を使うなら、

  • gem 'pry'
  • gem 'pry-doc'
  • gem 'awesome_print'
  • gem 'rubyvis'
  • gem 'gnuplot'
  • gem 'nyaplot'

あたりの Gem も入れておくとよいそうです。nbviewer のサイトの Ruby のところを見ると、これらの Gem を IRuby notebook で直接使う例が紹介されています。また、MathJax を使って LaTex の数式も書くことができるようですね。端末で irb を使うのに比べ、自動的に記録されますし、見栄えのよさは段違いです。nbviewer で公開もできますし。jupyter notebook は Python を使って書かれているのですが、これを Ruby でも使ってしまえるというのはおもしろい。何だか不思議な世界ですね。