DBFluteのサブ機能の扱いについて

ユーザのみなさんに、DBFluteのサブ機能について相談です。
(DBFluteユーザの集いのGoogleGroupの方で関連した
議論がありました。この件はブログに載っけます)

ここでいうサブ機能とは:
 o AlterCheck
 o SchemaSyncCheck
 o LoadDataReverse
といった、サブでありながら存在感の強いやつらです。

現状は、これらは何かDBFluteタスクの
一部機能として提供されています。

 o AlterCheck: ReplaceSchemaで動作
 o SchemaSyncCheck: Docタスクで動作
 o LoadDataReverse: Docタスクで動作

これには、理由が幾つかあります:

 A. その頃は、Manageタスクがなかった
  -> バッチファイルは増やしたくないという前提
 B. Windowsだとコマンドラインしづらい
  -> Manageタスクは ctrl + shift + R で叩けない
 C. 時々利用なので、既存タスクの一部でいいかなと
  -> SchemaSyncCheck, LoadDataReverse

さらに AlterCheck は、実際にDBに対してReplaceをするので、
それを意識させたいという思いもあり ReplaceSchema の一部機能と。
SavePreviousするときに、フラグファイルを作成して実行する
必要があり、これがなんともかっこわるい!? ですが、
SavePreviousは気軽に実行できる必要性はないし、
いつかEMechaで右クリックからできるようにできればなと。
これらの機能を提供し始めて、少し最初の想定と違うのは...

AlterCheckはミラクル機能なので、もっとわかりやすい方がいいかも!?

画面から登録したデータをテストデータにって感じで、
LoadDataReverseがわりと頻繁に利用できる。
でも、Docで有効にしっぱなしだと、毎回毎回エクセルファイルが
SVNのコミット対象になってうっとおしい。

SchemaSyncCheckも、基本的にAlterCheckやっていれば
あまりに使わないですが、そうでない環境では定期利用したい!?

そして、紺種リリース予定の0.9.9.7Bですが、これら機能を
Manage タスクで独立して実行できるようにしました。
 sn manage.sh save-previous
 sn manage.sh alter-check
 sh manage.sh load-data-reverse
 sh manage.sh schema-sync-check
細かく制御したい現場でどうにでもできるようにと。
(これを呼ぶバッチを作ってしまえばOK)

ただ、DBFluteのメインの「使い方」というところで少し考え直す
タイミングかなと。というか、もう今このタイミングしかないと。

なんといっても、サブ機能という感じで作った機能が、
かなり便利でインパクトの強い機能となってしまったと。
DBFluteのプロモーション的にも重要な位置づけになっています。
なので、わかりやすさと使いやすさがそれなりに求められると。
(マイナー機能なら全然今のままで構わないですけど)
ちょっといろいろな選択肢があるかなと:


A. いまのまま (ReplaceSchemaでの実行メイン)
 -> やはりみんなWindowsだから
 -> 既にユーザもいるし、ダサくても新しいタスクにはしない
 -> Manageはコアユーザ向け
 -> DBがReplaceされるんだよ意識を残す

B. Manageタスクおんりー (ReplaceSchemaでの実行廃止)
 -> 入り口は別の方が新しい人にもわかりやすい!?
 -> サブ機能は全部コマンドの方がわかりやすい!?
 -> プロモーション的にコマンドの方がかっこいい!?
 -> コマンドにしていれば自由が利く


A. いまのまま (Docでの実行メイン)
B. Manageタスクおんりー (Docから完全独立)
 -> 定常利用するならバッチ作って

いまの気持ちとしては、
思いきって「B」にしちゃおうかなと思っています。

DocやReplaceSchema:
 -> DBFluteの通常業務

Manageタスク (AlterCheck, LoadDateReverse):
 -> 時々使うサブ業務

というような位置づけにしてしまった方が
理解してもらいやすいのかなと。
(今後のDBFluteのさらなる展開も考えて)

ちょっと、分析中でまだまだ色々と考えられるのですが、
もしユーザーの方で意見のある方がいれば声を聞きたいと。