HOME サービス・イベント 管理人について メール

どうせ仕様書を書くなら
「そのまま実行可能な仕様書」を書こう
― X-TEA Driver ―

仕様書で駆動される業務システム

X-TEA[eksti:] Driver
は、業務システムをはじめとするデータベースシステムの開発に特化したOSSプラットフォームです。同梱の仕様書専用エディタ(X-TEA Editor)を用いて「仕様書」を書けば、X-TEA Driverがこれを読み込んでシステムを動的に立ち上げます。保守フェーズでも仕様書を修正するだけ。いわゆる「自動生成ツール」ではないので、コードの再生成もリコンパイルも要りません。

X-TEA Driver向けに、卸売業向け販売管理システムや組立製造業向けの生産管理システムが実装され、無償公開されています。「プログラムコード」よりもはるかに理解しやすい「仕様書」の様式で、業務システムの仕様を維持・管理する――その快適さをそれらのシステムを使って実感してください。

「そのまま実行可能な仕様書」のカラクリ

 仕様書をいいかげんに書くと、イメージどおりのプログラムを作ってもらえない。かといって、懇切丁寧に書いていたら、自分でいきなりプログラミングしたほうがよほど早いと思えてしまう。とはいえ、仕様書がなければシステムの仕様がブラックボックス化してしまう。

 システム開発につきまとうこのジレンマは、ExcelやWordの上で汗水流して書かれる仕様書が、人間にしかわからない(ときには人間にさえわからない)ゆえに生じています。どうせ書かねばいけないのであれば、人間にも機械にもわかるような仕様書、つまり「そのまま実行可能な仕様書」を書けばいいだけの話です。

 そんなことが可能になるのはずっと未来の話と思われますか?いいえ、X-TEA Driverによってすでに実現されています。そのカラクリを説明しましょう。

 「そのまま実行可能な仕様書」を実現するための鍵は「プログラムのパターン」です。
たとえば後掲のスクリーンショットとして示しているプログラムは、「見出し明細表示」と呼ばれる「処理パターン(機能タイプ)」の1種類として分類されます。個々のプログラムの仕様は、8種類ある機能タイプのいずれかに分類され、それぞれに固有のデータ様式をともなう「機能仕様書」としてまとめられます。そして、X-TEA Driverが機能仕様書を読み込むと、機能タイプ毎に用意された実行エンジンが「仕様書どおりに動作するプログラム」に瞬時に変形して立ち上がります。

 そのような実行エンジンを実現することは、プログラムをパターン化することなしにはおそらく不可能でしょう。開発されるプログラムは一見すると多種多様であるために、それらをすべてカバーするような仕様書の様式を想定することが困難だからです。多すぎず少なすぎないパターンとしてプログラムを分類し、パターン毎に的確な仕様書の様式を確立する。それが「そのまま実行可能な仕様書」を実現するための鍵です。

 プログラムだけではなく、テーブルやメニューもそれぞれ「テーブル仕様書」、「メニュー仕様書」として定義されます。これらはXMLのプレーンテキストデータとして様式化されますが、開発者がそれらを編集する際にXMLを意識することはありません。仕様書専用エディタであるX-TEA Editorが、XMLデータを端正な仕様書として示してくれるからです。大量のXMLデータの編集に頭を悩ませる「XML地獄」に陥る心配はありません。


 仕様情報を管理するために仕様書専用エディタを用いることの利点は、他にもあります。まず、定義要素間の整合性がエディタによって保全されます。不整合が生じるような変更をしようとすればエディタが事前に警告してくれるので、大胆に仕様変更できます。また、クロスレファレンスの確認も、テーブル定義にもとづくテーブルモジュールの作成やデータ保守もエディタ上で軽快にやれます。その便利さは、Excelあたりを使う場合の比ではありません。

 X-TEA Editorで作成された仕様書がX-TEA Driverによってどのように実行されるかを、もう少し詳しく説明しましょう。まずエンドユーザがログインすると、Driverがメニュー仕様書にもとづく新たなセッションを立ち上げ、実行エンジンが待機状態になります。そこでエンドユーザがメニューオプションや機能を選択すると、対応する機能仕様書が読み出され、実行エンジンに渡されます。実行エンジンは、機能仕様書とこれに関連するテーブル仕様書とを読み込んで動的に統合し、自らを変形させて立ち上がります。

 したがって、システム開発において作成されるものは「仕様書」だけで、いかなる「クラス(オブジェクト)」も設計・開発される必要はありません。結果的に、ひとつの基幹システムの定義全体がせいぜい2メガ程度の1個のプレーンテキストファイルに収まってしまいます。保守フェーズで仕様変更したくなったら、文字通り「仕様変更」するだけでシステムの振舞いが変わります。コードが生成されるわけではないので、リコンパイルも要りません。

 つまりX-TEA Driverは、これまで数多く生み出されてきた「自動生成ツール」ではなく、「動的制御ツール」とでも分類される新しいタイプの開発基盤です。


スクリーンショット

▼X-TEA Editorで「品目と関連情報の確認」の仕様書を編集する


X-TEA Driverで「品目と関連情報の確認」の仕様書を"実行"した結果


インストールと実行の手順

1.Java環境の確認
Java1.7〜1.8が必要です。コマンドプロンプトで java -version と入力すればバージョンを確認できます。必要ならばJavaをインストールしてください。

