読者です 読者をやめる 読者になる 読者になる

Jupyter(IPython Notebook)を使い始めた

Programming/Python
ダンプログラミング言語には、対話型インタープリター=REPLというのがついている。自分が使った中ではPythonRubyにはもちろんついている。Javascriptはブラウザのコンソールが実質REPLになる。(nodeもか)コンパイルが必要なはずのScalaにもある。
テキスト処理系のタスクなんかだと、少しずつREPLでテストしながら開発してくのがとても便利である。

で、今「自然言語処理100本ノック」をやっているんだけど、第三章「正規表現」がかなりきつい。このレベルだと正直REPLでは不足するようになってきた。
そういえば昔クックパッドインターンに行っている時にIPython Notebookって使ったことあったなぁ、と思い自分の環境にも入れてみた。


そしたらこれが今までなんで使わなかったんだと後悔するほど便利。これは革命。



まぁ見りゃわかるけど、プログラムを入力するテキストボックスがあって、その場で実行可能。入力に補完もきく。実行もその場でできて、結果はすぐ下に表示される。(matplotlibなどで作った図も出せる)しかもそのまま保存もできる。
WEBサービスの「オンラインプログラム実行環境」とは違ってインストールしてるライブラリも使えるしローカルファイルのアクセスも可能。完全にREPLを置き換えられる。
ローカルでWEBアプリを動かしてるようなもんなので、表示量が増えると動作が遅いというのはあるが、デメリットはそれくらい。

REPLの場合、結果や入力内容がどんどん流れていってしまうのでどの時点でどんな結果が出ているかを把握しておくのが難しい。
その点Jupyterを使えばとりあえず今動いているやつを残しておいて、別のセルでリファクタリングする、機能を追加する等可能。もしなんだかわかんなくなってきてしまったら元のコードのあるセルに戻ればいいだけ。
行単位で入力していく必要があるREPLよりも編集しやすいし、にコピペするとインデントが崩れる問題とも無縁に。

Jupyterのおかげで正規表現との戦いに打ち勝つことができました。