-Kvasirビルド

ビルドシステムおよびKvasirの構造そのものが私には高度すぎるので(決して揶揄ではなく)備忘しておく。

  • Maven2をインストール済み)
  • SVNリポジトリパスからディレクトリごとcheckout
  • ワーキングコピールートのbuild.batを実行
  • kvasir-development/component/kvasir-base/targetにkvasir-base.jarができる
  • 依存性をpom.xmlから調べると以下の通り
    • groupId:org.seasar.kvasir - artifactId:kvasir-util
    • groupId:net.skirnir.xom - artifactId:xom
    • groupId:net.skirnir.xom - artifactId:xom-tiger
  • 今のところ、どうブートストラップすればよいか不明。夜に横田さんに会うのでその時に聞くことにする。

今、考えていることは実装中のソフトウェア開発基盤に、Kvasirをマイクロカーネルとして用いることです。ジェロニモさんだったらGBeanServerだし、JBossにもそんなのたぶんあるんだよね(詳しく知らんし、調べる気も無い)。HiveMindなんかもそんな感じのようで、昔にはAvalon-Phenixというのがあったという記憶が。基本機能はホストするサブアプリケーションのブロック(多くの場合、「Component」と呼ばれる)のライフサイクル管理を行うだけのものです。依存性解決から始まって、起動-停止があり、インストール-アンインストールができることが要件。ちょっと前まではOSGiJMXに対応して自作しようかと思ったんだけど、もうね、こういうのゼロから作るの疲れちゃったんでw。Kvasirがそういう方向性も持ったブツを内包しているのであればそれだけ使おうかと。中心開発者はよく知ってる横田さん、本間さんでもあるし。今、未踏プロジェクト管理者は私だし。利用者もまだ少ないですからそれこそ2004年正月のS2のように、込み入った要望でも聞いてもらえるかなと。
Seasar2は既存のブートストラップの上に乗せて用いる、まさに「軽量」コンテナです。多くのケースではサーブレットだったり、ServletContextListenerだったりをブートストラップとして用いて使います。Kvasir-baseも今のところはそういう使い方ですが、VM直上で起動してそのうえにWEBコンテナを載せる仕組みにしていこうと思っています。VM-サーブレットコンテナ-Kvasir-Seasar2という順のスタックを、VM-Kvasir-Seasar2-WEBコンテナと入れ替えるつもりです(WEBコンテナはGrizzlyベースのUnServletを考えています)。Kvasir-baseとSeasar2の違いは、Kvasir-baseにはDIxAOP機能がなく、Seasar2にはライフサイクル管理がないので、組み合わせて使うと吉と思っています。
でだ、私は最近のデカいスタックが本当に好かん。フロントエンドからバックまで一貫にひとつのディストロで動くのはいいんだけど、スタック間の依存性などを注意深く作って、それこそディストロには細心の注意をはらってくれないかなと。アプリケーションを作る人間がスタックを選択すればいいと思うので、各層にわたって支配的なデカいブロックはアリガタ迷惑なんだな。私には。バカ対策もいいんだけど、それはフラッグシップなスタック例としてディストロを提供すればいいのであって、しかし一方ではその構成物ひとつひとつが取替え可能であってほしいわけです。このへん考え方はいろいろあるだろうけど、本当にバカ対策だけはいただけない。それは次のエントリで。