0029 号 巻頭言

Ruby関連書籍を読む

Rubyist Magazine 第 29 号をお届けする。

今号は、yhara 先生こと yhara さんのインタビューが楽しめる「Rubyist Hotlinks 【第 23 回】 yhara さん」、 そろそろリリースが期待される Ruby 1.9.2 の新機能を紹介する「Ruby 1.9.2 予告編」、 安易に自力で(再)実装すると容易にセキュリティホールになりかねない、一時ファイルと一時ディレクトリの扱いをよろしくやってくれるライブラリを紹介する「標準添付ライブラリ紹介 【第 15 回】 tmpdir, tempfile」、 第 27 号に引き続き ActiveLdap のさらなる活用と実践について解説する「ActiveLdap を使ってみよう(後編)」、 前号に引き続き、jpmobile のさらなる応用として iPhone 対応を解説する「jpmobile + Rails 2.3.5 で作る携帯サイト入門 【後編】」、 こちらも第 27 号に引き続き、 Ruby と Excel の連携について、むしろ Excel に依存しないようにするための方法について解説する「VBA より便利で手軽 Excel 操作スクリプト言語「Ruby」へのお誘い (後編)」、 そろそろおなじみになってきた、北京の Rails エンジニア Robin Lu を紹介する「中国の若きエンジニアの肖像 【第 3 回】ロビン・ルー(北京IN-SRC)さん」、 続々と開催された地域 Ruby 会議の模様を紹介する「RegionalRubyKaigi レポート (10) とちぎ Ruby 会議 02」 「RegionalRubyKaigi レポート (11) 関西 Ruby 会議 02」 「RegionalRubyKaigi レポート (12) Tokyu Ruby 会議 01」、 そして Ruby 関連ニュースRuby 関連イベント となっている。


今回は手前味噌というか宣伝で恐縮だが、私の関わった本も含めていくつかの Ruby 本が出ている(あるいは近々出る予定である)。これについてざっと紹介したい。なお、ここで紹介した本は読者プレゼントとして、出版各社のご好意で提供する予定である。

『Head First Rails』

ちょっと前になるが、今年に入ってから出版された Rails 本としては無視できない本なのでまず最初にこの本について触れておきたい。

Head- First シリーズは日本でもすでに何冊か発売されているので、そのスタイルはすでにおなじみな方も多いだろう。Rails 版の本書もまさにそのスタイルに則って書かれている。 とはいえ、他の書籍と比べると、内容のインパクトとしてはあまりギャップは感じないかもしれない。同シリーズ内では、たとえばいきなりケーブルを引き回すところから始まる『Head-First ネットワーク』などはなかなか強烈で、それに比べると割合落ち着いた趣も感じられる。 あるいはそもそもの要因として、ある意味、Rails というか Ruby の伝統的な雰囲気と Head - First シリーズの雰囲気がマッチしすぎている、とも言うべきか。そう、当然のように _why の (poignant) guide to ruby を思い出すだろう。 そんなこともあって、案外「ふつうの Rails 入門書」と思った方がよいかもしれない。

そのような観点から本書を見直すと、案外文章が多いことに気づくだろう。日本でのビジュアル重視なコンピュータ書の入門書というと、分かりやすいイラストが多い分、文章による説明が短いことに気づく。それと比べれば、実際に文字の部分をしっかり読み込んで理解するには、実はそれなりの分量になっている。

現時点での本書の優位点は、Rails 2.3 系にも配慮されている点である。もっとも、過去の Rails 本にも共通する宿命として、本書もまた Rails 3 を使うまでの寿命になるのは避けられない。とはいえ、3 系は大きなメジャーバージョンアップであり、外部 gem なども含めたエコシステムとしてはまだ 2 系の寿命は続くだろう。タイミングとしてはいい時期とも言える。そんなタイミングも含めて、長く使える Rails 本となるだろう。

『情熱プログラマー』

本書は実際には Ruby の本ではない。しかしながら、Rubyist なら知っておきたい Chad Fowler の著書であり、かつ Rubyist 的な雰囲気を知るためにも読んでおきたい書籍である。

先日行った毎年恒例の LL イベントの打ち合わせで、あるイベント運営に詳しい方から「Ruby の人たちはイベントにしても、熱心な参加者が多くてうらやましい」という意見をいただいた。それに限らず、Ruby に関わっている方について、とりわけその熱意についてはポジティブな評価をいただくことが多い。ある意味光栄なことではあるが、正直不思議なことでもある。

21世紀当初の Ruby ブーム当時、Ruby がまだビジネスになると思われていなかった頃であれば、ビジネス的の(ある種つまらない、まさに「情熱」に欠けた)プログラミングからの逃避として Ruby というなにやらすごい言語がある、という評判が、いや、評判のみが知れ渡っていても不思議ではない。しかしながら、Rails のおかげもあって Ruby がビジネスの現場に投入されるようになって久しい現在、往時に比べれば幻想は減っただろう。 それでもなお、Ruby と情熱は何かしら親和性があるものとして語られている。

そして本書は、その情熱が職業プログラマというビジネスのキャリアとしても重要であると説く。むしろ、よりよいプログラマになるためには必要不可欠であるというくらいの勢いである。さすが Rubyist。

