『初めてのRuby』がジュンク堂に並んでいたので記念に写真取ってきた。RubyKaigiで書いたポップも使ってもらってる。
良い場所に並べて頂いたおかげで、順調に売れている模様。なので、気が大きくなって欲しかった本をがさっとジュンク堂で買ってきた。
みなさん、ご来場 & お買い上げありがとうございました。なんか、緊張していたので最初のほうの人は特に、ちゃんと顔を見てお話しする余裕が無くてごめんなさい。本書がお役に立てれば幸いです。
RSpecをRailsと組み合わせてBDDを導入したときの、導入話とか。
RejectKaigiで話した。途中で時間切れになって残念。
RubyKaigiのバッジというのができたらしいのでよく分からないけど張ってみる。
私は今回はスタッフとしてRuby技術者認定試験関係の企画を担当していて、あと第1日目で喋る。それからRails勉強会@東京のコミュニティブースを手伝うつもり。それから本のサイン会。あと開発合宿もあるのか。
で、今回のみの素敵な特典付きのRuby技術者認定試験は、本日中の受付となる。まだ若干の余裕があるようなので検討なさっている方はお早めに。
それから、同じ特製マグカップを、会場内で試験申し込みした方のために若干個用意しているらしい。会期中に多目的ホールのCTCのブースでRuby技術者認定試験を受験申し込みすると、先着順でもらえるとか。こっちは先着順ね。
今発表資料作ってる。
事例を喋りたかったから発表者として申し込んだ。普通のRails開発で、技術的にはつまんない話だよ? 使ってる技術は全部、これまでにどこかで書いたり喋ったりしたことがあるものだし。
ギークな人はその時間は多目的ホールに行って@ujihisaの話を聞くと良いと思うよ。
既に書いたけど、会場内で先行発売。それからサイン会をやる。
RubyKaigiに合わせてRubyの仕様を話し合うミーティングとか開発合宿とかがあるらしい。Matzも来ることだし、そろそろhttp://redmine.ruby-lang.orgをお披露目する頃合いだと思うんだ。そこでコミッタ向け利用案内をしようとかいう話があったり無かったり。
RubyKaigiのほうの発表申し込みには間に合わなかったけど、Redmineのお披露目をしたい。採択されたら喋りたい。
『初めてのRuby』を執筆したので前の記事で宣伝したのだったが、幾つか書き忘れた。
他言語プログラマのためのRuby入門書『初めてのRuby』を執筆した。オライリー・ジャパンのいわゆる動物本の1つとして、6月25日に発売される。
なお、本書は翻訳ではない。オライリー・ジャパンの慣例によると『初めてのRuby』というタイトルの本は米国O'Reilly Mediaの『Learning Ruby』の翻訳本の筈だが、そうはならなかった。諸般の事情により『Learning Ruby』を訳すのではなく、私が日本語で書き下ろした。
本書は、他のプログラミング言語の経験があるプログラマを対象としている。Rubyについての知識は一切問わない。一方、コンピュータ科学一般の用語やオブジェクト指向そのものについては知識を要求していて、こうした話題の説明は殆ど含まれない。
新しいプログラミング言語を習得するとはどういうことだろうか。まず、その言語の文法を知っていて処理系が受理してくれるようなソースコードを書けなければならない。だが、それは出発点でしかない。その言語が持っている標準的なライブラリを活用して、車輪の再発明をすることなくプログラムを構築することができなければならない。そして、その言語らしい考え方を身につけなければならない。その言語の特色を活かした設計をしたり、その言語らしいソースコードを書いたりできなければならない。
さて、これらをすべて含んだ本を書くこともできる。だが、それはとてつもない大著となるだろう。手軽に買って手軽に読めるものにはならない。だから、私は本書をハブとして書くことにした。本書は他の様々な資料をつなぎ止めて体系的な知識を形作ることを目指した。
まず、Rubyの文法。最低限の文法を解説しなければ他の部分について説明することすらできないし、入門書とは呼べないだろう。だから、本書はRuby文法についての解説を含んでいる。
ただし、
これを鑑みて、「条件分岐(if)とは」とか、そういうところの説明は抑えている。あくまでも、条件分岐という概念をRubyではどういう風に表記するのか、Rubyにおける真・偽とは何か、という説明にとどめている。
また、文法を網羅はしていない。例えば、AWK由来のBEGIN{}, END{}についての説明はない。利用頻度が低いし、Rubyの他の部分を理解した後ならば、リファレンスマニュアルを読めば分かるはずだからだ。
本書の狙いは「Rubyリファレンスマニュアル」を読めるだけの前提知識を提供することにある。
ある言語を習得したいなら、少なくともライブラリリファレンスの主要な部分は通読すべきだ。例えばJavaならば、java.lang.*, java.util.*なんかを通読すべきであるように。
だが、文法を理解しているというだけの人間がライブラリリファレンスを読んで理解できるのか? リファレンスは実務者の手引きとしての邪魔にならない程度に冗長性を抑えてあるのが常だ。やはり、その言語についての一定の前提知識は要求する。何よりも「何ができるか」は分かってもそれを「どうやって使うべきなのか」「いつ使うべきなのか」は書いていない。そうした文化や考え方に相当する部分はリファレンスの責務でない。
だから、私はそれを書いた。
本書は配列・ハッシュ、数値、文字列、入出力のそれぞれに章を割いている。だが、目的はこれらのクラスの機能を説明することではない。目的の1つは、他のクラスのリファレンスを読めるようにするためだ。これらの基本的なクラスはRubyライブラリの随所で使われていて、リファレンスにもしばしば説明なしに出現するためだ。
またもう1つの目的はこれらのクラスを素材としてRubyのプログラミングの流儀なり考え方を説明するためだ。例えば、一般にコンテナクラスをどうやって設計するべきか、どうやって実装するのか。
故に、配列・ハッシュ、数値、文字列、入出力についても網羅的な機能解説はしていない。それこそリファレンスを読めばよいことだ。String#splitの第2引数とかFileTest.symlink?の機能とか、それを書いてもRubyの考え方についての理解は深まらないし、本書の後にリファレンスを読めば分かることだ。
Rubyの機能についての網羅的なデータが欲しければ「Rubyリファレンスマニュアル」を読めばよい。一応、Rubyについてのすべてが書かれている建前になっているし、不完全な部分は目下「Rubyリファレンスマニュアル刷新計画」が更新中だ。何より、これらは無料で読める。どうしても紙媒体が欲しければ、Dave Thomasの『プログラミングRuby 第2版 ライブラリ編』を買えばよい。
『初めてのRuby』はそれらを読みこなすための前提知識を提供する。
真に語るべきは文化だ。Rubyistはどのように考えるのか、どのように設計するのか。それを理解すれば、ライブラリの機能1つ探すにしてもどこを探せばよいのかは自明となる。どのようなAPIを提供すれば他のライブラリとの接続が容易となって再利用性が高まるのかが分かる。
例えばANSI Cライブラリにおいて、プログラマは引数のどちらがsourceでdestinationなのかリファレンスを調べる必要がない。第2引数がsourceで第1引数がdestinationという規約があるからだ。こうした慣習を積み重ねて文化を織りなし、その上に言語を構築したとしよう。そうすれば「分かる者にとってはすべてが自明」であるような言語ができあがる。それがRubyである。少なくとも、Rubyとはそうであろうと努めている言語である。
そういえば以前、日経ソフトウェアに書いた記事でもそんなことを触れた。
とはいえ、文化というものは陽には語りがたいものではある。確かに私も、配列やハッシュや……という素材を利用した。その素材を通じて読者が「察して」くれることを期待した。それでも、私は本書において、今まで公式にはUndocumentedだった文化習俗をいくらかでも明文化したつもりではある。
Rubyに付いての事実を知りたければ、他の資料(特にリファレンス)を読めばよい。だが、事実の羅列は知識ではない。それらを糊づけ順序づけ関連づけて体系を築いてこそ、知識となる。かつてRubyistは、既存のライブラリのソースコードを読んだりRubyコミュニティで活動したりということを通じて、そうした「糊」となる文化を習得したものだ。
プログラマはパターン認識に優れた種族だから自分でそうやってRubyの背景にある膨大なパターンの山を再発見できるのだが、それで良いのだろうか。
いや、いつまでもそうした「背中で語る」的スタイルだけに頼っているべきではない。できるだけ明文化すべきだし、それができなくても、せめて高い濃度で多くの文化パターンに接触できる教材があるべきだ。本書はその解決を狙っている。あまりにも壮大な狙いであるが故に私の実現したものは不完全ではあろうが。
本書は、Ruby入門者をRuby初級者に引き上げる本である。入門者と初級者の違いは、Rubyの慣習に馴染んでいるかという点にある。既に他のプログラミング言語を習得したことのあるあなたである。いったん初級者になりさえすれば、後は自力でRubyを極めるのも容易なことだろう。
本書には、参照すべき他資料へのポインタもちりばめられている。例えばテキスト処理を扱うプログラマであるならば言語を問わず正規表現は心得ているべきだし、『詳説正規表現 第3版』は読むべきだ。そうしたガイドが読者にとって、初級者から更に上への道行きの助けとなれば誠に幸いである。

