2008年6月25日水曜日

rocketstarterとsqld4rが共に0.0.2にバージョンアップしました

バージョンは0.0.2ですが、とりあえず自分のやりたい事は実装できたので、今後はメンテナンスに移ります。(と言っても、まともにテストしてないので、バグバグになりそうですが…)

現バージョンで実現可能となった運用スタイル

というか、これがやりたいための両プロジェクトだったわけで。

  1. 先にrocketstarter --initとsqld4r --initを使って、設定ファイルとプラグインリスト、コマンドリストをまとめておく。これにはちょっと時間がかかるかも。(自分の中のベストを探すのに時間がかかる)
  2. どんなものを作ろうかアイデアをまとめる。頭の中でまとめてもいいけど、複雑なものならテキストファイルやマインドマップでもいいよね。
  3. ある程度アイデアがまとまったら、SQLDesignerを使ってデータ構造を考える
  4. 考えに詰まったり、飽きたりしたら、Rocket-starterを使ってプロジェクトを起こす。この時はgitを使う。
  5. そのままSqld4rにSQLDesignerのXMLを食わせて、modelとmigrationファイルを生成。そのままMySQLの中にデータベースとテーブルも作っちゃう。
  6. 細かいバリデートとか、チェック関係はとりあえず置いておいて、やりたいことだけは動作するアプリケーションを作っちゃう(自分的には、ここに勢いが必要。特にプライベートプロジェクトの場合) デザイン性なんてデザインもオープンソース化「Open Designs」とか管理画面用のフリーテンプレートが公開されているあたりでいいじゃん。
  7. とりあえず、α版として公開しちゃう。
  8. 身内以外からはあまり反応がないだろうから、バリデートとか見た目を直す。(やる気があれば)
  9. 反応が良ければ、より洗練された構造に作り替える。

今までもSQLDesignerとか他の同様なツールとか頭の中で、データ構造(ひいてはデータベースの構造)をまとめるという行程はあったと思うんだけど、実はこの時点で、modelとかmigrationファイルの内容はまとまっているはずで、modelファイルとかmigrationファイルにその構造を「書き写す」というのは、面倒な作業以外の何者でもなかった。(必要な作業ではあるんだけど)

あと、subversionなどでRailsのファイルを管理する場合、リポジトリを作ったり、いらないファイルを消したりするのも、コツを掴むまでは面倒な作業だった。

Rocket-starterとSqld4rを使うと、この作業が(SQLDesignerのXMLファイルと設定ファイル類が揃っていれば)2コマンド、3分程度で完了する。プラグインを入れないなら、数十秒で終わる。

結局Rocket-starterとSqld4rの存在意義は、実際に動くまでのものがどこまで早くできるかに集約できると思う。

動かないと評価もされないし、自分的には興味が他に移っちゃって、完成もしない。

自分の話だけをすれば、アイデアはそこそこ持っていて、そのうち何個かはSQLDesigner上でデータ構造まではある程度できている。でも、「とりあえず動くものを作った」まで行けるのはかなり少ない。てか、ほとんど無い。

なんで動くものが少ないのか、というと、masuidriveさんもアジャイルな環境作り - そんなに急いでどこへ行く で言ってるけど、コーディングにかかるまでがメンドクサイからだと思う。

rocketstarterとsqld4r、それとgit(失敗した時のリスク回避用)を使うと、コーディングに着手するまでが劇的に早くなるので、熱が冷める前に動くものが作れるんじゃないかなぁと、自分に期待しています。(がんばれオレ)

あとやりたいのは、(多分個人の趣味も絡んできそうですが)最初からインストールしておいて定型作業を行うだけで、作業効率がアップする(またはしそうな)gemなりプラグインを、有識者から意見頂いてまとめてしまえば、アイデアを形にするまでが非常に短くなるのではないかなぁと思っておりますです。

たとえば、anntate_modelsとかgettext関係とか。

Rocket-starterのバージョンアップ内容

  • よく使うプラグインの自動インストールプ用ラグインリストについて、フォーマットなどを示したテンプレートファイルを用意しました(--init)
  • config/database.yml内のデータベース用パスワードの上書きするオプションを付けました(--dbpassword)
  • 最後にrake db:create:allを実行し、(主にMySQL内などに)config/database.yml内で使われるdeveropment/test/productionの3つのデータベースを作るためのオプションを付けました(--createdb)

Sqld4rのバージョンアップ内容

  • SQLDesigner上でPKもしくはリレーションを貼っているFKカラムについては、デーダベース上にインデックスを張るためのmigrationファイルを自動生成するようにしました。これはテーブル定義のmigrationファイルとは別に生成します。(--skip-indexだが、0.0.1で実装し忘れていたもの)
  • 最後に任意のシェルコマンド(rakeなどを想定)を実行できるように、ファイルにコマンドを書いておけば実行できるようにしました(--command_list及び--skip_command_list)
  • 最後に実行されるシェルコマンドのリストについて、フォーマットなどを示したテンプレートファイルを用意しました。(--init)
  • modelファイルやmigrationファイルの生成元となったSQLDesignerのXMLファイルを、特定パスにコピーして保存できるオプションを付けました(--save)
Rocket-starter/Sqld4r共にテストファイルが無いので、(もはやBDDでも無いですが)rspecの勉強がてらにテストを書くかもしれません。

あーそういえば、SQLDesigner上のカラムに長さ(VCHAR(20)とか)を付けても、sqld4r側ではキレイに無視してますな。これも付けるかも。(でも、ちょと面倒)

あと、NOT NULLや文字の長さ、ユニークな値かどうかも、SQLDesignerを元にある程度modelファイルを生成できるかなぁと思ったり。

0 件のコメント: