よちよち.rb の冬休みのシュクダイとして、「何か読んで読書感想文を書こう!」という企画があったのでのっかりました。といっても、特に読もうと思っていた本があるわけではなかったので、企画段階で課題図書として案のあった「コードの未来」を読むことにしました。
ぶっちゃけ、読む前は、そのタイトルや、雑誌の連載をまとめたものということから、軽い感じで読めるコラムが沢山あるような本を想像していました。なので、読み進めていて、ちょっと読むのに時間がかかりそうなところ (ガッツリとコードが出てくるところとか) が出てきたら飛ばしちゃったりしていたんですが、そうすると途中からほとんど飛ばすことになってしまって、「なるほど、これはサクっと読める本じゃなかったんだな…」と、勘違いしていた認識を改めて、ちゃんと腰を据えて読むことにしました。
所感
最近 Ruby を集中して触るようになっていたので、まつもとゆきひろ氏の書いた、この「コードの未来」という本にはもともと興味がありました。しかし、出版されてから少し時間がたっている (連載時からすると更に) ことがあって、読んでみることを躊躇していました。結果としてはそれはほとんど杞憂で、今読んでも十分に面白く、そして勉強になる本でした。
その理由は、
- トレンドの移り変わりは早いが、大きな流れは数年の単位では大して変わらない
- 簡単な内容ではないが、テーマの選択が適切で、そこに Matz の主観が入ることで読者も入り込みやすくなっている
- そもそも、当時からしたらごく近い「未来」である現在でも、個人的に理解していない、知らないことが多かった
- 文章が読みやすく余計なストレスがない!
などが挙げられると思います。
しかし、Rubyist としてはそれ以上に価値がある本です。本書では様々な技術が紹介されますが、その各所で Ruby が引き合いに出されます。サンプルコードや疑似コードも Ruby で書かれることが多いです。著者が Ruby の開発者だから当然と言えば当然ですが、Ruby に興味がない人からするとウザいくらいに Ruby が登場してきます。しかし、Rubyist にとってはこのことは非常に嬉しいことです。Ruby をベースに持ちながら、これほど幅広いネタに触れられる本は他には存在しないのではないでしょうか。
一方、連載モノという性質上しかたないとは思いますが、まとめて読むと冗長な箇所も多いです。例えば、key-value ストアや MapReduce などの重要な登場人物は何度も出てきますが、そのたびに毎回説明が入ります。また、全体的に親切な内容ではありながら、書いてある内容がホントの初心者にはちょっとキツめなところも多いことから、決して誰にでも薦められる本ではないです。技術者向けの本なので当然のことだとも思いますが、基本情報技術者程度の前知識がないとサッパリ内容が頭に入ってこないところも多いかもしれません。例えば、アルゴリズムの「O (オーダ)」とか、B木とか、その辺は当たり前の知識として要求されます。
特に印象に残ったポイント
ここからは、個人的に特に印象に残ったポイントについて、いくつか書いていこうと思います。
ムーアの法則
本書で何度も登場する、このムーアの法則。ホントに何度も繰り返し登場します。「今」の技術をテーマとしながらも、視点は過去から未来にかけての流れを俯瞰するような本書において、このムーアの法則がそれだけ重要だということでしょう。ちょうどこの本を読む前に Qiita で見ていた FPGA の記事 で、「マイクロソフトは、ムーアの法則はもう終わってると考えている」というのを目にして、結構なショックを受けていました。本書の中でも、すでにトランジスタのサイズが原子レベルになっており、集積度の限界に近づいていることが語られています。
Go
Go の簡単な紹介です。もちろん、ほんの触りだけではありますが、実際のサンプルプログラムも載っており、Go の特徴をさらっと眺められるツアーものとして楽しめます。私にとっては、最近 Go が色々なところで使われているにも関わらず、コードを一度もちゃんと見たことがなかったので単純に面白かった、というのが大きかったです。Goroutine には興味が湧きますね。ただ、今のところ Go を勉強するつもりはないので、Goroutine に似ているという Erlang の Actor 機能を…って、いや、Erlang はちょっとキツいかな…ということで、Elixir で Actor を触ってみようかな、という気分になりました。
Dart
Dart も Go と同じで、触ったことがなかったので単純に楽しく読めました。JavaScript があまり好きでない、いや、ぶっちゃけマジで好きじゃない私にとって、AltJS に留まらずそれ以上のものを作ろうとする Google の意気込みは非常に頼もしいものです (一方で、ブレンダン・アイクはもはや老害にしか感じなくて困る)。まだあまりメジャーとは言えないこの Dart ですが、2014年10月の TIOBE Index では 17位を記録し、16位の Ruby に迫らんばかりの勢いでした。新しい言語の hype さとかが順位に貢献しているのもあるだろうけど、なかなかすごいです。いや、というかむしろ、Ruby がもっとがんばって欲しいという方が大事…まぁ、これの順位はそんなにマジに受け取るようなものだとは思ってませんが、やっぱりちょっと寂しくもあります。
UNIX パイプライン
マルチコア時代のプログラミングとして、UNIX のストリームパイプラインを有効に使ったプログラミングが紹介されています。これが一番印象的でした。理由はお分かりでしょう。つい先日、Matz の新言語「streem」が鮮烈にデビューしたばかりですからね!
おわりに
先にも書いた通り、Rubyist が読んでこそ最大の価値が引き出せる本だと思います。タイトルから感じる印象に反して、今でも興味深く読める本だとは思いますが、さすがにあまり時間が経ち過ぎると陳腐化してしまうのは避けられないので、興味のある人は是非今のうちに読んでみてください。