Rails/Rubyにあって Struts/Javaにないもの

仕事で Railsを使っています。実は Webアプリケーションのフレームワークを使うのは Railsが初めて。それまでは RubyPerlでちょっとしたCGIを作ったことがあるくらいで、フレームワークでどれくらい開発が楽になるのか半信半疑でした。これまであまりフレームワークを使ったことがないせいか、フレームワークは面倒なことをいろいろなやってくれる半面、使い方の制約が厳しくて本当に開発が楽になるもんなのかな、と考えていたので。

Railsの場合も厳しい制約があるのは確かなんだけど、制約を上手に使っています。いわゆる Convention over configurationといやつです。オブジェクトとRDB間のマッピングやコントローラアクションとURLのマッピング、こういったアプリケーションにとって本質的ではないところに厳しい規約を設けてる。こうすると、アプリケーションを作る人は、本質的でないところは何も考えずに規約に通りに作ればくよくて、思考を節約できる。つまり、本当に作りたいものに集中できる。

この感じは Rubyでプログラムを書くときの感じと似ていて、本当に作りたいものに集中できるから、作っていてとても気持ちが良いです。Strutsも試してみたけど、疎結合を重視するせいか、設定ファイルが多かったり、RDB上のデータに対応するクラスを記述しないといけなかったり。Railsを使った後だと、「そんなのどうでもいいからフレームワーク側で勝手にやってくれ」と言いたくなるんだよな。やりたいことに集中できなくてイライラしてしまう。もちろん、StrutsRailsが目指すものは同じではないだろうから、仕方がないことなのかも。

RailsRubyにあってStrutsJavaにはないもの。それは本当に作りたいものに集中して作ることができる「作り手にとっての気持ち良さ」。これからフレームワークやライブラリを設計する際には、保守性や堅牢性だけでなく、これを重要な要因にして設計したいなと。具体的にはどうしたらいいかとか何も思いついてないんで、これから考えてみよう。