昨日は IPython について触れましたが、この IPython には Web ベースの IPython Notebook という機能があります。
これも IPython の目玉機能のひとつなのですが、ちょうどタイムリーなことにグノシーの中の人が記事を公開してるのでこちらを一読すると良いかと思います。詳細な解説はリンク先を読めばだいたい良い感じなので本機能の説明としては書くことがありませんね。
IPython Notebook の特徴
ただ筆者は普段使う環境としてはやはりターミナルから IPython を起動する方法を利用しています。いくつか理由はありますが主に以下の通りです。
- IPython Notebook はたまに動作が不安定なことがある
- C-r によるコード履歴のインクリメンタルサーチなどいくつかターミナルの強力な機能を使えない
- キーボードだけで完全に制御できるターミナルの快適さ
特に 1. は致命的で、インタラクティブシェルに打ち込んだ履歴を喪失したり、思考の中断につながったりするので、作業効率に対する影響大かと思います。
そうはいっても IPython Notebook にも出番はあります。筆者は IPython Notebook の使いどころとして以下を挙げます。
- プレゼンテーション
- グラフの描画とその細かい調整
特に最近の Python のカンファレンスでは発表者が IPython Notebook を使うという光景はポピュラーです。ウェブで対話的に操作できる UI を持っているというのは便利でしょう。
起動方法としては次のようにコマンド引数を利用します。
ipython notebook --pylab inline
ただし --pylab オプションは推奨しないという意見もありますのであわせて参考にしてください。
http://quant-econ.net/matplotlib.html
http://carreau.github.io/posts/10-No-PyLab-Thanks.ipynb.html
この画面から New Notebook をクリックすると新しいノートを作成することができます。
インラインでの画像表示
inline で plt.show() などのときに生成されるグラフを表示することができます。
こういった機能は確かに便利です。特にデータセットがどのようなグラフを生成するか、まだ見当があまり付かない段階で、視覚的に表示を確認しながら訴求力のあるプロッティングを模索したいときに便利でしょう。
ターミナルベースでの IPython によるプロッティングの試行
ただし、それがターミナルから起動した普通の IPython で出来ないかというとそんなことはありません。 plt.show() のかわりに plt.savefig("1.png") などをコードとして利用すれば良いのです。
たとえばモニターを別に用意して、そちらに gthumb などの画像ビューワーで画像を表示しておきます。こうすれば GNU/Linux の場合、計算で画像を更新するたびにそれが即座かつ自動的に新しい画像に切り替わります。こうすればターミナルベースでの IPython でも IPython Notebook と変わらない効率性を実現することができます。
まとめ
IPython Notebook について大まかに説明しました。場合によってはこれも併用すると便利でしょう。