「集合知プログラミング」がなぜこれほど賛美されているのだろうか?

オライリーから出ている「集合知プログラミング」は2007年8月に出版された"Programming Collective Intelligence"の訳本です。私もAmazonで目次をみて、これはいい本であろうと思い、この洋書を結構早い段階で手に入れました。当時私はPythonを触ったことがなかったのですが、この分野はある程度詳しいつもりだったので、Python初学者というスタンスでまずは斜め読みをしました。確かに良さそうな本だと思いました。しかし、Python初心者として実際に本に沿ってコーディングを始めるとそのコードや実行例のひどさに愕然としてしまいました(まぁそんなに大袈裟にいうことでもないでしょうが・・・)。

本の通りにコーディングをしても、実際に同じような結果が得られません。すぐに誤植と分かるものも多いので、計算アルゴリズムの間違いは直せたが、Pythonの使い方の部分での間違いには苦労させられました。また、動的に日々変わるページの解析ならまだしも、静的な数値の計算も本の通りに再現できない。もしくは、本の通りにコーディング・実行しても、エラーになってしまう。悔しいので頑張って本家の正誤表(http://oreilly.com/catalog/9780596529321/errata/)などを見ながら、コーディングしていった。ある意味Pythonの勉強になったが、ちょっと学部生向けの教科書には出来ないと思いました。正誤表もUnconfirmed error reports and comments from readersのみが充実しているので、自分で理解が出来るコメントを取捨選択して組み上げていった記憶があります。その時は2章までで挫折して、残りの章は読み物として読みました。読み物としては確かにざっと見た感じ良いのだが、肝心のアルゴリズム部分は説明の詳細は省かれているところが多くて、ライブラリの使い方のみが書かれていたりする。サポートベクターマシンが使いたいと思い9章を読んでもlibsvmの使い方が書かれているだけでした。ちょっとだけショックでした。

そして、今年7月に訳本が出たのです。当然あまり期待していなかったのですが、いろんなところのBLOGで褒め称えているので、興味が出てきました。きっと誤植もなくなり、色々と改善されたのだと思い学部生の教科書にしようと購入しました。・・・ショックでした。何も変わっていないのです。なぜこの本が絶賛されているのだろう?と不思議でしかたありませんでした。本家のコメントを見てもやはり評価が分かれています(http://oreilly.com/catalog/9780596529321/)。

僕が見たところ、日本のBLOGでは割と絶賛しているものが多いですね。で、なぜこういうことが起きているのかを考えたのですが、この本の対象者には3パターンくらいあるかなぁと思いました。

まず、プログラミング経験者(Python経験者含む)でいろんな集合知プログラミングを経験したいと思っている人。この場合は、プログラミング言語をある程度扱えるので(特にPython経験者なら)、アルゴリズムが分かれば実装できます。つまり、手っ取り早くアルゴリズムを身につけるための学習本として購入する人。しかし、肝心の計算アルゴリズムに関しては特定言語のライブラリに依存して説明していたりするので、完全にこの本だけで集合知プログラミングが身につく訳ではない。しかし他の言語で書いている人たちは、アルゴリズムにも長けている人が割合として多いので、楽しそうにプログラミングをしているBLOGをみます。こういう形ならこれで全然ありだと思います。後半の章は特定のライブラリに依存している書き方なので、大変そうですが・・・。

次に、単純にPython触ってみたいなぁと思っている人。この中にはアルゴリズムに関する知識を持っていると誤植に気づくので直せる。しかし彼らにしても、Pythonの型や文法などの初歩的な所が分かっていたとしても、それ以外の部分でどうしてもつまづいてしまう。なんの説明なしにいきなりreload()を使いはじめたときは一瞬面を喰らいました。コードの主要部分以外は説明がないのは、prefaceにも書いてある通り、同じくオライリーから出ている「初めてのPython」を通読している事を前提としているので、しょうがないのかもしれないです。ですが、それが結果としてハードルを上げてしまいましたね。中級者以上はまだしも初級者にはちょこっとだけ辛い形になっているような気がします。

最後に、プログラミングもアルゴリズムも分からない初学者が、魅力的なテーマを沢山扱っている本だから、手っ取り早く教科書として買うパターン。まぁ、挫折するでしょう。プログラムのミスなのか、計算アルゴリズムのほうが間違っているのかの判断出来ません。この人達を対象にするのなら、ライブラリの使い方のみに言及して、手っ取り早く結果が出せることに重視した方がよかったかと思います。各アルゴリズムの強力さを知って興味を持ったら、それぞれのテーマに関してのみを扱う書籍へと向かわせればいいのですから。

とにかく僕はどの3パターンの人でも、ある程度褒めることはあっても絶賛はないだろう、とそう思いました。にもかかわらずこの本に対する賛美が多いのはきっと、中身の斜め読みと目次の豪華さに目がいってしまい、これはいいと思ってしまった第4のパターンの人たちがほめている結果だと思います。

よく書評をされる方を見かけますが、本当に通読しているのか疑問です。それを鵜呑みにするほうも責任があるとは思いますが、書評はあまり信用せずに参考程度にとどめるのがいいかなぁと思ってしまいました。出来ることなら書評が沢山集まったポータルサイトか何かがあればまだ判断するのに丁度いいのですが、少なくとも自分の手に取って見ないとやっぱり分からない事はとても多いのです。まる。折角なので日記の最後のほうに個人的な正誤表を載せました。