集いの後...

@DBFlute
皆様、お疲れ様でした。
4時間もお店にいました。すげーみんな体力ある!
DBFluteだけでなくその他のことも色々情報交換できたかな!?
こういう集いはとても貴重です。そして楽しく過ごせたのがなにより。

アッシジのBGMは本当にいい。
ビートルズホール&オーツ、スティービーワンダー、サンタナオルケスタ・デ・ラ・ルスなどなど
ちょっと話題になってたけど頭が回らなくて回答出来なかったこと:

外だしSQLのパスの指定について、
memberBhv.selectExampleMember(pmb, ...);
みたいな感じができればいいんじゃないかという話でしたが、
DBFluteの外だしSQLは、一つのSQLで複数の利用ができるように
していることが現状の仕様になっている大きな理由です。
一つのSQLでselectList()/selectEntity()/selectPage()など
戻り値の形式を変化させることができるようになっています。
一番わかりやすい例では、ページング検索を一つのSQLでカウント取得と
実データ取得をできるようにしているところです。一つのSQLで戻り値が
IntegerだったりListだったりとできるようにしています。
「SQLそのもの」と「呼び出し方」を疎にしているのがDBFluteの特徴です。
(S2Daoはこの二つが密になっています)

で、それならそれで

memberBhv.outsideSql()ってのとMemberBhv.PATH_selectXxxで
MemberBhvが二回出て来て冗長なんだけどって話ですが、
確かに論理的にはmemberBhv.outsideSql()っては要らなくて、
outsideSqlExecutor.selectList(MemberBhv.PATH_xxx);
でも良く、これなら冗長な部分はありませんが、
http://d.hatena.ne.jp/jflute/20080925#c1251748580
とほぼ同じ話で、「DBアクセスの入り口は全てBhvから」とアーキテクチャ
をシンプルに統一することを重視しました。

で、それならそれで

memberBhv.outsideSql().selectExampleMember().asList(pmb, entityType);
memberBhv.outsideSql().selectExampleMember().asEntity(pmb, entityType);
memberBhv.outsideSql().selectExampleMember().asPage(pmb, entityType);
memberBhv.outsideSql().selectExampleMember().asCursor(pmb, new Cursor(){});
memberBhv.outsideSql().selectExampleMember().dynamicBinding().asList(pmb, entityType);
memberBhv.outsideSql().updateExampleMember().execute(pmb);
memberBhv.outsideSql().call(pmb);

は、論理的には正確な感じでもありますが、
BehaviorQueryPath以外のSQLファイルの呼び出しをやろうとする場合、
別のやり方がもう一つ必要になります。やり方を増やすのはあまり
好ましくありません。少なくともDBFluteはそういうポリシーです。
逆に言うと、BehaviorQueryPathだけサポートならこれでも
良いのですが、外だしSQLは自由度が一番重要視されるため、
(逆にConditionBeanは堅いことが重要視される)
ユーザが自由にパス解釈して実行できるようにしています。

一点で論理的にスッキリしたやり方を追い続けると、鳥瞰したときに
実は複雑性が増しているのに気付くことがあったりします。
また、現場という人間臭い要因が絡むと、整然としているよりも
「ちょっと妥協した丁度よい適当なところ」というのを求めた方が
良いこともあるのかなぁと思っています。(今回の件がまさしくそれ)
逆に言えば、DBFluteが外だしSQLだけのフレームワークだったら
話はガラリと変わってくるでしょうね。

というのがまあ現状なんですけど、
ここまで説明しないといけないってのも将来のビジョンを
考えたときによろしくないという面もあります。
「何を優先するか?」
今色々考えているDBFluteの再検討項目に入れてもいいかも!?
(無論、再検討した上で今と同じかもしれませんけど、それはそれで
意義のあることなので)
あと、Ymirの話が盛り上がっていたので、
せっかくなので良く知らない人は、ぜひこちらの記事を
読んでみて下さい。
http://d.hatena.ne.jp/jflute/20090312/1236868861
> zer0-xy2さん
Google Groupよろしく!
何か細かいとこでも迷ったらメールで相談してね。
(俺のメアドは名刺に書いてあるはず)

> koyakさん
座席遠くてあんまり絡めなかったけど、楽しかったかな?
仕事めげずに頑張ってね。あとseasr-dotnet-MLサンキュー。

> Kanekoさん
目指せ二桁DBFluteプロジェクト。
もしくは二桁複数DB。

> aoki1210さん
初参加お疲れ様です。不思議な集いを経験できたでしょうか?
https://www.seasar.org/issues/browse/DBFLUTE-551
フィードバックありがとうございます!

> fujiiさん
遠いところお疲れ様です。
来年のカンファは何かしらやりたいですね。

> S_a_k_Uさん
初参加お疲れ様です。どうでしたか楽しめましたか?
DBFluteに触れることはあまり無いかもしれませんが、
今日お会いして、ああいつか何年後かでもS_a_k_Uさんに
DBFluteを使ってもらえる日が来るとうれしいなと思いました。
(それまでに恥ずかしくないものに仕上げたいと思います)

> hajimeniさん
ネタだけで1セッションいけそうですね

> r_ikedaさん
ちょっとDBFluteユーザの爆発力に圧倒されたかもしれませんが、
気が向いたときにぜひまたいらしてくださいね。
またカンファでぜひお会いしましょう!
さて、来週から本格的にドキュメントプロジェクト開始します。
また奮闘しますね。