Kodougu を comet 実装してみました。例によって FireFox 以外の動作はしません(IE や Opera でも表示は可能、一部操作もできてしまうがバグバグです)。ブラウザを二つ起動して、片方を操作するともう片方もリアルタイムに・・・。

試してみたい方は、こちらを参照してください。(英語のみ。)

近いうちに Kodougu のモデリング言語設計機能を紹介したいと考えています。がんばって実装しないとナー。

Posted by あかさた
trac に Kodougu を組み込むための trac macro を作成しました。All-In-One Trac v0.1.1(trac v0.9.5)で動作確認を行いました。英語の情報との格闘でしたが、作成自体は簡単でした。ただ、trac v0.10.x や v0.11.x 以降で動作するかは自信がありません。大きな流れで言うと、trac の wiki マクロは trac plugin に統合されていくようなので。

以下のように書くと、trac に Kodougu を組み込むことができます。数値は、ダイアグラムの ID です。

trac/wiki の記述例([]は全角になっています。)
[[Kodougu(2)]]

trac に Kodougu を組み込んだスクリーンショット
1176850434_20070418_02.png

「<<All-In-One Trac インストールフォルダ>>\python\share\trac\wiki-macros\Kodougu.py」のソースコード([]は全角になっています。)
import re

def execute(hdf, args, env):
	if not args:
		args = 'err'
	args = re.split('\s*,\s*', args)
	if re.search("[^0-9]+", args[0]):
		return '[Kodougu] Wrong Parameters! - ' + args[0]
	else:
		return ''

trac の Wiki マクロの作成も非常に簡単で、マクロ名.py の内部に execute 関数を実装するだけです。

これで、Kodougu と著名な(≒私が好きな)Web アプリケーションとの統合は完了しました。Kodougu もサーバーサイド(Ruby on Rails)はかなり出来上がってきたので、これからはクライアント(JavaScript)の開発に注力します。

Posted by あかさた
今日は早起きして pukiwiki(1.4.x 向け)で以下のように書くと、Kodougu が組み込まれるプラグインを作成しました。朝食までにプラグインの作成方法を勉強するつもりが、ホンチャンコードまで書けてしまいました。これぞ朝飯前・・・ですかね。(^^;

#kodougu(2)

pukiwiki に Kodougu を組み込んだスクリーンショット
1176841541_20070418.png

プラグイン「kodougu.inc.php」のコード(下記コードは[]が全角になっています。)
'
			. 'Kodougu is not available!';
	}
	else {
		return 'Kodougu is not available!';
	}
}
?>

pukiwiki のプラグイン開発は非常に簡単で、上記のようなコードを書いて plugin フォルダにコピーすればできてしまいます。後は trac 用の plugin を書きたいところです。

さて、Kodougu 1.0α1 公開まで後もう少し。がんばらねば。

Posted by あかさた
今日は未踏の千葉 PM とのミーティングに行ってきました。Kodougu については、細かな進捗というよりは、プロジェクトの根本的なリスクについて話し合ってきました。

話した内容は以下のとおりです。
・ 進捗
・ モデリング言語設計機能に関する実現方法と実現可能性について
・ プロジェクトというか、Kodougu が抱える根本的なリスク

