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

Line 1: Error: Invalid Blog('by Esehara' )

または私は如何にして心配するのを止めてバグを愛するようになったか

>> Zanmemo

あと何かあれは 「esehara あっと じーめーる」 か @esehara まで

Jupyter Notebook + RISE でスライド作ってトークしてきたというお話

今日の料理

f:id:nisemono_san:20160702185859j:plain

Cookdo麻婆豆腐と手作り麻婆豆腐の自炊戦争が行なわれてから十数年たつが、正直Cookdoの麻婆豆腐の味は忘れてしまった。とはいえ、あらためてCookdoで作る気にはならんなー、ということで、丸善屋の麻婆豆腐の素を手にいれて作った。

メリットとしては、素には挽肉も入っているので、挽肉を炒めるという工程、同様に量にあわせて豆板醤を混ぜあわせるといった行為をしなくてもいいという部分にある。しかし、辛口を買ってきたつもりが、意外と辛くなく、がっかりするということもある。辛めの麻婆豆腐が好きであるならば、自炊したほうがいいのかもしれないな、というのが現状の結論である。

概要

Jupyter Notebookという、ブラウザ上で使えるREPL環境がある。これを使うと、RubyやPythonのコード結果を書き残しながら操作できるという利点がある。またこのJupyter Notebookにはスライドモードというのが搭載されており、REPLの操作結果や、途中のMarkdownで書いたメモをスライドショーにすることも可能である。

しかし、このスライドモードの場合、履歴をスライドにしてくれるだけで、ライブコーディング的なプレゼンをしたい場合には向いていない。そこで、ライブコーディング的なプレゼンをしたい場合には、RISEというプラグインを追加する。

本題: YAP(achimon)Cで喋る内容をスライドにする話

ということで、YAP(achimon)Cで喋ってきた。

最近はラムダ計算とかそういうことをやりがちだったので、足が宙に受きがちなことばかり喋ることが多くなり、とある勉強会でやらかしてしまったので、ちゃんと知人にトークに付きあってもらって、フィードバックを受けとったのだけれども、「やはりちゃんと動くものを見せたほうが、トークに説得力が出るんじゃない?」という意見を受けとった。

検討した結果、「そういえばJupyter Notebookっていうものがあったよな」という風に思い至って、それを使ってみたらいい塩梅だったので、そのまま採用した。

Jupyter Notebookとは

Jupyter Notebookは、元の名前をIPython Notebookという。

元々、Pythonには、Rubyで言うところの「pry」みたいな、標準よりも拡張されたipythonというREPLが独自に開発されている。こいつにブラウザ上での実行環境を乗せたのがipython notebookというものである。このREPLは独自のファイルで保存されており、実行履歴が残り、再現性が高いため、何かしらの試験的なコードを書くのには非常に便利だ。画像にすると下のような感じだ。このブログを見ると、Gistにも乗っけられるっぽいので便利っぽい。

f:id:nisemono_san:20160704072406p:plain

ipython notebookからjupyter notebookになった正確な経緯は知らないが、このようなREPL環境を提供することについて、Pythonだけで留めておくのは勿体無いという判断からだろう。現在ではJupyter Notebookという名前で提供されている。RubyやらHaskellなんやらを使うこともできる

さて、このような便利なJupyter Notebookなのだが、さらに嬉しいことに、各行(Cell)を一ページ単位としたスライドを作成することができる。下のようなメニューから、slidemodeというのを選ぶことによって、各セルをどのようなスライドにするか指定することができる。

f:id:nisemono_san:20160704072437p:plain

普通、このスライドモードで設定されたものを元にスライドを生成する形となる。

jupyter nbconvert mynotebook.ipynb --to slides 

当然、生成されたスライドに関しては、コードは埋めこまれてしまっているために変更不可能だ。

コードの説明をプレゼンされるときに、おもむろにエディタを立ちあげて例を作るのはカッコイイな、と思ってたし、発表を聞いている側も、そういう風に挙動の違いを確認しながら見ていくと理解しやすいように思ったので、ライブでコードが変更できるものはないかなー、と探していたらRISEというのがあって、これを使うとライブなプレゼンモードになる。

元々Pythonのエコシステムによるものなので、そのあたりがわからないと、ちょっと戸惑う点はあるかもしれないけれど、使いこなせると、かなりカッコイイ。

ただ、こいつの弱点は一つだけあって、実行コードを表示するさいの文字はどうしても小さくなりがちであることと、大きな出力に関しては、スライドに収まらず、ポコーッとなってしまうので、そのあたりはちゃんとプレゼンをするときに、視聴者との距離を考えたほうがいいかもしれない。

まとめ

とにかくスライドのコードを書きかえられて、なおかつその実行結果が表示されると、プレゼンにも説得力が出るという端的な事実と「おお、スライドが動いているぞ」という圧力によってカッコよく見えるというのはある。プログラマにとって、キーボードを叩いている時間が、一番輝いているとするならば、その輝いている姿をトークやスライドに持ちこむことによって、どんどん輝いていって欲しいなあと思います。

蛇足

あ、今回発表した内容のレジュメはここに置いておきますので、御自由に閲覧ください

謝辞

トークを聞いて頂けた人、ならびに打ちあげにてご一緒した方、本当にありがとうございました。酒の勢いで、あること無いこと喋っていたような気がして、ちょっと頭がズキズキするのですが、拙いトークで楽しんで頂ければ、これ以上の幸せはないでしょう。それでは、どこかで御会いすることがあれば、またよろしくお願いします。

また、この機会を作ってくれたUzullaさんには大変感謝です。次の開催を期待しています。