ひがやすを技術ブログ

電通国際情報サービスのプログラマ

iRule

暗黙的な規約は直感的ではない

Seasar2では、規約はドキュメントに記載されているし、デプロイされた状態もブラウザから確認できます。XMLで書いたものと同じ情報は取得できるのです。つまりアプリケーションの状態は視覚化できる。
私は、設定だけでなく、コードもできる限り書かないほうが良いと思っている派です。それは、早く開発するためです。
設定と言うのはコードが形を変えただけだから、設定は書いたほうが良いけど、コードは書かないほうが良いというのは、矛盾している気がします。宣言的に書くのは良いけど、ロジックは書かないほうがよいというなら、合意します。
規約と言うのは暗黙的ではないのです。必ず最初はどこかに宣言されています。例えば、Teedaの場合、HTMLのタグのidにempNameと書かれているとします。これは、このタグは論理的な名前であるempNameだよと宣言されているわけです。
これが、PageクラスのempNameプロパティと結びついているのは規約ですが、Dolteng(EclipseのPlugin)を使えば、HTML上のタグとPageクラスのプロパティが結びついていることが明示的にグラフィックで表示されます。
いまどきの規約は暗黙的ではありません。宣言的で視覚化されているのです。
もう1つ書いておくと、明示的に書いた設定は、どうしても人によって書き方がばらばらになってしまいますが、規約を使った場合、すべてのルールが統一されます。これも大きなメリットです。
これもまた、規約と言う言葉が悪いのでしょう。
今後、Seasarプロジェクトでは、規約のことをiRule(Intelligent Rule):「楽に開発するための知性的なルール」と呼ぶことを提案したいと思います。
追記:「なぜスクリプト言語はそれ(規約ベース)でよいのか」
Rubyは宣言的な記述ができるから、XMLなどの設定ファイルはいらない」これには同意します。ただし、だからスクリプト言語は規約ベースでもよいというのは、矛盾しているような気がします。「それ」が規約ベースをさしていなかったらごめんなさい。暗黙的な規約は良くない形式化したほうがよいというなら、Rubyも設定情報をコードで形式的に書くべきだと言う流れになるのではないでしょうか。
追記2:形式(ビジュアル)化が重要だと言うのは同意します。ただ、その手段が設定ファイルに書くというのは、あまり同意できません。実際に昔(Seasar2.2時代)うちでやったプロジェクトで、XMLを書き間違えて悩む人がいっぱいいたので。そんな悩める人たちを見て、Seasar2.3で自動登録の仕組みを作ったのです。そして、デプロイにストレスを感じている人を見て、2.4でHOT deployの仕組みを作ったのです。でも、どのようにデプロイされているか分からないと悩んでいる人がいたので、ブラウザからデプロイ状況をモニタリングする機能を追加したのです。
追記3:去年は、何か書くと2chがうるさかったので、特に後半は、ほとんどスルーで、当り障りのないことしか書いていなかったんですが、今年はそんな態度を改め、ほんの少しでも世の中のためになるかもしれないので、できる限り自分の意見を書いていきたいと思います。
追記4:そのうちSeasar+JSUG合同勉強会とかできたらいいなぁと思いつつ。
よんでいただければ喜んで参加します。