JSUML(ä»®)

id:mopemopeさんに興味を持って頂けたようなので、今考えていることを思いつくままに書き出してみます。

作りたいツール

JSUML(仮称)

Webブラウザ上でクラス図が編集、保存、表示できるツール
できればWikiに組み込みたい
プロトタイプはこちら
http://www.nulab.co.jp/~agata/freedesign/index.html

同種(?)のツールはこちら
ajaxio : http://jameslab.moveable.com/ajaxio/

JSGEN(仮称)

Webブラウザ上でER図が編集、保存、表示できて、その情報を元に、コードジェネレートが可能なツール(id:mopemopeさんより)

イメージはこれの編集出来る版
http://www.turbogears.org/preview/docs/toolbox/modeldesigner.html

逆算して、上記ツールを実現するために必要なものをざっくり洗い出してみます。

JSUML/JSGENで共通に必要なもの(必須)

1.グラフィックライブラリ
 グラフィックを扱えるJavaScriptライブラリ
2.ドラッグ&ドロップライブラリ
 ドラッグイベントをうまく扱えるライブラリ

    • ドラッグして移動
    • 選択状態
    • 拡大縮小
    • ドロップ時のターゲットとソース

3.GEFライブラリ
 Eclipse GEFのようなフレームワーク・ライブラリ

    • この部分が一番見えていないところ、Eclipse GEFや同種のライブラリを調査したい。
    • オブジェクトとか、コネクタとか、ツールボックスとか

4.オブジェクトシリアライズ
 JavaScriptのモデルをシリアライズできるライブラリ

    • JSON形式
    • オブジェクト間の関連や元のクラス情報も保持されて、そのまま復元できたほうが良い。単純なJSONの場合、そのあたりをアプリで復元してやる必要が出てくるため。

JSUML/JSGENで共通に必要なもの(任意)

5.情報をDBなどに保存するための仕組み

    • HTTPXMLRequestライブラリ

JSGENで共通に必要なもの

6.テンプレートライブラリ
 JavaScriptのモデルからコードジェネレートするためのライブラリ(JSGENで必要)
 (テンプレートエンジン?もしかするとJavaScriptでなくても良い?)

今考えている実現の方法

1.グラフィックライブラリ
 wz_jsgraphics.jsを検討中。id:brazilさんがなんかおすすめいっていたけど失念。ioajaxも見てみる。
2.ドラッグ&ドロップライブラリ
 スクラッチか?。プロトタイプはwz_dragdrop.jsで作成しています。wz_dragdrop.jsはちょっと古いライブラリで、今見るとAPIとかがあまり洗練されていないような気がします。Ricoとかも見てみましたが、ちょっと違う感じ。無理やり使うよりは、スクラッチのほうが融通が利きそうな気がしています。良いライブラリがあれば、できればそれを使いたいところなんです。
3.GEFライブラリ
 スクラッチ。
4.オブジェクトシリアライズ
 json.jsを利用。関連と元クラスの復元の部分のみ作成
5.情報をDBなどに保存するための仕組み
 prototype.js。HTTPXMLRequestを使わなくても、ひとまずPOSTでも問題ないかも
6.テンプレートライブラリ
 何か色々ありそうですが、調べていません。

その他、こんなライブラリあるよ、これ漏れてない?等々、ご意見いただければ嬉しいです。