僕がDHHをすごいと思う理由

今さらだけど、Ruby on Railsってホントに面白い。というか、Railsそのもののというより、作者のDHHのアーキテクトとしての視点と決断がすごいと思う。
普段Javaを使っている立場から見た視点かもしれないが、DHH(及びRails)について最近思っていることを書き留めてみる。

真のWebアプリケーションフレームワークを作った

画面遷移からvalidation、DBへの永続化までwebアプリケーションに必要な機能を統一して提供するフレームワークを作った。画面遷移だけのJSFStrutsでも、永続化だけのHibernateのような視点ではなく「webアプリケーションを作るために必要な単純なフレームワークの塊」のようになっているところがすごい。今までは常にそれぞれのフレームワークをつなげるための苦労があった。DIコンテナという分野が活況になっているのはこれらの苦労を各層を疎結合にすることで軽減させようという背景があるのではないだろうか。でも、DHHは逆に各層や機能のフレームワークを規定して提供することにした。設定を色々するんじゃなくて決まりを提供することでそれに沿ったら簡単に作れるようにしてくれた。密に集合したフレームワークの塊をwebアプリケーションフレームワークとして提供した訳だ。規約を重視する考え方にConvention over Configurationという名前も付けてくれたのがありがたい。

どこにソースを書くか指定した(形を決めた)

これもConvention over Configurationから来ている。「ソースをどこどこにどう置いておくときちんと動くよ」っていうのを決定した。これによって開発者が色々アプリケーションを作る前に形をどうするか悩む部分が減った。しかも、規約が決まっているおかげでソースを読む側にとっても読みやすくなっている。メンテナンスをするときもきっと分かりやすいだろうなと思う。

Rubyを選んだ

自分がwebアプリケーションのシステムを作るって考えたら、普通のSI業なら間違いなくJavaを選ぶし、yahooやはてなのようなwebアプリケーションを作るならPerlPHPを選ぶと思う。もちろんRubyは素晴らしいけど利用者の多さとか認知度を考えるとなかなか選べないだろう。勇気が沸かない。。。フレームワークを作っても誰も使ってくれないんじゃないかと不安になると思う。でも、DHHは自分が作りたいものを実現するのにRubyが最適と考えたらRubyを使うわけで、自信と勇気が尊敬できる。その点ではPaul Grahamもあまり使われていないLispを選ぶ辺りですごいと思う。「これだ!」って確信を持って行動する行動力も見習いたい。

と、どこかで書かれていそうなことを書き連ねてみたり。
でも、DHHのアーキテクトとしての決断は本当に教わるところが多いと思う。決まりを作るのはいくつかの可能性を捨てるという事だ。そういう可能性を「捨てたくない捨てたくない」と大事に抱えすぎるとつまらないシステムや使えないフレームワークが出来上がる。逆に決まりを作りすぎても出来ることが少なくなって使えないものが出来上がる。
「これが必要これが不必要」というのをズバズバ規約として決めているRailsの考え方を見ていると痛快な気分すらしてくる。DHHへのインタビューもすごく痛快。

これらはきっとソフトウェアを作る者として当たり前かもしれないが重要なことだ。忘れないようにしておきたい。