未来のいつか/hyoshiokの日記

hyoshiokの日々思うことをあれやこれや

Rubyベストプラクティス

オライリージャパンの高さんより献本をいただく。ありがとうございました。

Rubyベストプラクティスをざっと拝見して、コミュニティが持つ価値観を明示的に言葉にする事の価値を再確認した。コミュニティの価値観というのは、通常はどのようなコミュニティであれ、その構成員によって明示的にしろ暗黙的にしろ共有されるもので、外のものからはなかなか伺いしれない。

そのような価値観は一子相伝で奥義を決して外部に漏らさないというものから、広く世間に流通しているものまで様々なものがある。閉じたコミュニティというのは、その奥義がなかなかコミュニティ構成員の外に伝わらないもので、一方で開いたコミュニティというのは、その逆である。

コミュニティというのは、一人一人の人によって構成されるので、その人が移動することによって、少しずつその奥義が伝承することになるのだが、一子相伝のコミュニティでは、人の出入りというのは極めて限定され部外者になることは許されない(?!)ので、その価値観が外にでることはほとんどない。

プログラマのコミュニティというのも、開かれているようでいて、実はそうでもない。ある時ふと思い立って、職業としてのプログラマになれるかというと、20代ならまだしも、30代あるいは40代になってからプログラマを志してプログラマになったという話はほとんど聞かない。人の出入りがないとその価値観というのはなかなかフツーの人には伝わらないのである。

よく、ギークとスーツの対立などと揶揄されるのであるが、ギークがスーツに対して、その価値観を明示的に言語化して伝えていたかというと、あまり十分だったとは言えない。その必要性をあまり感じていなかったからかもしれない。

最近のわたしのプチブームは、テストを書こうということなんだけど、わたしなんかは、それは当たり前のことでわざわざ口に出して言うことでもなかろうと思っていた。だけど世間ではテストドリブン開発だとかテストファーストだとかが喧伝されているということは、それが十分実践されていないことの証拠だと思う。

誰かとの会話で「最近テストファーストとか流行っていますよね〜」なんて言う言葉を聞くと、カチンときて「そんなものはわたしが新卒のころからあったんで、最近というのは20数年前のことか」と嫌味の一つも言いたくなる。*1

ふと思う。そのように思うのはあの20数年前に勤めたDECという会社にいたからだ。あの会社にはそのようなプログラマのコミュニティがあったからだ。そしてそれを体現する多数のプログラマがいたからだ。雑な仕事をしたらそれを許さない同僚や先輩がいたからだ。それがコミュニティのチカラなんだということに、やっと思い立った。*2

そのコミュニティの不文律はドキュメント化されているものもあったし、ドキュメント化されていない暗黙のものもあった。

共通の価値観は、コミュニティの構成員によって守られ進化していく。明文化されたものはベストプラクティスとして会社の枠を越えて緩やかに流通していった。プログラマとしてキャリアを積み会社を移動し様々な会社のベストプラクティスと融合し衝突し徐々に洗練されていった。

Rubyベストプラクティスという書籍は、Rubyistが自分たちの持つ価値観の断面を切り取って言語化している貴重な一冊だ。

Yuguiさんの初めてのRubyもまさにそのような一冊であったが、このRubyベストプラクティスは、Rubyコミュニティへまさに入らんとしているプログラマに向けた一冊である。

1章「テストでコードを駆動する」は、わたしのプチブームとシンクロし、うれしくなった。テスト重要だよね、テスト。6章「うまくいかないとき」はデバッグの仕方だ。テストとデバッグ。この2つはプログラマが避けて通れない極めて重要なことなのに、ちゃんとふれている書籍があまりにも少ない。プログラミング言語には言語特有のイディオムとしてのテスト方法やデバッグ方法があると思うのだが、それは必ずしも明示的に言語化されていない。それにかねてから不満を持っていたわたしとしては、この2つの章だけでも、本書はお勧めである。付録Aの「後方互換性のあるコードを書く」もぐっと来た。

わたしはRubyistではないが、このようなドキュメントを持つRubyコミュニティは素敵だと思った。

訳文もこなれていて読みやすい。誤植を指摘するほど読み込んでいないし、サンプルのコードを写経して確認していないがお勧めの一冊である。

*1:そろそろ大規模ソフトウェア開発に一言いっておくか。デイリービルドとリグレッションテスト http://d.hatena.ne.jp/hyoshiok/20100312#p1 昔からあったんだけどプログラマのコミュニティから外へあまり知られていなかったのは、言語化する人があまりいなかったからなのかもしれない

*2:素人をプロに育ててくれた社内コミュニティ http://d.hatena.ne.jp/hyoshiok/20100327#p2 プロフェッショナルなコミュニティとしての会社の役割を考えるヒントになると思う