Kodougu の機能を追加し、サーバーにアップロードしました。ぜひ、いろいろといじってみてください。

新機能・改善項目一覧
(1) 属性、操作を編集可能にした。
(2) パッケージを追加した。ただし、パッケージの中に要素を追加する機能は追加していない。
(3) 図上の要素のサイズ変更をできるようにした
(4) キャッシュの適用で図の読み込みが軽くなった
(5) 図のサイズを可変にした(Firefox)

最新の Kodougu(IE/Firefox で動作。Firefox 推奨。)


既知のバグ
(1) 属性、操作の追加、編集が図に反映されないことがある
回避策:クラス名を変更すると反映される
原因:描画情報のキャッシュが、属性、操作編集時に消去されない
状態:解決(2007/7/19)

(2) 図を表示したときに関係線がずれて描画される
回避策:図上の要素を少し移動すると、再描画されて正しい位置に表示されるようになる
原因:関係線は要素の中心と中心の間に引かれるが、中心点の計算時に要素のサイズ変更を反映しないことがある
状態:解決(2007/7/19)※ ただし、図の読み込みが少し遅くなる副作用があるため、改善中。

(3) 属性、操作編集のユーザビリティ(画面遷移)が非常に悪い
がんばって修正します。。。
状態:改善(2007/7/19)

バグ報告等は当面はこのブログのコメントにお願いします。

■ 2007/7/17 22:59 追記
バグ報告を追記します。

(4) IE で、他のユーザーが図上で操作を行うと、スクロールバーが初期位置に戻ってしまう(Firefox では発生しない。)
回避策:なし
原因:図の再描画時に図のサイズが小さくなり、スクロールバーが消えてしまうため。
状態:解決(2007/7/19)

Posted by あかさた
最近は、Kodougu のモデリング言語設計機能の、多重度が多のメタ属性に関する実装を行っています。ちょっとわかりにくいですが、UML のクラス図に登場する属性や操作を実現するための構造を作っているという感じです。

スクリーンショット(単なる画像です。)
1183706851_20070706.png

なぜか、属性が中央寄せになってる! orz

こういうのは、普通のモデリング言語として実装する場合は簡単なのですが、メタモデリング言語として実装しようと思うと、いろいろと難しくなります。主に表記の自由度に関する難しさで、メタモデル上は多重度多のメタ属性として表現できても、パッケージに含まれるクラスや、クラスに含まれる属性や操作のように、メタモデル的には似たような構造でも表記はまったく異なる場合があります。モデリング言語設計機能の開発には、極力このような自由度を保持しつつ、実装が複雑にならないよう気をつけて実装しなくてはなりません。

・・・愚痴モードですが。(^^;

再来週くらいにはこの実装をアップロードしたいところですが・・・。

Posted by あかさた
ようやく・・・というか、Kodougu の概要が未踏の公募結果のページに載りました。所属が前の会社のままだったり、書いてあることがちょっと胡散臭かったりしますが・・・。(^^;

ITPro の記事によると、Safari 3 のベータ晩が公開されていますが、Windows にも対応しているそうです。日本語など問題もあるようですが、Kodougu の英語版のみテスト対象に加えても面白いかもしれません。つーか、テスト対象に加えます。
# dojo.gfx とかまず動かなさそうですけど。

Posted by あかさた
2006 年度下期未踏ソフトウェア創造事業で開発している Web 上で動作するモデリングツール Kodougu の近況を書いてみます。

最新の Kodougu。IE/FireFox で動作。


(1) IE に対応
動作がかなり重い、まだバグバグであるという問題はありますが、これまでは FireFox 1.5/2.0 のみだった動作環境に IE6/7 が追加されました。未踏開発期間中(2006/11 ~ 2007/8 末まで)では、Opera 9.2 への対応を考えていますが、IE/FireFox が基本的なプラットフォームとなります。

(2) 操作性の改善
図上で要素を選択して Delete キーを押すと要素を削除できますが、これまでは、キーを押しても動作したりし無かったりという問題がありました。現在は解決されています。また、Shift キーを押して要素を選択すると複数個の要素が選択できます。

(3) サーバのパフォーマンス改善
図のページを開く際、サーバサイドでは、秒間 2 リクエストも処理できなかった(つまり、一つのサーバで秒間 2 枚図を開けなかった)のですが、秒間 5 ~ 6 枚はいけるようになりました。

(4) デモサイトの作成
現在作成中です。以下からアクセスできますが、現在は英語のみ、いつデータが消されるかわからない、かなりバグバグという問題があるので注意してください。

Kodougu.net(現在、英語のみ)
http://www.kodougu.net/

Posted by あかさた
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 あかさた