『初めてのRuby』出版記念トークイベント に行ってきたまとめ

O'Reilly Village / オラの村: 『初めてのRuby』出版記念トークイベントのお知らせに行ってきました。
初めてのRuby の著者で、Ruby コミッタでリリースマネージャのYugui さんと、Java からRuby へ著者で、アジャイル開発で有名な角谷さんのトークショーでした。せっかくなのでメモしておきたいと思います。

初めてのRuby の位置づけ

初めてのRuby

初めてのRuby

Boot Up Yourself with Ruby の意味

本著の表紙には「Boot Up Yourself with Ruby」と書かれています。Boot とは、コンピュータの起動の意味をもち、語源は(ブーツについているつまみを)ひっぱりあげるという意味です。「Boot Up Yourself with Ruby」とはつまり、Ruby プログラマとして自分の足で立てるまでに自分をひっぱりあげるという意味。その手助けとして本著を書いたとのことでした。

自分が欲しい物を書きました

Yugui さん自身、Ruby を学んで行く上で、ドキュメントが整備されていないために苦労したと言っていました。Ruby にはリファレンスマニュアルはありますが、あれは、例えばPython のドキュメントのように、まったくの初心者が読める物ではなく、ある程度Ruby を知っていないと読めないもので初心者には向いていないと。

また、Ruby の入門本を見ても、「これはいいぞ!」というしっくりくる程のものはなかったようです。例えば、どのバージョンが安定版か書かれてない!特異メソッドについてなんかなあなあなことしか書かれてない!等々。

この本は、Yugui さんがRuby を勉強したときに、誰も教えてくれなかった、ドキュメントとして整理されてなかったものを書きまとめたとのことでした。

初めてのRuby を読んだ後にどうすればいいか

結論から言えば、「リファレンスマニュアルを読め!」です。Yugui さんも、そして角谷さんも、「リファレンスマニュアルで育った」と言っていました。これは僕としては意外な答えです!てっきり、「○○のソースを読んで育った」と言われるのかと思いました。Yugui さん曰く、Ruby で何かやるなら、リファレンスマニュアルをとにかく読め!と強く言われていました。そして、本著にもそのことが書いてあります。


「リファレンス読んで、そこに書いてあるコードを動かしてみろ!」っていうことです。


先ほど、Ruby のリファレンスは、初心者にとって読みづらいものだと書きましたが、このマニュアルは、Ruby を使えるようになった人にとっては、逆に凄い読みやすいものだそうです。この点に関して、角谷さんも深く同意していました。

つまり・・・


Ruby(他の言語でも言えますが)を使いこなせるようになりたきゃ、まずはリファレンス読むのがいいんだよ!(`・ω・´)


でも、リファレンスはRuby のこと知らないと何言ってるのか分かんないよ(つд⊂)


そこで、初めてのRuby ですよ!これ読んで、あとはリファレス読んで、自分の足で歩いて行けα(゚Д゚ )



というのが本著の位置づけ。

他に書かれていることは書いてない

本著の目的は、上に書いた通り、リファレンスを読めるようになるです、逆に言えば、それに必要なこと以外はほぼ書いてないとのこと。String やHash 等、クラスについての説明もそれは同じで、基本、「後はリファレンスに書いてある」ということです。
つまり、この本は、この本だけ読むだけでなく、その後にリファレンス読むことによって真価を発揮するってことですね。

角谷さんの「初めてのRuby はここがいい!」

ここというか、初めてのRuby について角谷さんは絶賛していらしたわけですが、聞いていて印象にのこったのは1章と8章についてでしょうか。

まず、1章はYugui 節というべき内容に、Yugui さんが考えるRuby について書かれています。実際には、「より良いPerl」、「動く疑似コード」、「ALGOL の皮をかぶったLisp」等の節がこの章にあります。

角谷さん曰く、ここがいい!ここでRuby の考え方というか、文化に触れることができる。これが、1章にあるのが素晴らしいとのことでした。確かに、本著は1章から面白すぎました!言語は文化に強く影響を受けるというのは、やはり実際の言語と同じなんですね。

そして、8章。この章は「オブジェクトとクラス」と、オブジェクト指向言語の入門書なら書いてあってあたりまえの内容ですが、他の本と違うのは、Ruby のクラスとオブジェクトについて書かれていること。例えば、特異クラスについて、Mix-in について分かりやすく書かれています。これまたいい!と角谷さん絶賛。

最後に、Ruby を学んでいく上で大切なこと

文化をみにつけろ

Ruby に限らず、プログラムを書く上で、「その言語の文化をみにつけることが大切」。そのためには、それに適したコードを読んで、修行をつみかさねていくしかなし。

リファレンス読め
どんなソース読めばいいの

tDaiary はオススメできません。あれは、歴史的、政治的面が多すぎるとのこと(笑)当時レンタルサーバーとかにデフォルトでRuby を入れるようになんとかしようという動きがあったらしく、その銀の弾丸tDiary だったとか。なので、アーキテクチャとしては必ずしもいいやりかたをとっていないとこもあるらしいです。

次にRails。これもオススメできないとのこと。Yugui さん曰く、Rails は黒魔術多すぎ。最近は改善されたが、使う必要もないところでinstance_eval とかmodule_eval とか使っていて、あれを若いうちから読むと、一気にダークサイドへまっしぐらになるらしいです!気をつけろ!

角谷さんも、Rails を使った仕事をしているときに、若い人が書いたプログラムを見たら、普通に継承を使えば良いところで無駄にeval 系メソッドを使っていて、「これがモダンRuby なのかー(笑)」という苦い体験をしたとのことでした。

うぁー。僕としてはショックです。最近、Rails の影響でeval 系のメソッドを使っていたり、ちょっと何かかくにもRails の書き方の影響を受け始めていたからです。がーんがーーん。

で、じゃあ何を読めばいいの。これが、なかなか難しいとのことでした。PerlPlagger にあたるものがRuby にはないらしいです(つд⊂)青木さんが書いた最近のものとか、リファレンスマニュアルで使われてるBitClustid:gan2 さん教えてくださり感謝です!)がいいらしい。青木さんが昔書いたnet-http とかは、青木さん自身失敗したと言っているらしい。

うーん。Rails とかより標準ライブラリとかの方がいいのかもですね。

コーディング規約を読むのもいいよ

ここにまとめられていますが、Ruby にはいくつかのコーディング規約が公開されています。これを読むのも勉強になるとのこと。何故なら、規約は仕様には書かれていないけど、書く際に悩むところ。つまり、はまりどころがまとめられているからとのことでした。

最初から細かいこと気にするな

最初から、スコープはあーだこーだとか、多重代入のこまかい挙動に悩んでも無駄。この辺りは最初適当でいい。ライブラリ使えたり、リファレンス読める方がずっと大切。目の前の問題をRuby で解決できるようになることが大切です。


と、以上がまとめです。 Yugui さん、角谷さん。素晴らしいお話ありがとうございました!



おまけ

面白かったのでおまけとしてメモ。

本から見えるYugui 節

本著の中では、ところどころYugui さんの好み、Yugui 節が見れるらしい。
例えば、map メソッドが紹介されているのに、collect が紹介されてない!Yugui さん曰く、map=写像というイメージがぴったり!collectって感じじゃない。
9章の黒魔術の節がノリノリ。その前の画像の扱いとかは一瞬で説明完了(笑)画像とかについては、Ruby って画像扱えないの?という疑問に答えるためにのせたとのこと。
for 4年ぶりくらいに書いた気がする。for 使わないとのこと。Rails のscaffold がfor 使っているのは困りものらしい。