Processingの定番な教科書: The Nature of Code

image

絶対に誰にでもオススメできるProcessingの教科書

教室のレッスン準備で、久しぶりにDaniel Shiffman先生の『The Nature of Code』を読んでいます。僕がProcessingを覚える時に一番助けられた本、自信を持ってどなたにでもオススメできる教科書です。改めて全体に目を通したのですが、やはりとても丁寧で分かりやすいテキスト、特に本全体のコンセプトがはっきりしていて、初めのステップからラストに至るまで、きちんと筋の通ったストーリーのある教科書だと思います。今日は少しだけこの本の紹介を書いてみたいと思います。


シフマン先生はニューヨーク大学の先生なのですが、昔から授業のノートを全部ネットで公開されていました。僕が初めて『The Nature of Code』を読んだのはシフマン先生のホームページ上で、たぶん8–9年くらい前だったと思います。当時は章立てはできていても中身がまだ埋まっていない状態でした。それでも少ない例から、例えばたくさんのパーティクルをJavaのArrayListで効率よくコントロールする方法とか、こういうシミュレーションはこういうコードで実装すればいいんだ、という実践的な方法が学べるとてもいいサイトでした。それがもう全部完成しているのですから、今から学ぶ方がとても羨ましいです(^^)

この『The Nature of Code』、本としても出版されている翻訳版もあるのですが、同じ内容がホームページでもやはり公開されていて無料で読むことができます。しかもホームページ上では教科書の作例がアニメーションで確かめることができます。またそれとは別にAmazonでも買えるし、e-bookではこちらの言い値(10ドル以上です)で買うこともできます。なぜこんなにヴァージョンが豊富かというと、これは本の最初の部分でおっしゃっていることなのですが、シフマン先生は以前に教科書を出版された時に、執筆以外のことを出版エージェンシー任せにしていた為に、とても法外な価格の本になってしまい、そのことをとても後悔されたそうです。そして、もっと安い価格で販売できて、かつ著者側も読者側も得するような出版ができないのか模索した結果、今のかたちに行き着いたそうです。こういうところが大学の先生の鏡という感じで僕は好きです。

さらに面白いのは、この本、現在も日々進化中、最新版も全てGitHubで公開されています。GitHubなので当然読者側から色々な情報、ここはこうしたほうがもっと良いのではとか、ここは間違っているのではないかとか、ダイレクトなフィードバックを送ることができます。本が日々進化して、読者もその進化に参加していくので、きちんとした責任者のいるwikiという感じかもしれません。本の内容だけでなく、作り方も面白いと思います。

小さなモノが知性を持った生き物に成長するまでをプログラミングする

Planks ( studio otoro )  ©️studio otoro

Planks ( studio otoro )
©️studio otoro

さて肝心の内容のことです。一言でいうと、「小さなモノが知性を持った生き物に成長するまでをプログラミングする」、そんなストーリーでできている本です。

最初は○を動かすことから始まります。○に位置とか速さとか加速度とか、運動に関わるいろんな変数を与えて、○の振る舞いを関数で定義しながら、○をぐるんぐるんと自由に動かしていきます。実はこの『The Nature of Code』、オブジェクトとかクラスとか、オブジェクト指向の基礎は分かっていることが前提になっています。ただし継承とかポリモルフィズムなど、オブジェクト指向「らしい」考え方は本の中で丁寧に説明があるので、変数と関数を使ったクラスの作り方や、その実体化(インスタンス化)ぐらいを知っていれば、心配なく飛び込んでしまえるようにできています。

だんだん○を自由に動かせるようになると、今度はたくさんの○を使って○の「群れ」を作っていきます。映画やゲーム、またジェネラティヴ・アートでも良く使われる「フロッキング」です。当サロンのホームページでも使っている表現ですが、なぜかずーっと見ていても飽きないんです、このフロッキング。これが自由に扱えるようになるととても楽しくなります。ここあたりがこの本の前半のクライマックスかなと思います。

後半になると、より本格的に、たくさんのモノが関わりあってできてくる世界のシミュレーションに触れていくことになります。まず「複雑系」のシミュレーションの定番とも言える、セルラー・オートマータフラクタル。その次が、コンピュータで生物の進化を模倣する遺伝的アルゴリズム、そして最後が特に最近は、とうとうA.I.が囲碁で人間に勝ってしまったなど、一般メディアでも取り上げられることの多いマシン・ラーニングの基礎であるニューラル・ネットワーク。こんな感じで、最初の○から始まって、気づいて見れば現代の最先端の一端まで到着するので、プログラミング初心者がシミュレーションの世界について概観するにはとても良い構成だと思います。

この本のもう1つ良いと思うところは、各単元ごとに宿題と言えば良いのか課題と言えば良いのか、読者にこういうプロジェクトを作って見たら面白いんじゃないか、というコーナーがあるのですが、それを本を通してやり切ると、たくさんの○が群れて生きているひとつの架空の世界が作れてしまうところです。この本のサブ・テーマはおそらく、たくさんのモノが関わりあってできている世界のシミュレーションと言えるかなと思います。モノが例えば生き物であれば自然界のシミュレーションになるし、モノがデータであればいわゆる「ビッグ・データ」の世界にもなるので、大げさに言えば僕たちの世界をコンピュータで見る力の一端を与えてくれる本とも言えるのかなと思います。

さらにこの本の良いところは、作例がモノクロでミニマルに作られているので、それを元にして読者が自由に発想を展開していけるところだと思います。先日、webを散策していましたら、東京のstudio otoroさんのとてもキュートな作品に出会いました(上図参照)。説明を読ませて頂くと、『The Nature of Code』で与えられている課題を発展させていったそうなのです。センスの良いデザイナーの方が『The Nature of Code』を読むとここまで行けるんだなぁということが良くわかります。ぜひ訪れて見てください、僕は、ずーっと眺めていたい感じにいつもなります(トップページとそれからスクロール・ダウンしたところにある『planks』という作品です)。


そんな感じで、processingを始められた方だけでなく、他のプログラミング言語を学んでいらっしゃる方であっても、シミュレーションや、たくさんのオブジェクトがビュンビュン動くビジュアライゼーションに興味がある方に絶対オススメの『The Nature of Code』の紹介でした。

ではでは〜。