トップ «前の日記(2008/05/16(Fri)) 最新 次の日記(2008/05/24(Sat))» 編集

ゆきのぶ日記


2008/05/22(Thu) [長年日記]

[jiemamy]第一回 Jiemamyインサイド

Java も DB もあまり詳しくなく、ER 図で DB を設計した事なんてないけど、楽しそうだったので、

Jiemamyインサイド for contributors - 都元ダイスケ IT-PRESS

に行ってきた。

今回は第一回なので、あまり予備知識はいらないと言う話を聞いていたような気がしたけど、最初からなかなかコアな話だった。

少し遅れてしまったことあってかか、最初は何の話をしているのか不明だったけど、たぶん Model と言うのが ER 図における GUI パーツなんだろうと理解してからは、スムーズに飲み込めた。

  • C++ で Win32 GUI アプリケーションを作っていた頃を激しく思い出すことができた。あの頃、GUI 上の表現と内部データをいかにスムーズに同期させるかは、大きな問題だった。
  • MFC ライブラリや VCL ライブラリによって C++ のクラスとして実装された Windows コントロールの数々は、外から見る限りにおいては、その問題を見事に解決していたと思う。
    • VCL だと CheckBox1->Ckecked = true; とかすると GUI の状態が変化したし、CheckBox1->Ckecked を参照すれば常に GUI の状態と一致した値を取得することができた。単なる bool 値ではなく、イベントとのセットになっているものだった。
    • Jiemamy でも同様の問題を抱えているようだった。setter/getter をちゃんと作れば解決できる問題ではあるんだけど、setter/getter の数が多くなるし、Collection 中の特定の要素だけを変更する場合においてはさらに面倒になり、あまり美しくない。
    • 解決策としては、VCL ライブラリの TListView 型や TTreeView 型の実装を参考にするのが良いんじゃないかと思った。ソースは Pascal だったと思うので読んでないけど、たぶん TListItem や TTreeNode 型は自分が所属する TListView や TTreeView に対してイベントを通知する機構を持っているんだろう。
    • 具体的には、Collection に対して Proxy パターンを適用して、ラッパを作るようなイメージ。ウマくいくかどうかは、やってみないと判らないけど。

(他のことは後で書くかも知れない)