« さらば「方眼紙エクセル仕様書」 | トップページ | 開発効率化のための基本戦略「類型化」 »

2011.04.14

設計とプログラミングの互換性

 「卸売業向け販売管理システム」の実装版で、最後に作りこんだ部分が「統計データ管理サブシステム」だった。受払実績、仕入実績、売上実績をさまざまな切り口で年月度別に集計して示す。そのためのテーブルやプログラムを含むモジュールである。他のサブシステムと違って、Rhino/JavaScriptによる集計処理用のコードをたくさん含むのが特徴なのだが、それらを作るのが妙に楽しかった。

 以前にクラス構造を考えたりプログラミングするのは楽しいと書いたが、単純な集計処理であってもプログラミングは楽しい。プログラム域やテーブル上で起こることを立体的にイメージしながらロジックを組み立てる。込み入った内容を文章や段落構成を駆使して端正にまとめてゆく文章書きと同種の面白さがある。そのコードはたとえばこんな調子だ。

importPackage(java.lang);
importPackage(java.sql);

///////////////
// 変数の定義 //
///////////////
...

///////////////////////
// 集計対象期間の設定 //
///////////////////////
...

////////////////////////////////////////////////////
// 対象期間の受払実績(ET100)の読取と取引サマリの更新 //
////////////////////////////////////////////////////
var sql = 'select * from ET100 where ...';
var result = statement.executeQuery(sql);
while (result.next()) {

 if (...) {

  //////////////////////////////////////////
  // 商品・倉庫別月次取引サマリ(YT031)の追加 //
  //////////////////////////////////////////
  insertYT031();

  /////////////////////////////////////
  // 商品別月次取引サマリ(YT030)の追加 //
  /////////////////////////////////////
  insertYT030();

  ////////////////////////////////////
  // 月次取引サマリ(YT020)の追加・更新 //
  ////////////////////////////////////
  processYT020();

 }

 ////////////////////////////////
 // 取引区分にしたがった集計処理 //
 ////////////////////////////////
 summarizeFields();
}

...

 典型的な集計処理であって、業務システムの開発者であれば、Rhino/JavaScriptを知らなくても何をやっているのかなんとなくわかると思う。このようにメインルーチンを処理の「目次」のようにまとめ、さらに各章各節も同様な構成感でまとめることで、システムの可読性や保守性が高まる。プログラミングが進む過程で、最初はごちゃごちゃしていた風景が次第に整理されてゆく。その過程がじつに楽しい。

 設計とプログラミングとが本質的に同質の行為であるとよく言われる。じっさい、上記のような処理内容は、文章でこまごま表すよりは、コメントを適切に補ったコードの形でロジックを示したほうがむしろわかりやすい。ある種のプログラムについては、実行可能なコードがその仕様を表現する最良の手段になり得る。

 その反対に、ある種のプログラムについては、コードを用いずに仕様書をまとめるだけで実行可能な形にもっていけることもわかっている(前回記事参照)。これもまた、設計とプログラミングとが同質の行為であることの証拠だ。

 つまり、設計とプログラミングとは「互換性」があるということで、この特性を活用することが開発プロセス革新の鍵である。すなわち、プログラミング作業を工夫することで、ある種の設計作業を合理化できる。同時に、設計作業を工夫することで、ある種のプログラミング作業を合理化できる。双方向のアプローチが必要だ。

|

« さらば「方眼紙エクセル仕様書」 | トップページ | 開発効率化のための基本戦略「類型化」 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: 設計とプログラミングの互換性:

« さらば「方眼紙エクセル仕様書」 | トップページ | 開発効率化のための基本戦略「類型化」 »