興味深く読んだ。
ずっと気になっていることがある。フレームワークとアプリケーションの境目について。
アプリケーションとフレームワークははっきり区別されるべきなんだろうか。 Rails は「区別するべきだ」と要請しているように感じられる。アプリケーションはフレームワークが規定する「できること」の範囲内で書くべきであり、その範囲を外れる場合は相応の覚悟をしろ、領分を守る限り難しいが一般的な問題はフレームワークが正しく解決してやるぞ、と。
一方で、フレームワークもアプリケーションの一部である、とする考え方もあると思う。足場を支えるライブラリに過ぎない、という思想。両者の境界は曖昧になり、フレームワークが規定する「できること」だけでは物足りなくなったとき、アプリケーション側を「できること」の枠内に合わせるのではなく、フレームワーク側を拡張してもよい、ということになる。それもアプリケーションには変わりないのだから。
Rails に慣れた人々は言う。 Rails に不満があるならパッチを送ればいい、オープンソースなのだから、と。エコシステムに貢献するのは良いことだと思う。しかし、腑に落ちない感じもある。解決したかったが現状の「できること」の範囲内では難しかったその問題というのは、一般化するほどおおげさなことだったんだろうか?自分のアプリケーションを直したいだけなのに、なぜ大勢の人たちがコンセンサスを取らなければならない議論の俎上に乗せる必要があるのか。
もちろん Rails に詳しくなれば、「できること」が実はもっと広大だったと知ることは多々ある。「できること」をちょっと拡張するうまい方法もわかってくる。それでも不満なら fork してオレオレ Rails を使い続けたっていい。誰も文句は言わない。ただし覚悟は必要だが(そして利益に見合わないからやらないほうがよいが)
結論は出ない。 Rails をどうこう言うつもりもないし、 Rails コミュニティをどうこう言うつもりもない。ただなんとなく、うまく言えないけど、もやもやする気持ち。
自分は「upstream に追随するのは正しいこと、追いつけずに古いバージョンを使い続けるのは悪いこと」という価値観に染まりすぎてしまって、 Rails に限らずフレームワークを拡張してアプリケーションを使いやすくする(つもりの)コードを見ると拒絶反応を起こしてしまう。そんな hack を気軽にやって、いまはいいかもしれないけど、将来フレームワークのバージョンアップに支障が出たらどうするんだ、アプリケーションは出しゃばらず行儀よく書くべきだ、と。
けれども、それはアプリケーション開発者として正しい姿勢なんだろうか?そこのところに自信が持てないのだ。自分が尊重すべきなのは、神聖なるフレームワークなのか、「我々の」アプリケーションなのか…。