Railsはおまかせ(Rails is omakase翻訳)

作者DHHによる Railsの思想を語ったエッセイ の翻訳です。 DHHから許可を得て公開しています(ライセンス不明)。

substackのモジュール哲学 と対比するとおもしろいです。


世の中には、アラカルトなソフトウェア環境がたくさんある。ものを食べに来た場所で、まずしなくちゃならないのは、きみがまさに欲しているものを注文するために、選択肢のメニューを注意深く見渡すことだ。ORMにはこれを、テンプレート言語にはこれを、そしてこのルーティングライブラリを使っておしまい。もちろん、きみは自分がなにが欲しいのかわかっていなければならないだろう、そして、もしいつでも同じものを注文するのなら、知識の限界を引き延ばすための勉強をすることはめったにないだろう。まあ、あるんだけど。これは、ソフトウェアを使うときの、とても一般的なやりかただ。

Railsはそうではない。Railsはおまかせだ。料理人のチームが素材を選び、APIを設計し、きみのかわりに食べる順番を決める。それらは、なにがおいしいフルスタックフレームワークの足しになるかという、かれらの考えにもとづいている。メニューは個人的であると同時に、風変わりなものであり得る。どこのだれにでも魅力的になるよう意図されたものではないんだ。

だからと言って、お客がメニューにないことを表現できないわけじゃない。取り替えることは許される、理由があるなら。test/unitが好きじゃない? 問題ない、自分でrspecを持ってくればいい。CoffeeScriptがお気に召さない? Gemfileから一行削除しよう。

もっと言えば、メニューに提案することだってできる。良いアイデアは、だれが考えたかに関係なく良いアイデアだ。けれども、親切な提案と喧嘩腰のディナーの間には微妙な違いがある。その違いは、たいていの場合、提案が断られたときにあきらかになる。「もうしわけないけど、ホットドッグはうちの寿司にはあまり合わないんだ。それから、きみはうなぎが好きじゃないかもしれないけれど、うちでは理由があって取り入れてる。けど、提案してくれたのはありがとうな!」メニューについてのほとんどの議論がこれで終わりならどれだけよかったことか。

でも、これでは終わらない、よね? ふつうは、そのまま続ける。 だけど、おれはウナギが嫌いなんだ!!!デフォルトのコース設定にそんなのがあると、舌がおかしくなっちまうよ兄弟!!はずしてくれよおおお!! オーケイ兄弟、座って酒でも飲んでなよ。

おれらが、ときにおれが、Railsというおまかせ体験の料理長として、皿に盛るものを決めるとき、たいていの場合、考え抜かれた味と嗜好を基準にしている。おれは、この決まったやりかたで10年間やってきた。1万時間以上をRailsに注ぎ込んできた。だからと言って、おれの味覚がきみに合うようになるわけではない、けど、確実に、よくまとまっているということは言えるわけだ。

なにが好ましい機能かについて意見が合わないことはあり得るけど、結論は、「食べるのはやめておこう」ってことになる可能性が高い。きみが一見さんならなおさらそうだ。おれらのやりかたに使った時間がすくないほど、調理場で手伝う立場からは遠のき、意見の重みは減る。とくに、大声で攻撃的なやりかたで表現されている意見は。

意外なことに、こういう意見に気分を害する人たちがときどきいる。「しかし、ぼくの意見は、きみのと同じくらい妥当だ!」いいや、ぜんぜんそんなことはない。きみの意見は、きみにとって妥当だが、このレストランでおれがデザインしたメニューには、ほとんど確実に当てはまらない。きみにはいつでも行使できる力がある、それは店に通わないことで自分の意見を表明することだ。メニューのほとんどのものが気に食わないなら、いったいどうしてまだテーブルに着いてるんだい? ドアはすぐそこだ、出るときはできるだけお静かに。

もし長期的な影響をRailsのメニューの設計に対して持ちたいなら、それができる立場まで登り詰めなければならないだろう。おれらは、さらに3人をRailsコアグループに今週追加した。実際にそれをなしとげた連中だ。かれらは、「どんな手助けができる?」命令や、「ここにぼくがデザインした一皿がある、味見してみてよ」をたずさえてやってきた。コードで貢献した人だけがRaisの方向性に重大な影響を与えられるのであって、ただGithubのコメントスレッドに現れてCoffeeScriptの害悪について文句を言うだけで影響力を持った人は1人もいない。

この振舞いが無意味だとして、なぜ人々がそのような行為を選択するのか、じっくり考えるのも悪くはないだろう。おれのお気に入り理論は、それがその時点においては意味のある行動に感じられるから、というものだ。かれらは、日々の活動において、ものごとがどのように行われているのかにまったく注意を払っていないのだけど、いくらかの印を塗りたくってバリケードによじ登るチャンスが目の前にある。そう、おれは役目を果たしたぞ!立場を明確にしてやった! あんなもんは要らん…えーっとTurbolinksだっけ? 今週おれらが反対したのはCoffeeScriptだったか? いやBundlerだっけか? とにかく なんかか 気に食わん! そうだ!!!

締め括りとして、大局的な観点から見てみるのは悪くないだろう。おれは、この決まったやりかたで提供されているものが、おおむね気に入っているだろうか? 自分の見解の違いを、例外あるいは代替として、好みに合わないくつかのものに対して表現できるか? もしそうなら、調理場の料理人たちに、かれらがほんとうに思ったことに取り組むのが、最良の選択なのだと考えられるようにすることで、助けてあげるべきかもしれない。それは、おれがなにもかもを好きでいなければならないということではないが、世界中にうなぎを愛させようという、病的な冗談めいた陰謀なのだという考えを止められる。