進捗は・・・ぼちぼちでんなー、ということを話してました。(--; 実現可能性についてはさほど問題はなさそうという共通認識が PM と取れるようになってきました。ただし、仕様については割り切り重要。

Kodougu が抱えるリスクについてですが、指摘をまとめると、「Kodougu は一見するとモデリングツールっぽく使えるお絵かきツールに見えてしまうので、そうではない点を説明できる機能なり効果的なユースケースなりを示せるようにしてほしい」ということです。4 月末に中間発表があるので、そこである程度この問題点を解消したいと考えています。

今日発見したこと。
・ 千葉 PM 下 4 人の採択者のうち 2 人は私の家から結構近いところに住んでいる。(驚)

ローカルな話題でちょっと盛り上がってしまいました。(笑)

Posted by あかさた
Kodougu の表示が IE7 でおかしくなることを確認しました。IE6 では表示されるのに。orz

IE7 になって HTML のレンダリングエンジンが新しくなったらしく、このブログでも細かいところが、表示されなくなっています。Web アプリとしては、IE6 と IE7 を別物のブラウザとして考えて実装せよってことですかね。。。大変な世界だ。

Posted by あかさた
もうすぐ朝・・・か。二日連続徹夜・・・。orz

Kodougu を IE でも表示できるようにしました。こちらのエントリを参照してください。
# 表示だけで、操作は一切できません。

さて、IE で表示するにあたって、壁は二つありました。
(1) VML 描画
(2) Ajax では、別のドメインにアクセスできない(セキュリティのため)

(1) ですが、これは 30 分ほどでできました。もともと、アーキテクチャ的にさまざまなレンダリングエンジンを使うことを想定しているので、VML を増やしても特に問題は発生しません。テストはちゃんと書いていないので、後で書きます。

(2) ですが、Kodougu を Web アプリに組み込むときは、JavaScript を使っています。もともと、JavaScript でブラウザを判定してから、prototype.js の Ajax.Updater で SVG/VML を取得しようとしたのですが、Ajax ではドメインを越えてデータにアクセスすることができません。ちょっとトリッキーな方法で切り抜けてみました。(後で調べたところ、割と王道のようでしたが。)

コードとしては以下のとおりです。
[code: 

]

解説します。以下の URI は、JavaScript を返しますが、この中で SVG/VML の情報を保持した kodougu_diagram_html という変数を(JavaScript で)定義しています。
http://www.kodougu.net/rendering/diagram_javascript/1

以下の一行で、HTML に SVG/VML を埋め込んでいます。
$("test_kodougu").innerHTML = kodougu_diagram_html;

つまり、JavaScript はドメインを越えて情報を取得することはできませんが、JavaScript そのものは他のドメインから持ってこれるので、動的に必要な情報を含んだ JavaScript を返す API を作ったというわけです。

あー、疲れた。(--;

Posted by あかさた
Kodougu を既存の Web アプリケーション(今は私のブログ)に組み込むテストを行っています。Firefox であれば、下にモデリングツールが表示されると思います。(IE では何も表示されません。)
今できるのは、要素・関係線の作成、削除、移動だけで、要素名の変更もできません・・・。(しかも、まだバグバグです。^^;)



さて、それほどがんばらなくても Firefox 向けであれば、HTML に object タグを書くだけで既存の Web アプリに組み込めます。IE 向けは少し難しいかもしれません。IE では、VML を使うのですが、VML を使うときは HTML のヘッダにいくつかの情報を記述しなくてはならないため、既存の Web アプリに対する影響が大きいのです。

どうしたものか・・・。

Posted by あかさた
Kodougu の最新のスクリーンショットです。図上で要素と関係線の作成/削除/選択/移動を実現しました。図上で行う最低限の操作が実現されました。

1171357684_kodougu_20070213.png

動画はこちらにあります。(ちょっとカクカクしていますが・・・。)

ここまで、クライアント側(JavaScript)は 500 行弱、サーバ側(Rails)は 1500 行程度と、非常にコンパクトに実現できています。3月にはデモサイトを構築したいところですが、はてさて・・・?

Posted by あかさた
図上で要素の作成/選択/移動/削除を作成しました。現時点でのスクリーンショットは以下のとおりです。

2007/2/7 時点の Kodougu のスクリーンショット

ここまで、クライアント側(JavaScript)は 300 行弱。全機能を実装しても 1000 行程度に収まるんじゃないかと。サーバー(Ruby on Rails)側もまだ 1000 行前後だと思いますし。JavaScript + Ruby on Rails の組み合わせは恐ろしいほど生産性が高いですね。。。

FireFox 版 Kodougu は、3 月末にはリリースしたいと考えています。がんばらねば。

Posted by あかさた
2007/2 ~ 2007/4 の Kodougu の開発戦略をここに記述します。

○ モデリング機能開発
リスクは二つです。「マルチブラウザ対応」と「どれくらいの UI を実現するか」です。4 月末までにはベータ(機能拡張は基本的に終了)の状況にします。

・ マルチブラウザ対応
本プロジェクトでは、FireFox, IE を対象とします。

まず、4 月末までに FireFox 版を作成し、ブラウザ依存になる箇所(VML, SVG の実装依存の箇所とJavaScript の実装依存の箇所)を切り出し、マルチブラウザ対応の準備を完了します。

IE 対応は 5 月以降です。SVG の実装状況によっては、Safari や Opera も対象とする可能性はありますが、やはり 5 月以降です。

・ どれくらいの UI を実現するか
いわゆる Jude や EA のようなリッチな機能を完全にブラウザ上で実装することには限界があります。4 月末までにはブラウザ上で実装できる機能のうち、必要と思われるものを全て実装します。

○ モデリング言語設計機能開発
・ ノーテーション及びシンタックス
リスクは二つです。一つは、「どれくらい設定できれば十分なのか」、もう一つは「どのような UI が適切なのか」です。

現在は DB に直接 Ruby のコードを入れてこれを実現していますが、4 月末までに、メタモデリング機能の用途を明らかにして、これらのリスクの解決に着手している状態にします。

・ ストラクチャ
リスクは二つです。一つは、「メタモデリングに必要なストラクチャを十分に準備できるか」、もう一つは、「メタモデルの変更点を既存モデルにどのように反映させるか」、です。

4 月末の時点では、前者を解決し、後者の実装を開始したいと考えています。

・ セマンティクス
特にリスクはない(メタモデルの説明を文章や絵で説明できれば OK)ので、4 月末までにセマンティクスを記述する機能で欲しいものを列挙してから実装します。

○ そのほか
・ Web ページの構築
4 月末までには実施します。(できれば、3 月上旬には行いたい。)

・ 国際化
4 月末までは対象としません。5 月以降に国際化及び地域化(日本語、英語)を実施します。

○ 2007/5 ~ 2007/7
・ 積み残したリスクの解決
・ マルチブラウザ対応
・ 国際化
・ 安定化、リファクタリング
・ マニュアル等のドキュメント整備
・ 宣伝活動(?)
・ コミッタの募集
・ 要望の収集

Posted by あかさた