自分の頭で考えてプログラミングをするための練習

結局演習の資料の準備が間に合っておらず、午前2時からひたすら作成。結一段落したのは午前7時。割と娘が静かに寝てくれていたのでよかったものの、数日前のようにずっと抱いていないと泣くようだったら危なかった。

午前中は企業の方と打ち合わせ。この日のこの時間に予定を入れた自分の首を絞めたいところだが、いずれにせよ他に時間があるわけでもないので、これはこれで受け入れるしかない(話自体はとてもおもしろく、刺激を受けたので、お話ししてよかったが)。わざわざ不便な日野までお越しいただけるのはありがたいことで、直接来てくださる方は1時間程度なら都合をつけることにしているのである。ただでさえ仕事の時間が少ないのに、移動時間を考慮すると3時間失われるので、2月までは原則として日野キャンパス以外には行かないつもり。

午後は演習資料の作成の続き。勉強会に行きたかったのだが、どうしても資料作成と印刷が終わらず、最後に少し顔を出せるだけになってしまった。仕方ないとはいえ、痛恨である……。

夕方は「分散処理実践セミナー」と題して Apache Spark の演習。Slideshare はフォントがずれることが多いのが大変残念であるが、Speakerdeck と違って見栄えの再現性を追求するのではなく、他の人がどんなスライドを公開しているのかを通知してくれたりなど、SNS 的な側面に力を入れているようで、そういうものだと思って割り切って使っている。

さて、今回の演習は、NAIST時代「自然言語処理の応用」勉強会で以下の本を輪読したのを思い出し、そのチュートリアルクリエイティブコモンズで公開されているので、それをベースに1時間の講義にしたものである(基本的に、彼の AAAI 2011 のチュートリアルを短くして日本語にしただけなので、興味ある人はオリジナルを見てほしいが)。

Data-Intensive Text Processing with MapReduce (English Edition)

Data-Intensive Text Processing with MapReduce (English Edition)

余談を挟んで話すと結局1.5時間になったが、このあたりの「MapReduceデザインパターン」的なものはあまりまとまった資料がないので、この本は参考になったものである。実習は、基本的に全員端末を持ち込んでもらったのだが、持ってきていない人が端末室の Windows でやろうとして、ポートが閉じられていて起動できないとか、そういうインストールに関するエラーが大半で、それ以外はほとんど写経(というかコピペ)で動かすことができた模様(コピペになったのは、Apache Spark のインストールが最大の問題であることが予想されたので、インストールさえ成功すれば演習はコピペで仕方ないか、と割り切ったためであり、受講生のせいではない)。

自分も大学に入学したてのころはプログラミングは本に載っているものを打ち込む、あるいはウェブに載っているものをコピペする、というのが典型的な「プログラミング」だったと思うのだが、自分で考えて意味を理解してコードを書くようになったのは、自分で C++ の教科書の演習問題(たとえば8クイーン問題みたいな?)を解いてみてからのように思う。自分が使ったのは(いまはもう絶版になっていると思われる)以下の本だったが、こういうような分厚い教科書の演習問題を一通り全部やると(そもそも解答も書き方もどこにも書いていないので)、どんな人でもそこそこ自力で書くようになると思うのだが、大学の授業で扱う演習の量では全然カバーできないよなぁ。

C++プログラミング〈Vol.1〉 (Computer Science Textbook)

C++プログラミング〈Vol.1〉 (Computer Science Textbook)

大学の授業としてなんとかしたい気もするのだが、無限に自分の担当する授業時間を増やすと研究する時間がなくなるし、年間3.5コマの中で実現できるベストな方法はなにか、まだ試行錯誤中である。(来年度は前期に2コマ講義、後期に1.5コマ演習の予定)