前回のあらすじ:
「ポケットリファレンス」と呼ぶには分量の多かった『デスクトップリファレンス』。英語版への翻訳が進んだが、分量を倍に増やして『in a Nutshell』になることに。死にそうな思いで加筆をし、無事出版されるも、期待したほどの売れ行きをあげることはできなかった。フランス語版とロシア語版の計画は、フランス語版のみが形となる。
驚きの共著者が登場『The Ruby Programming Language』
それで『Ruby in a Nutshell』の後、そのまま長らくなかったことになっている感じだったのですが、ある日、2007年だったと思いますけれども、オライリーの編集者から久しぶりにメールが来てですね、「in a Nutshellの新しい本を作りたいんだ」と。Rubyも大分広まったし(今の)「in a Nutshell」は薄いからと。でも「お前が書くのは無理だろうから」って、分かってらっしゃる。
で、ですね、「共著者を用意するから」という風に言われて、まあ、僕が書けないのは分かっているので、「これをベースに誰か書いてくれればそれに越したことはないけれど」と思っていた。次のメールが来て「(共著者を)見つけて来たから。David Flanagan」。聞いたことのある名前だなあって。
本のオビにも書いてありますけれど『JavaScript』を書いた人で、まさかRubyの方に来ているとは思わなかったので、「えーっ、どういうこと?」とすごいびっくりしましたね。そのあとはガンガン仕事を進めて、僕が何もしないうちに本が出来上がった。
だいたい、本を書いたり仕様書を書いたりドキュメントをすると間違いを見つけるものですけれど、彼もいっぱい間違いを見つけて「ここおかしいんじゃない?」というメールがいっぱい来ました。「あ、いや、仰せの通りです」と言いながらいっぱいバグを直しました。
あと僕が、ruby-core MLで配列クラスに順列と組み合わせのメソッド、Array#combinationとArray#permutationというメソッドを、僕、ああいう系組み合わせ系が弱いので、誰か作ってくれないかなあとぼそっと言ったら、David Flanaganが「よし分かった」とパッチを持ってきて1、ちょっと手直しして取り込みました。Flanaganがメソッド2つを実装しています。ドキュメント付きで。
そんなこんなで出たのが、この本『The Ruby Programming Language』です。2008年の、この本も1月なんですね。2007年の11月にNorth CarolinaでやったRuby Conference 2007にオライリーの、僕がメールしていたのとは他の編集者がきて、印刷したドラフトを僕に手渡して「これ、Davidから預かってきたから」と。それで「これで俺の仕事は終わった」と言って帰って行きました。そのときに卜部君が一緒にいて、帰りの飛行機が一緒だったんですけれど、これ多いなあと言いながら渡して見てもらった。実は原著のときから関わってくれていたわけです。
『The Ruby Programming Language』
これはそれなりに評判がよくて、具体的な数は聞いてないんですけれど、部数もそれなりに出ているらしいです。今度はヤギではなくて、ハチドリですね。ようやく希望が通った感じ、よかったです。「Everything You Need to Know」、「Rubyについて知りたいことがあれば、この本見ればだいたい書いてある」ということらしいです。
1 ruby-core MLの以下のメールを参照。
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/12344
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/12346
David Flanaganの果敢な挑戦
Rubyのリファレンスというと、定番は前に出たピッケル本6だったのですが、ピッケル本が出た2000年ごろというのは本当にRubyが登場したばかりで、どのくらいRubyが流行るかも分からないし、もしかしたらもう2度と英語で書かれるRubyの本は出ないかもしれないという思いがあって何から何まで詰め込んである。
最初はチュートリアルから入って、Rubyという言語がどういう特質や性質を持ってるかについて書いてあるし、後半はリファレンスになっていて、最後はCRubyの実装についてまで書いてある。ここで書いとかなきゃ一生誰も書かないかもしれないという危機感があって、すごい盛りだくさんな内容。2004年に改訂したときには、日本でもRubyの本はたくさん出ていたのだけれど、構成そのものは踏襲していたのね。
Flanaganは、もともとリファレンス系の書籍が得意な人なので、総花的なものではなく、リファレンスに特化した本がRubyにも必要であると強く感じていて、ゆるやかにK&R;の構成をまねしているという。そういわれるとそう。
ピッケルほど盛りだくさんではなくて、どちらかというと、斜めに読んで勉強して、リファレンスとして使いましょうという本です。『初めての~』2とか、『わかる~』のようなチュートリアルとは違う感じ。まさに『JavaScript』なんかと似たようなセンですね。
この本(『プログラミング言語Ruby』)について、(表紙に)斜めの黒い線で「Covers Ruby 1.8 and 1.9」って書いてあるんですが、この本の出版されたのは、1.9.0が出た直後なので、タイミングとして果敢な挑戦なんですね。このときDavidに「1.9はタイミングが悪いんじゃない?」って言ったんですけどね、「いや、俺はやる」と言って、たいへん勇気のある行動でした。1.8と1.9ってみかけはあまり変わっていないんだけど、細かいところでエライ変わっている。
そういうことがあるにもかかわらず、果敢にがんばったのがこの本の最大の特徴です。ちょうど1.8と1.9の間の時期に、1.8のことも書くし、1.9のことも書くという。普通の人が書いたら「1.8ではこうだけど、1.9ではこう~」とわけの分からない本になっちゃうと思うんですけれど、この本はそうでもない。David Flanaganすごいですね。
この本における私の貢献は…ほとんどない。元になった『デスクトップリファレンス』は僕が書いて、翻訳したものに書き足しているんですけれど、ただ新しい部分、というかほぼ原形をとどめていないので、ほとんどの部分をDavidが書いていて、実は何を書いたかというと、何だろう? イントロダクションに「Matzはこう言った」ってところがありますけれど3、「こう言った」というのは僕書きました(笑)。これは当たり前?
直接描いたのはそこで、あとはチェックして「1.9はこうなんだよね」ってメールのやり取りをいっぱいしたんですけど、文章的には99.9%くらい彼が書いていて、僕はスーパーバイザー的な関わりで、ここに名前を載せているのが大分おこがましい感じなんです。
逆にRubyについては僕が99.9%くらいの貢献度で、Davidは2メソッドと割合は逆転するんですけれど、この本に関する僕の貢献度は、まあマーケティング的には重要かもしれない。僕、前書きも書いてないんだよね、英語版。ひどいよね。翻訳版では書きました。日本語版も1月です、すごいよね。
『プログラミング言語Ruby』
「まつもとゆきひろ×David Flanagan」。『in a Nutshell』のころはピッケル本に大分負けている感じだったけど、Davidのおかげでこれなら対抗できるかなと思います。
内容も結構(幅広く)カバーしてて、1.9の新機能のうち、どのくらいをチェックしているかを、やまだあきらさんという方が書いていてくださってます4。そのページを見るとNEWSという、1.8から1.9になって、ここが変わりましたよという機能のリストがあるんですけれど、そのうちの6割くらいをカバーしている。残りの4割のうちの、たぶん半分くらいは1.8でも誰も使ってねーよっていう点。変わっても変わらなくても別にいいとか、1.8の中でも変わったんじゃないかというような点なので、カバー率という面でも結構いい線いってると思います。
逆に欠けている部分というと、1.9.1が出たのがこの本よりあとの1月30日なので対応しようがないんですけれど、そこで変更されたことがちょっとだけ抜けてるというのはあります。
(1.9.1についてのやり取りの中で)卜部先生にですね、「そこ変えるとですね、本と違うんですけど」と突っ込まれて「うーん、ゴメン」というやり取りがあったりしました。
2 『初めてのRuby』は2008年6月発行。絶賛発売中です。
/books/9784873113678/
3 1章「イントロダクション」の冒頭「MatzにとってのRuby」の引用部分。
(つづく)