Quantcast
Channel: IT勉強宴会blog
Viewing all articles
Browse latest Browse all 111

2011-04-22(金)XEAD Driver公開記念企画の内容

$
0
0
ついに、2011.04.11 XEAD Driverの正式版が公開されました。それを記念して

【渡辺さんに目の前でシステムを作ってもらっちゃおう!】

というちょっと無茶な企画を行いました。初めて参加して頂いた4名を含む16名にお越しいただきました。本当にありがとうございました。

渡辺氏が無料で公開されている販売管理のCONCEPTWARE(コンセプトウェア)をMicrosoftのAzureというクラウドで実装された方がわざわざ東京から来てくださいました。

■司会 佐野初夫

まずはXEADが前提とする三要素分析法という渡辺幸三氏の設計手法について簡単に15分ほどで説明しました。その後、どういうシステムを作って欲しいかを聞いていきました。

多少無理やりではありましたが、5つほど挙がったなかで、2つに絞って多数決で決めました。

1.手配師支援システム
土建業、アルバイトやコンパニオンまで、人を手配するという業務を支援するシステム

2.燃焼時間判定システム
建物が万一火災になった時に何時間程度で燃えてしまうかを計算するシステム
今はやりの(?)原発関連で必要なロジックだそうです

たった1票の僅差でしたが、手配師支援システムになりました

■システム設計 渡辺幸三氏

提案者も具体的な業務イメージがあるわけではないという事がわかってしまったので(笑)、参加者みんなで合意形成しながら検討を行いました。

1.業務フロー
「三要素」の中には業務フローは入っていません。なぜなら設計対象のシステム境界を決めるために業務フローがあるためです。今から設計する対象を決めるフェーズになります。

渡辺氏の著作では、DFD(DataFlowDiagram)と呼ばれていますがIBMなどが今でも使っている表記法とは大きく異なります。従来のDFDは階層化を行い最終的に入力と出力が1本になるまで詳細化を行います。三要素分析法はあくまでシステム境界を明確にするためですので、最上位の段階しかつくりません。また、イベントが発生するタイミングを表す事が出来るのも特徴です。



参加者と会話しながら、徐々に形になっていく手法は流石でした。顧客からの引き合いがあった後、手配する「人」を探すのですが、その探すための条件(属性)がシステムの肝になることが徐々にわかってきました。

時間の関係もあるので、作業者の属性周りに絞ってデータモデルを作る事になりました

2.データモデル
いよいよ設計です。ホワイトボードのコピーは何度も書き直した後の姿です。三要素分析法のデータモデルは、ジェームズマーチンが発案したIE手法を元にして、データ項目を横に並べる事が特徴です。ホワイトボードの写真をみてもらうと、項目の下に実際のデータサンプルがずらずらと書かれている事がわかると思います。これがデータ項目を横に並べた効果の一つです。



アタマが良い人は項目名という抽象的なもので理解出来るのでしょうが、大多数の方(特にお客様)にとっては具体的なサンプルがないと理解出来ないでしょう。三要素分析法以外の方法論で実データを2件以上記入出来る形式はありません。

本来なら、XEAD Modelerを使って三要素の残りの「業務モデル」と「機能モデル」を設計するのですが、時間の関係で省略します。XEAD Driverでテーブル定義を行います。プロジェクターに映しながら画面設計をされました。

3.XEAD Driver
(1)テーブル定義
フィールドIDとフィールド名を入力すると、あとはデータタイプとキーの指定程度で終わりです。
今回は、次の3テーブルだけを定義されました。
キー          用途
・作業者     作業者No       氏名・住所など
・作業者属性  作業者No+属性ID  強度(属性のレベル)
・属性       属性ID         男女やEXCELが出来るなどと、強度の範囲

作業者属性テーブルの「強度」は拡張データタイプに「区分ID」を指定し、区分として「KBKYOUDO」と指定されました。同時にシステム管理の「ZT040 ユーザ定義区分」のデータタブから、区分値としてA、B、Cの3レコードを登録されました。こう定義すると、画面の入力の時自動的にダイヤログボックスで選択できるようになります。

(2)機能定義
いよいよ画面の定義です。といっても、IDと一時テーブルを指定するだけです。

・作業者
・作業者属性 ・・・作業者の明細から登録するようになっています
・属性

それぞれ、「一覧」と「保守」の2機能ありますので、6機能(6画面)が出来上がりました。


4.その他
開発秘話のような事をお話頂きました。結合テーブルの処理はデータベースに任さずXEADが自前でやっています。DBMSでは管理出来ないような複雑な結合も許されています。複雑に結合されたテーブルであっても、削除処理のチェック(参照されているレコードは削除できない)は行っています。そのため、XEAD Driverの削除ロジックは相当複雑な処理を行っているそうです。オープンソースですから、興味のある方はGitHubからダウンロードして参照してみて下さい。

<資料について>
今回渡辺氏に作ってもらったXEAFファイルとこのブログで使った画像をZIPにまとめてアップしました。内容をご覧になるときには、ファイルパス名が日本語だとデータベースアクセスが上手く機能しませんのでご注意ください。これはDerbyDBの制限です。

<所感>
プロトタイプやアジャイルのツールとしてオープンソースとは思えないほど実用的なツールだと思います。是非本番処理で使ってみたいと思いました。
楽々フレームワークの作成者やXEADをAzureで実装された方など技術力の高い方が参加して下さったため、興味深い議論が色々ありました。例によって飲みすぎたためあまり覚えていないのですが例えばこんな内容でした。

ある項目の値が「99」なら画面に赤色で表示するという処理をXEADでは「テーブル項目の定義」に書きます。「ZT051 セッション明細」テーブルのスクリプトを見るとこう書いてあります。
if (ZT051_KBPROGRAMSTATUS.value == '99') {
  ZT051_KBPROGRAMSTATUS.color = 'red';
}   →プログラムステータスの値が99なら赤色にせよ


これは本来ユーザインターフェースだから機能定義に書くべきではないかという指摘がありました。レイヤーが違うのではないかという指摘です。

一見もっともな指摘のように思えますが、この辺りがDOAのDOAたる所以だと思います。正しくDOAで設計するという事は、項目のプロパティ(性質)は出来る限りテーブルとして定義するという事だというXEADの主張です。項目自体が「99なら赤」という性質を持っているわけですから、どんな画面でも赤色で出す事になります。

とは言え、スクリプトのif分で機能IDを指定すると特定の画面だけ赤くすることも出来ますから、ツールとしての融通性も備えています。

Viewing all articles
Browse latest Browse all 111

Trending Articles