SeasarCon2009White: CubbyとMavenを使った開発のまとめスレ

- Cubbyの特徴
    6390行、小さい。Jarは197KB
    CoolなURI!

- Cubby1.0は2年前に使われていた
    JSPは嫌われてたので、JSP2.0になって良くなったのにみんな使ってない
        ロストテクノロジー化していた
    使いまくりたかった

- 実績はそこそこあるよ

- CubbyとStruts1.3との違い
    脳内変換不要なカスタムタグ
        基本のHTML記法をベースとして、名前空間とか独自属性をちょっと追加するだけ
    DynamicAttribute
        いちいちTLDに宣言しなくても簡単に属性を追加できる
    設定ファイルレス
        全てActionに集約されている
        struts-config.xmlのメリットってなんだっけ?
            一元管理
            Action上で柔軟に遷移先を管理できる
                でもそんなことはそんなにないよね。
        @Validation
            rulesはタイプセーフじゃないのかぁ
        @Path
            省略もできるけど、明示的につける方がわかりやすいと思う
            パラメタマッチングで正規表現が使える
                適当に作ったけど、JSR311(RESTのやつ)とだいたい同じになってた

- Cubby2.0紹介
    本日(3/14)リリース 2.0-beta1
    DIContainerに非依存
        Provider方式で疎結合化
            Spring,EJB,Slimは今後サポート予定
    内部構造をリストラクチャ
        公開パッケージと非公開パッケージ(internal)の明確化
        モジューラブルな設計
            各種Providerで自由にカスタマイズできる
            例) JsonProvider
                日付を使えるようにしたいとかで、Jsonライブラリを入れ替えたいことがあるんじゃないか。
                というときにProviderを実装した変更すればok
        public field
            S2を選択した場合は使用可能

- CubbyとMaven2を使った開発のTips集
    Cubbyのポリシ
        フレームワークでがんばりすぎない
        アプリ開発者で創意工夫すべき
    基底クラスがあると便利
        AbstractAction
        AbstractValidationRule
    ビューを部品化しよう
        以下の2つがおすすめ
            JSTLのインポートタグ(<c:import>)
                パラメータが文字列しかできない
                属性とかの必須指定とかができない
                シンプルなものはこっち
            タグファイル(<tag:hoge>)
                リッチなものはこっち
        クライアントサイドテンプレートが今後来る(縣氏談)
            jTemplatesとか。まだイケてないけど。
    Maven2使おうよ
        Cubby2のアーキタイププラグインがある
            #これはすごい!
            #ひな形に残念なスペルミスが・・・「Cuuby」
        MavenとEclipseの連携
            mvn eclipse:clean eclipse:eclipse がおすすめ
                eclipse:cleanにしないと、依存ライブラリ追加時にうまくいかないことがある。
                WTPの問題とか
                    #もしかして、例のWTPエラーが解決する?
            m2eclipse
                最近ある企業がコミッタを囲って作ってるので、安定してきた
        リリースビルドの自動化
            mavenのprofileという機能を使ってリソースを置き換えるのがおすすめ
            CubbyのArchetypeプラグインで本番用プロファイルが作られる
                $ mvn package -Pproduction
            CI用のプロファイルを作って切り替えてもいい