2.X-TEA Driverのインストール
インストーラ(Win専用)をダウンロードしてください。古いX-TEA Driverがインストールされているのであれば、これをアンインストールしてください。つづいて、ダウンロードしたインストーラを適当なフォルダに解凍して、そこに現れたINSTALL.EXEを実行してください。X-TEA Driverのプログラムフォルダに「DBの開始」等のショートカットが追加されます。

3.データベースの開始
「DBの開始」を
管理者として実行して、データベースサービス(JavaDB)を開始してください。コマンドプロンプトが開いて、JavaDB(Apache Derby)が実行中であることが示されます。ショートカットのプロパティの詳細設定で「管理者として実行」をチェックしておくと便利です。

4.システムの起動
システム定義ファイル(*1)をダブルクリックすれば、仕様書を閲覧・編集するための専用エディタ(X-TEA Editor)が起動されます。そのエディタ上でF5を押せば、実行エンジン(X-TEA Driver)によって仕様書の内容が解釈され、システムが立ち上がります。エディタを経由せずにシステムを立ち上げることも可能です(Readmeを参照してください)。

5.データベースの終了
X-TEA DriverとX-TEA Editorを終了したなら、「DBの開始」によって開いたコマンドプロンプトを閉じれば、データベースは終了します。

*1.拡張子xeafのテキストファイルで、ここに個々のシステム定義が格納されます。インストールフォルダ配下のSkeletonのフォルダにあるSkeleton.xeafをダブルクリックすればEditorが立ち上がります。ただし、Skeleton.xeafはシステム定義を新規作成するためのコピー元用テンプレートなので、最小限度の定義しか入っていません。より本格的な開発事例を当サイトからダウンロードしてお試しください。

改善と不具合修正の履歴

感想、バグ報告、改善提案を歓迎します。バグについては、バージョンナンバーとともに再現手順を明記していただくと対応しやすいです。基本的に上位互換で改訂してゆく方針ですが、やむを得ず移行作業が必要になることがあります。

2017.02.07版
最新版
<X-TEA Driver V1R3M12>
・XF310での明細行削除エラーの表示様式を改善した
・session関数copyTableRecords(...)の仕様を改善した
・整数フィールドを「編集なし」に設定した場合、ゼロならばブランク表示させるようにした(整数フィールドをキーとした場合、任意入力の外部キー項目を指定しない場合にブランクで示すため)
<X-TEA Editor V1R3M12>
・編集コードを変更しても変更されない場合があるバグを修正した
・削除ルーチンの自動設定の仕様を改善した
・無効なDB接続が存在する場合でも、利用可能なDB接続だけで「SQLコンソール」を使えるようにした
・データ保守ユーティリティでの「編集なし」の整数フィールドの表示仕様を変更した

2017.01.10版

<X-TEA Driver V1R3M11>
・XF100,110,300,390での、明細テーブル読込前スクリプトの実行タイミングを改善した
・session関数のcompressTable(...)について、テーブルIDの末尾に*を置かねばジェネリック指定できないようにした
・新たなsession関数として、copyTableRecords(...)とshowDialogToChooseFile(...)を追加した
・メニュー上でEscキーを押せば、確認ダイアログなしでログオフされるようにした
<X-TEA Editor V1R3M11>
・XF310の行追加用機能の交換フィールドに関する利用検査ロジックの不足を補った
・スクリプトアシストの表示領域がスクリーンをはみ出ないようにした
・既存のテーブルモジュールからフィールド定義だけでなくキー定義も補完できるようにした
・スクリプトエディタのNAMEモードを強化した

2016.12.01版

<X-TEA Driver V1R3M10>
・画像フィールドのファイル名が未指定だった場合の表示形式を改善した
・XF110,200,310で、区分フィールドにプロンプタ機能をリンクすると、区分記述でなく区分値が表示される問題を修正した
・XF100,300で、明細行のコンテキストメニューから関連機能を起動できるようにした
・XF310で、ボタン起動機能の交換項目の不正を検出した際のエラーメッセージを改善した
<X-TEA Editor V1R3M10>
・時刻編集フィールドを含むテーブルデータをエクセル出力するとエラーになる問題を修正した
・XF100,110,300で「降順」の並び順を指定すると、テーブルの差し替えができなくなる問題を修正した
・データ保守ユーティリティのインポート処理で、ゼロやブランクを許すフィールドであればインポートデータに含めなくても処理されるようにした

2016.10.30版

<X-TEA Driver V1R3M9>
・XF100で絞り込み条件をすべて非表示にした場合の表示形式を改善した
・XF300で追加できる明細タブの最大数を10から20に増やした
・XF000で時刻初期値のNOWに対応した
・XF000で終了メッセージがコンソール上で2行示される問題を修正した
・住所検索用WEBサービスのためのプロキシ設定を組み込んだ
<X-TEA Editor V1R3M9>
・XF300で明細タブを新規追加したときの追加ボタン位置の初期値を改善した
・XF300で明細タブを20個以上追加できないようにした
・テーブルキーのフィールド構成を編集するためのダイアログの使い勝手を改善した
・住所検索用WEBサービスのためのプロキシ設定を組み込んだ

 すべての履歴を見る

Copyright(c) since 2004 DBC Co.Ltd. All rights reserved.