DBFlute -- 2007から2008へ


【2007年のDBFlute

実践で揉まれに揉まれて作りこみをした年だったと言えるでしょう。
利用して下さった方々、本当にありがとうございました。


【2008年のDBFlute

「皆に使ってもらうための環境整備の年」としたいと思います。
それはドキュメント整備だったりPluginサポートだったり宣伝だったりと様々ですが、
それらが充実したあかつきには「SandBox卒業」と...

DBFluteは世間の流れからしたら、非常にマイペースなプロダクトかもしれません。
それは作者の自分がそうだからなのかもしれません。
あまり世間の流れを気にしてません(無論ちゃんと追っかけてはいますけどね(^^)。

それよりも、とにかく今のつらい開発現場を少しでも楽にしたい、という気持ちがあります。
それを解決する手段は幾つもあるかと思います。
営業的な面で見積もりの精度をもっと挙げるとか、
クリティカルパス分析やリスク分析を徹底するなどマネジメントに力を入れるとか、
社内教育でプログラマのスキルを底上げするとか、その他いろいろ...
それらは全てしっかりやらなければならないことには変わりませんが、
DBFluteがその人たちの力になる「ツール」として活躍できればと考えています。
(「その人たち」の中には自分もいるわけですし...)




【2008年の具体的なやること】

A. ドキュメント整備

ちゃんとしたHTMLでのドキュメントを作成していきます。
^^^^^^^^^^^^
内容的にもしっかり開発プロジェクトで利用できるようなものにしていきたいと思います。
昨年の反省ですが、「S2Daoの知識が前提」みたいな感じで切り出すことが多かったのですが、
現場のプログラマはほとんどS2Daoを知りません。依存しないようにしっかり書いていきます。

また、「プログラミング自体がほとんど初心者」というプログラマも多いです。
読んで勉強(教育)になるドキュメントというのを心がけていきたいです。


B. EMechaの充実

これです。これがどれだけできるかで、ユーザの利用し易さが変わります。
(今はDBFluteダウンロード時にプログレッシブバーも出てこない...m_m)

やはりEメカニズムがないと、3オクターブ目のミがとても出しづらいですからね。


C. Exampleの充実

やはり、コードを見て学ぶ人も多いことでしょう。
Exampleはマーケティング的にも非常に重要な位置づけを担います。


D. Java版とC#版の機能差を埋める

こないだ新C#版を出しましたが、やはりJava版の品質にはまだまだ追い付いていません。
「.NETでもDBFlute」を目指してやっていきます。
今年でっかいプロジェクトで利用されそうなので、それに合わせてやっていきます。


E. ConditionBeanで3階層上の親テーブルを結合して取得

今は2階層という制約があるのですが、これを外したいと考えます。

今まででも実現は難しくなかったのですが、
S2Daoマッピングでパフォーマンス劣化の可能性があるため踏み切っていませんでした。
しかし、S2Dao-1.0.47で、パフォーマンス向上のための内部的な仕組みを変えたので、
劣化させずに実現出来そうな感じです。

内部的には、Select句の生成もS2Daoに任せずにConditionBeanで生成するような形になります。
但し、ちょっと色々壁がありそうな予感はしています。。。。。
(無限が一番良いに決まっていますが、+1階層(3階層)までっていう風になるかも)
 → 過去の自分へ
  既に無限階層になりましたよ by 2008年終わりの自分

F. 複数DB対応を簡単に

今は厳密には複数DB対応していません。
ただ、やろうと思えば、2つのDBFluteプロジェクトを作ってしまえば簡単です。
しかし、allcommonが重複するなど、ちょっと格好悪いのですね。
それを、1つのDBFluteプロジェクトでスマートにできるようにしたいと思います。
 → 過去の自分へ
  2つのDBFluteクライアントのExample充実で代替 by 2008年終わりの自分

G. Java版でEntityのマッピングでノンリフレクション

実はC#版にあってJava版にない機能が一つあります。
「Entityのマッピングでノンリフレクション」という機能です。

Entityのマッピングは、通常リフレクションで値を設定しますが、
C#版は実はリフレクション使ってません。
DBFluteは事前にメタ情報を取得するわけですから、実はリフレクションを使う必要がないのです。
マッピングするSetter記述を自動生成して、それを利用して値を設定しています。
(外だしSQLは対象外です)

1.0.47でのパフォーマンス改善ほどではありませんが、これもパフォーマンス向上します。
(実際に計測に協力して下さった方に、パフォーマンス向上しているのを確認して頂きました)

C#版で実験的に適用したのですが、非常に良さそうなのでJava版にも移植したいと考えています。
(やはり、今でも「O/Rマッパは遅い」と主張する人もいますし...)
 → 過去の自分へ
  完成してかなりパフォーマンスよくなったよ by 2008年終わりの自分

H. 普段のBUG対応

もちろん、やります。