ローファイ日記

出てくるコード片、ぼくが書いたものは断りがない場合 MIT License としています http://udzura.mit-license.org/

英語記事にかこつけてぼくが Sinatra や Godfather についてうだうだ語るエントリ

より。

DHH は、

the gains Sinatra offers you in simplicity are likely to quickly be offset with all the work you have to do replicate solutions Rails already provide. I pity the person who would try to build all of Basecamp, GitHub, Shopify, or any other major app in Sinatra alone. Rails is involved and large because it contains solutions to most of the problems that most people building apps of such scale will encounter. Trying to recreate all these solutions by hand is the anti-simplicity.

と言っているそうだ。

一方で、

I’ve used Sinatra in the past and I like it a lot. It offers an entirely different approach that’s great for a much smaller scope of problems, but does it really well.

とも言っていて、彼の主張はざっくりと言えば「大きなアプリケーションは Rails、小さければ Sinatra、それぞれ部屋を分けるべきだし、 Sinatra の拡張で大きなアプリケーションを作るのはクールじゃない」と言っているんだと思う。

それは正論で、「たったひとつの "best" なフルスタックフレームワーク」があれば良くて、そのフレームワークに開発、ドキュメント、あらゆるリソースが集まるのが理想的な姿で、別のフルスタック指向のフレームワークへリソースを割くのは正しく "trying to reinvent the wheel" と言える。

だが、翻って今ぼくたちは Ruby を使っているわけである。なぜ使っているかは人それぞれだろうが、どこかで

  • 得も言われぬ、良い感じ

があることが大きな理由だろう(これ角谷さんの言葉だった気がするけれどソースを見つけられない……)。「Enjoy Programming」を感覚的に支える何かである。少しでも速い LL が欲しいなら Python とかやればいいと思うので、この「良い感じ」は自覚のあるなしに関わらず Rubyist を縛り付けていると思われる。

この「得も言われぬ、良い感じ」は、 Ruby 自体にはもちろん、 Ruby を使った何かにも言える。 Test::Unit が以前よりあったのになぜ RSpec が大流行しているのか?

それと同様に、 Rails では満たされない「良くあってほしい感じ」が、別のフルスタックフレームワーク、それも Rails とはまったく違うやり方のフレームワークで満たされるのであれば、 Ruby のエコシステム自体がより良いものになるんじゃないかと思っている。「多様性は善」と一言で言ってしまうのは簡単だが、同じ言語にロックインされた中でもいろんなやり方のフレームワークの選択肢がある方が、幸せ感は高そう。

その an alternative が Padrino framework になるのかはよくわからないが、少なくとも現状の Padrino framework は、改善点が多々あるものの概ね「良い感じ」に使えるものになっている。なのである程度、「広めた責任者」としてのケツを持つ覚悟で紹介記事やらドキュメントの邦訳やらをやっていたりする。

#ただまあ、 Padrino は「中規模なアプリ」ぐらいが最大のパフォーマンスを出せるものになるのかなあとも思ってる。 そもそも僕自身が「大きなシステム」を綺麗に作ることなんかどうやっても無理だろ、という立場だったりするんで……。

#あと、「Rails より高速」という明白なメリットがあることも大きいですけどね~……(元記事のコメントにもあるとおり。ただ、その点は Rails 側の高速化と Sinatra 側の複雑化で結局一緒になるんじゃないかというはなしも一緒に上がっている)。

#さらに言うと、あの言語やその言語みたいな無闇な多様性ってぼくもあんまウェルカムじゃない、なので今の Ruby の「Rails vs Sinatra」ぐらいのバランスは非常にいい感じだと考えている。

#あと、 Rails が全部「悪い感じ」とは思っていないし、むしろあちらも「良い感じ」のものだと思う。何より、開発にコミットする人数が増えた場合は明白に Rails のほうがやりやすく、プラクティスもたくさん出ているので……。

Just one of these ではなく両方。