日本Ruby会議2008の会場にて、会期の第0日目となる6月20日にRuby技術者認定試験を実施します。で、上の写真が今回の受験特典です。一応、この機会にしか手に入らないグッズなので、これを目当てに受けてみるのも良いんじゃないでしょうか。つーか、満員御礼で苦情が来るってのも困るけど席が埋まらないのはもっと困るので、皆さん受けてください、お願いします。
ベンダー試験としては破格の安さだしさー、0日目は事例紹介とかスーツ受けする企画もあるしさー、みんな「Rails実戦投入の検討に当たって先進企業の事例を聞いてきます。ついでに試験受けてきます。出張代よろしく」とか言って来ておくれよー。
つーか、試験実施の調整をしてる立場の私は受けても良いのかな。受けても良いものなら、個人的にこのマグカップは欲しいんだが。
yugui.jpサーバーを以降させるので、これから数日間、yugui at yugui.jp にメールが届かない場合があるかもしれません。もし心配でしたらyugui at yugui.sakura.ne.jp にお送りください。
Ruby本、Rails本の出版ラッシュである。このラッシュを2000年の第1次ラッシュ、2006年の第2次ラッシュに続く、第2.5次ラッシュと呼んでいる。
さて、著者ののりおさんから『Rails of Ruby on Rails ~Case of LOCUSANDWONDERS.COM~』を献本いただいた。企画段階では「のりお本」とか「デザイナ本」と呼ばれていたものである。これまでの完全にプログラマ指向のRuby on Rails解説書とは少し違う、Webデザイナのほうを向いた本である。
一見して、全ページカラーでしかも黒地、時折良い感じの写真が入って、という雰囲気に驚かされる。そして、読み進むとその濃さに驚かされる。
プログラミングを基礎から教えるという感じではない。かといって、Webプログラミングの経験なんてものを前提としているわけではない。Webデザイナ向けという趣旨から考えて、JavaScriptをちょっといじっているとか、そんな層が対象なのだろう。そうしたレベルからスタートして、けれども読了時の到達点は結構高い。
アーティストのサイトの実際の構築事例を通じて解説しているというスタイルも注目だ。そうした事例によって地に足のついたままに、Railsアプリケーションの構築や様々な魅力的なプラグインを流れるように紹介していく。
Railsには便利なプラグインは数多くあるが、どれをとりあげるかは難しい問題だ。単に解説で見栄えがすると言うだけでなく、実際のサイト構築で役に立つものでなければならない。Railsに真っ先に飛びついたアーリーアダプターたちは試行錯誤して使えるプラグインを見分けてきたものだが、本書で紹介しているプラグイン選択の妙は「なるほどこれが正解だ」と叫びたくなる。実際の事例を通じて裏打ちされているからこそできる技である。
書籍の前半にかなりの内容が詰まっている。その勾配の高さ故に、一直線に理解が進むという訳にはいかない。例えば、本格的なプログラミングの経験を前提としないならばデータベースについての説明が不足してるのではないか、と最初読んでいて不安に思った。けれども、そうした疑問点はとにかく手を動かしていくと後半ですっきり解決されるように構成されている。
いいから、騙されたと思って本のコードを打ち込んで動かしてみよ。そして、動作させながら先に進め。それで本書の前半を読み終わったら、既にRails使いとしては中級者以上のレベルにいる。そして、後半では更に様々な事例を通じて、魅力的なプラグイン(と、アーティストへのインタビュー)に触れることができる。
アーティストへのインタビューは、技術書としてみれば要らないんだろうけどなー。でも、intervieweeが魅力なせいで結構楽しく読めたし、何よりもサイトコンセプトやなんかを中の人に語ってもらうことで、理解の厚みが増すように思う。私なんかが書く「解説のためのでっち上げのアプリケーション」では真似できない世界だ。
考えるんじゃない、感じるんだ。これはRubyの特徴であり、Railsの特徴である。だとすれば、本書は実にRuby on Rails的ではないか。
実践して、体感して、身につけるための本である。リファレンスとしての検索性を要求するのは酷だろう。そんなものを無理に取り込めば本書の雰囲気を損なって、一番大事なところが失われてしまう。
ならば、検索性のためには『Railsレシピブック 183の技』を勧めたい。のりお本を実践して体感し終わった後に、「これをしたいんだけどどうすれば良いんだっけ」とか「これをやる方法はないの?」とか調べるのに向いている。こちらも非常に中身が濃い本だ。