私自身の経験としては、ビジネスとしてソフトウェア開発を行うことについてある程度把握できるようになる前に Ruby のたのしさを知るようになったせいもあるのか、あまりビジネスと情熱の相関性というのは意識したことがない。 ただ、それでも本書の基調をなす、ある種の切実さとも言える「優れたプログラマでありたい」という思いと、それを具現化させるための情熱という要素には親近感がある。情熱といっても見るからにいきいきしているとか、そういうホットな感情の発露だけではない。むしろパッチや BTS 内外でのやりとりからなるクールな感情の底流として、すぐれた成果物に対する情熱に共感を覚えるときがある。そんな passion の相違も考えながら、本書を読むとより楽しめるかもしれない。

『リファクタリング:Rubyエディション』

基本的には名著『リファクタリング』の Ruby 版、というまさにタイトル通りの本である。 おかげで冒頭にはマーティン・ファウラーによるまえがきで、 「オリジナル版をよく読んでいる人なら、本書を呼んでもあまり新しい知識は得られないはずだ」 というありがたい言葉が書かれている。きっと本書の営業担当者は頭を抱えたに違いなく、同情を禁じ得ない。

とはいえ、まあファウラー氏の言う事は話半分に聞いておいて、 Java も Ruby も同じように扱える OOP マスターな人ならともかく、 ふつうのひとは素直に読んでみた方がいいだろう。 Java に詳しい方でも、例えば eval 族などメタプログラミングの道具を使ってリファクタリングをする項については、さすが動的言語の面目躍如とたのしめるのではないだろうか。

そしてもちろん Java 版の『リファクタリング』を未読であり、かつ Ruby の知識がある人なら本書を読まない手はない。

未読の方のために断っておくが、本書あるいは Java 版の『リファクタリング』のすごさは「リファクタリング」という考え方にあるのではない。それだけなら今となっては本書を繙く意味はない。 そうではなく、その「リファクタリング」という考えに基づいて、実際に誰でも適用可能な「手順」「手続き」にまで落とし込むところにこそ、本書の凄みがある。 その差は、コードでたとえて言うなら「擬似コード」と「エラー処理まで含めた実際のコード」との違いに匹敵する。

未読の方にはぜひ一度手にとり、手順をいちいち確認しながら読まれることを強くおすすめする。きっと得られるところがあるだろう。

『Rubyベストプラクティス』

こちらは手前味噌ながら私が監訳者となっている本である。 昨年からずっと戦ってきた本なので、ひときわ思い入れも深い。

言いたいことはあとがきにも書いたのであまり残っていないのだが、 そういえばバージョンの件についてあまり触れていなかったので改めて書いておきたい。

本書は Ruby 1.9 向けに書かれた本である。1.9 向けというのは、何の注釈もなく、何事もなかったように 1.9 用のメソッドが出てくる、という意味である。

そして、付録 A にある「付録 A 後方互換性のあるコードを書く」にも注目してほしい。 本書が 1.9 向けに書かれているのは、単に二者択一や新しいからということで 1.9 を選んだのではない。1.9 がより優れているため 1.9 で書かれている。だからこそ、この付録で説明される「後方互換性のあるコード」というのは、1.8 でも 1.9 でも動かすため安易に 1.8 のメソッドを使ったりはしない。そうではなく、1.9 で書いたものを、できるだけ 1.8 で動かすために対応を行うのである。すなわち、本書での 1.9 は、「より新しい Ruby」ではなく、「より優れている Ruby」なのである。

もっと言うと、このようなスタンスは、単に著者の好みというよりも本書全体を覆うトーンでもある。必要なときにはメタプログラミングを駆使して、誰にでも分かりやすい無難なコードではなく、著者なりの「Ruby のよさ」を最大限引き出す技術が詰まっている。そのような攻めのプラクティスは Ruby の得意分野でもある(逆に守りのプラクティスは不得意な点もあるだろう)。その醍醐味をぜひ味わっていただきたい。

『たのしい Ruby 第3版』

そしてこちらは手前味噌2発目、私が共著者となっている本である。さらに言うと 本書は私にとっては初めての書籍かつもっとも広く読まれている書籍なので、ひときわ以上に思い入れが深い。

自分が書いた本について書くのは難しいというか、どうやっても客観的な評価などしようがない上に、 ありがたいことにロングセラーの入門書であるので、 るびま読者の方々はすでに旧版を既読の方も少なくないだろう。 そのようなベテラン Rubyist にとって、本書はそれほど得るところはないかもしれない(それでも 1.9 対応で新しい記述が含まれているのは注目いただきたいところではある)。入門書というのはそのような性質のものである。

もちろんるびまは好きなんだけど Ruby はよく知らない、という奇特な(失礼)方もいるだろうが、 そのような方を除いた場合には、本書は「他人に読ませる本」として使われることが多いだろう。 その場合一番気をつけなければならないことは、内容が古びていないか、である。自身が読んだときには 最善の書籍であっても、数年後他の人に読まれる時にはあまり最善ではないことは少なくない。 むしろコンピュータ書ではそれが当たり前と言ってもいいだろう。 それを防ぐために改訂を行うわけだが、大きく変えてしまうと逆に問題が広がる危険性もある。 そうならないよう、書き手としては戦略を立てて書き換える訳だが、その善し悪しは ベテラン Rubyist によっては判断が分かれるところだろう。 何が変わって何が変わっていないのか、そのようなことを配慮しながら読むというのも、 るびま読者ならではのたのしみかたかもしれない。

著者にとってはじめての本に思い入れが深いのと同様、読者にとってもはじめて Ruby を学んだ本は思い入れが深いだろう。 そのような思いを重ねられる特別な本が、今でも古びることなく他の人にも勧められる本になっていることを願いたい。

(るびま編集長 高橋征義)