DBFlute、魂の1.0ポリシー

このように考えています。
DBFluteのコアユーザーの集いで、少人数ではありますが、
ユーザーの方々と一緒に話し合ってまとめたポリシーです。
(DBFluteJava版のみを前提としています)

【モジュール】
実績から多くの実業務に耐えられる品質になっていると考えられる。
DBFlute側の管理上において現時点では既知のバグは存在していない。
仕様上の割り切りは幾つか存在するが、利用者にとっては問題にならない、
もしくは、利用者が回避できる方法が別に存在するものである。

ここ数ヶ月は、ランタイムプログラム上のコアなロジックには触れず、
安定化を図っている。最近の修正は多くが自動生成ツール部分であり、
また、プラスアルファ的な機能の修正が主である。

JUnit単体テストは基本的なものでざっと1000を超え、
DBMS固有や環境固有のテストも 20 を超えるExampleプロジェクトで
再帰テストを行っている。手動でないとテストできないものも、
できる限りスクリプト化して、いつでも実行しやすい形にしている。

もちろん、卒業後も改善点があれば改善はしていくが、
利用側プログラムに影響のでる仕様変更は基本的にしない。
(やる場合は、1.1や2.0と大きくバージョンを上げる)
SchemaHTMLの大改善や環境改善など、1.1でいまのところ予定。
【ドキュメント】
DBFluteが提供するコアな機能のマニュアルドキュメントは、
一通り揃っている。(現時点でさらに微調整中)

o 紹介ドキュメント
o 環境構築、サポート情報など
o 設定系のリファレンス
o 自動生成ツール周り
o ConditionBean
o Behavior
o 外だしSQL

用意できないドキュメントは、限定的な状況での機能や、
DBFluteを装飾するプロモーション的なもので、
これらは後から準備する予定。
(現場フィット、初心者用導入や、一部の特徴的な機能に
フォーカスしたもの、ハンズオンなど教育系コンテンツ、
トピックなど)
1.0の後、しばらくはこれらドキュメントの整備に時間を費やす予定。

多くの利用者が日本人であるため、英語のドキュメントは
この時点では保留。卒業後に計画を立てて用意していく予定。
海外への展開は、Java8でコールバック実装がシンプルに
書けるようになることを前提に進めていく。

DBFluteは、Exampleプロジェクトが 20 以上存在するが、
それぞれどのような役割をもっているのかをドキュメント化。
Exampleのさらなる整備も1.0の後に時間を費やす予定。
【ライセンス】
DBFluteは、Apache Torque, S2Dao, Velocity の
ソースコードを一部利用・拡張しているが、
その旨をドキュメントやソースコード上にしっかり明記。

また、同梱しているライブラリのライセンスファイルを全て用意。
NOTICEファイルに一覧化して、ライセンス上の問題がないことを明確化。
【タイミング】
DBFluteという名が付きオープンソースとなってから丸6年、
その前の時代を含めると、およそ7年半くらいでしょうか。

特殊な概念に特殊な機能を備える DBFlute にとっては、
必要な年月であったと考えます。誰も DBFlute を知らなかった。
というか、DBFluteには他のツールにはない機能が満載。
スキルの高い低いに関係なく、その便利さがなかなか理解されない。
DBプログラミング周りのマニアックな問題領域へのアプローチ、
その背景を知らずして利用はできない。背景を伝えるのは至難の業。

現場の最適化に敏感なユーザーが着目してくれました。
使った人からの口コミで広がっていきました。
逆に言うと、使わないとわからない。広がりは遅いものです。
バックグラウンドがないため、派手なプロモーションもできない。
時間が必要でした。DBFluteという概念が受け入れられるための。

正直、今もその問題はつきまとう。恐らく今後もずっとの永遠の悩み。
ただ、DBFlute-0.4.x の時代のときに比べれば大違い。
DBFluteに詳しい、優秀なアーキテクトが増えました。
フレームワークは初期の習熟コストがかかります。
いかに後のスピードや安全性(リスク軽減)が得られるとしても、
直近のスピードが落ちることはなかなか許容されないのが世の常。

あらかじめ習熟しておいて、ある意味「辞書」のようにささっと
ディベロッパーに伝えられるアーキテクトがいてこそ、
「直近も後にも最速と言えるスピード」が出せるからです。

また、1.0に求める品質、というものにはとても厳しい姿勢を
貫いてきたつもりで、ようやく納得のいく品質になってきたと
思えるようになってきた。普段、他のツールや現場の作りに厳しい分、
DBFluteにも厳しい目を自ら持って来ることで、同じく厳しい目を
持った優秀なアーキテクトに受け入れられる品質を作り上げていく
ことができたのかなと。

ようやく、長年言われ続けて来た
「1.0であることのブランドイメージが必要だよっ」
っていうアドバイスに答えることができるのかなと。

そして、さらに先ほど書いたような永遠の悩みとさらに戦うでしょう。
現場は覚えること一杯ですから別に100%使いこなす必要はないですが、
「ある程度」というレベルでも、「現場で何人かは」というレベルでも、
DBFluteを使いこなせる人、やはりまだまだ少ないでしょう。