IPython 3.0.0-dev、IPython Notebookで"LIVE"なHTMLプレゼンテーション

筆者の環境：Ubuntu 14.04、Python 2.7.6

SciPy2014でIPythonの開発の進捗が発表されており、特に面白かったのはNotebookの機能追加です。

- [YouTube - IPython Revealjs Attacks Again, But Now It Is Alive | SciPy 2014 | Damián Avila](https://www.youtube.com/watch?v=sZBKruEh0jI)
- [YouTube - live reveal extension ](https://www.youtube.com/watch?v=Pc-1FS0l2vg)

今までのIPython Notebookでも、HTML形式にしてから[Reveal.js](http://lab.hakim.se/reveal-js/)([:git](https://github.com/hakimel/reveal.js/))の力を借りてスライドショーを表示することができていましたが、現在開発されているのは、動画を見ていただくと分かるとおり、"Alive"つまり、静的なHTMLではなく、その場でCellの実行を行いながらスライドを進行することができるようになっています（ただし現在は拡張機能として存在）。また、IPython Notebookの機能としてtabキーでのメソッドの補完(jediに近い)、オートコンプリートなどが使えるようになっています。

ということで、dev版を入れる手順などをまとめます。

#IPython 3.0.0-devをローカルにインストール

普通こういうことするときはvertualenvとか使うのが賢いでしょうが、IPython自体あまり今まで使っていなくて、でもスライドショーにだけは興味がありました。ただ、Cellの実行ができないというのを知って、魅力を感じていなかったのです。そこに冒頭の動画を見て、じゃあちょっと触ってみようと思った次第です。なので、めんどくさいことは考えず、ローカルにインストールして使うようにしました。

##インストール方法
参考にしたのはここ

- [How to install the development version of IPython Qtconsole and Notebook in Ubuntu | Aaron Meurer's SymPy Blog:](http://asmeurersympy.wordpress.com/2012/06/14/how-to-install-the-development-version-of-ipython-qtconsole-and-notebook-in-ubuntu/)
- [Quickstart - Installing the development version — IPython 2.2.0 documentation:](http://ipython.org/ipython-doc/stable/install/install.html#installing-the-development-version)


IPythonは既にインストールしていたので、開発版を[GitHub](https://github.com/ipython/ipython)からcloneしてきて、setup.pyでやってみよ、というものです。

```bash
# First install git, if you don't already have it
sudo apt-get install git
# Then, clone the IPython repo, if you haven't already.
git clone git://github.com/ipython/ipython.git
cd ipython
# Now just install IPython with apt, then uninstall it.  The dependencies will remain
sudo apt-get install ipython-notebook ipython-qtconsole
sudo apt-get remove ipython-notebook ipython-qtconsole ipython
# Now install the IPython git version in such a way that will keep up to date when you pull
sudo python setup.py develop
```

コメントには依存関係は保持されるから大丈夫！とか書いてありますが、なんだかうまく行きませんでした(バージョンが古いよ！と言われたり、サーバーは立ち上がるけどページは表示できなかったり)。前者の場合、エラーメッセージや公式の情報を頼りにして

```bash
sudo pip install --upgrade jinja
sudo pip install --upgrade json
```

でアップグレードすれば解決しました。後者は確かjinja2は新たにインストールしないといけないとかいうのがありました。([python - How to install the latest IPython notebook in Ubuntu 12.04? - Ask Ubuntu:](http://askubuntu.com/questions/390457/how-to-install-the-latest-ipython-notebook-in-ubuntu-12-04))

正直何が効いてるのかよく分かっていないのですが、

```bash
python setupegg.py develop
```

```bash
pip install -e ".[notebook]" --user
```

```bash
git submodule update
python setup.py submodule
```
 なんかは試す価値はあると思います。

ここまで読んでいただいて分かるように、かなり場当たり的にやってしまって、記事としては信頼性は低いかもしれません。公式の情報などもきちんと見て頂いて、自己責任でおねがいします。

##いや、IPythonの安定版の最新が欲しいんだけど・・という方

Ubuntuでは、aptなどで入れるとIPythonのバージョンは最新版より低くなっています。
(Ubuntu 14.04では、安定版のIPython 1.2.1-2 [“ipython” package : Ubuntu:](https://launchpad.net/ubuntu/+source/ipython))
これを最新の安定版にするには、pipで

```bash
sudo pip install --upgrade ipython
```

とすれば、最新版のIPython 2.2にアップグレードできます。

#拡張機能live_revealのインストール

開発版がインストールできたら、
[https://github.com/damianavila/live_reveal](https://github.com/damianavila/live_reveal)
からクローンしてきてsetup.pyでインストールすると、おそらく拡張機能が使えるようになると思います。今回開発版をインストールしたのはこの機能を使ってみたいと思ったからです。それほどインパクトのある内容です。使い方はREADMEを読むといいと思います（丸投げ）。

#実際に使ってみた
実際に使ってみて、Intaractive Widgetの使い心地に感動し、オートコンプリートなど入力しやすさの改善に気づき、これなら普段のプロトタイプの作成には使えるかもと思いましたね。キーボードショートカットも多数用意してあって、vimにも近い操作感になっていると思います。

![Selection_007.png](https://qiita-image-store.s3.amazonaws.com/0/54869/497a78de-d04c-4218-9bd9-30711b6576f3.png)


##スライドを作って、その場でCellの実行をしてみた
スライドのデモを作ってみたので、カスみたいな内容ですが動画で公開しました。見てみてください。nbviewerで、どんなふうに書いてるか見れます。
- [IPython 3.0.0-dev "Alive" Slide Demo - YouTube:](http://youtu.be/44FKQ3hBRp8)
- [IPythonを使って、HTMLベースのスライドを作ってみる - nbviewer.ipython.org:](http://nbviewer.ipython.org/gist/ssh0/930502b6bfced65e135d)

#まとめ
まだ全然機能を使いこなせていないですが、設定などいじることでさらにIPythonの活用方法がわかってくるのではないかと思います。また、HTMLスライドに関しては、超クールなテーマはそこら中に落ちているので、これも活用していけば楽しくスライド作成ができそうです。markdownで書けるし、いちいち図の貼付けやら何やら考えなくても良い！そしてその場でパラメータを変えて表示させることができる！素晴らしいですよね。PowerPoint嫌いで、発表のスライドはLaTeXで書くタイプの僕みたいな人間なら、この気持ちよさは分かっていただけると思います。

ぜひIPython、IPython Notebookを流行らせていきましょう。
(学会でもIPython Notebookが使われる時代が来ればいいなぁ・・・)