ひがやすを技術ブログ

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

Seasar2.3にこめたメッセージ

Seasar2.3から海外に向けてもリリースするようになりますが、私は全世界の開発者にこう聞いてみたい。


設定ファイルを書きたいのか、書きたくないのか。
DIコンテナで扱う情報は主に

  1. コンポーネントの依存関係を解決するもの
  2. 環境に依存するようなパラメータ(DataSourceの設定など)

にわかれますが、2は設定ファイルに書くべきですが、1は設定ファイルに書くのは、好ましくないと思っています。なぜなら、面倒で間違いがおきやすいからです。
EoDという言葉がありますが、複雑な仕組みをツールを使ってカバーするのは、本質的なEoDでは無いと思っています。本質的なEoDとは、仕組みそのものを簡単にすることでしょう。その上で、ツールが助けてくれる(間違いを指摘したり、補完してくれたり)ようになればさらにうれしい。
Seasar2.3ではEoD(Less Configuration)のための3つのポイントがあります。

  1. Configuration by exception
  2. Convention over Configuration
  3. Annotation

1は、適切なデフォルト値を用意しておいて、例外があれば、指定するという考え方。
2は、適切な規約を守っていれば、フレームワークのほうが自動的に設定をしてくれるという考え方。
3は、2にあわない場合に、設定ファイルではなく、ソースコードに設定を書くという技術。自分の経験上、XMLファイルに記述するのとAnnotationで記述するのを比べると、Annotationで記述したほうが分かりやすくなります。関連する情報が直ぐ近くにあるせいだと思います。ただし、あくまでも、2の補完であり、Annotationいっぱいは、XMLファイルに書くよりましですが、好ましくないと思っています。書けばそれだけ間違う可能性が出てくるためです。同様の理由で、XDocletXMLファイルよりはましだけど、好ましくないと考えています。
Seasar2.3では、この3つを使って、Less Configurationを実現しているわけです。アーキテクトが必要最小限の設定ファイルを用意しておけば、個々の開発者は設定は何もしなくて良いので、大規模開発にも向いています。
はっきりいって、コンポーネントの依存関係の情報をいちいち設定ファイルに書くのは、時代の流れにあっていないと思いますが、結論は、一年以内に出ることでしょう。
さらにこうも聞いてみたい。


Less Configurationが良いのか、XML地獄が良いのか。
海外に向けてもSeasar2.3のプレゼン資料を用意する予定です。