« ベンチマークとしてのレファレンスモデル | トップページ | システムモデルを事業別に分割する »

2015.05.13

「プログラミングの専門家」でも「ツールの専門家」でもなく

 業務システムの開発スタイルとして「WF(ウォーターフォール)方式」と「アジャイル方式」とが対立的に説明されることが多いが、実際には、どちらにも属さない第3の開発スタイル「ツール活用型開発」がある。ことさら対立を煽る気はないのだが、論点として知っておく意義はある。

 「ツール活用型開発」の様相は、「開発をプログラミング主体で進めるかどうか」の軸を想定して、「プログラミング指向派」と「ツール活用派」の対立として見ると理解しやすい。

 まず、「プログラミング指向派」は、「的確にプログラミングすることで的確な業務システムが手に入る」と考える。仕様を事前に決め打ちするか(WF)、動かしながら仕様を探るか(アジャイル)に関係なく、Java等の汎用プログラミング言語のコード群としてシステムを仕上げようとする。彼らが開発用フレームワークを愛用するのは、それが「"コード主体で完成するシステム"の半完成品」であるゆえだ。最近人気のDDD(ドメイン駆動設計)もプログラミング指向の開発スタイルに括られる。

 いっぽうの「ツール活用派」は、「的確に設計して、その結果を開発ツールにサブミットすることで的確な業務システムが手に入る」と考える。もう少し正確に言うと、「ツールによってそのまま動く設計」を書くことで、手早くシステムを手に入れようとする。言い換えればそのような開発スタイルを可能にする手段が、ここで言う「ツール」である。今風の用語で言えばDSL(ドメイン特化言語)を最大限活用したやり方だ。

 この「開発をプログラミング主体で進めるかどうか」の軸を、WFとアジャイル方式の対立、つまり「事前に仕様を見定めてから実装するかどうか」の軸と交差させてみよう。

WF方式 アジャイル方式
プログラミング指向型 1.プログラミング指向WF 2.プログラミング指向アジャイル
ツール活用型 3.ツール活用型WF 4.ツール活用型アジャイル

 この4象限において、「1.プログラミング指向WF」が狭義のWFであり、そのアンチテーゼとして提唱されたのが「2.プログラミング指向アジャイル」ということになる。これらは対立しているように思えるが、「プログラミング指向」という意味では同類である。

 残る2象限(3と4)はどんなものか。じつはツールを活用する場合、それらの違いに大した意味はなくなる。上述したように、設計と実装の区別が曖昧になるからだ。なにしろ詳細設計するだけでシステムを動かせる(つまり仕様書がそのまま動く)ので、WFで言う「事前に仕様を見定めてから実装する」が「事前に動きを見定めながら実装する」の意味になる。これは見かけ上アジャイルと区別できないので、上の4象限は次の3区分に整理できる。

WF方式 アジャイル方式
プログラミング指向型 WF型開発 アジャイル型開発
ツール活用型 ツール活用型開発

 私にはこれらの3区分が、スクラッチ型の開発スタイルの対立をうまく表しているように思える。もちろんそれぞれのスタイルが得意とする案件のタイプが微妙にずれているという実情があるにせよ、どのスタイルでも扱えるような案件も存在する。この意味で、JUASがWFとアジャイルの他に「超高速開発」を含めて開発効率を分析したことは的を射ている(IT Leadersでの関連記事)。

 ようするに「ツール活用型開発」は、WFやアジャイルを含む「プログラミング指向型開発」に対して古くからあるアンチテーゼなのである。それは、プログラミング指向派には思いもよらない「コードを扱うことの非効率さに対する絶望」を基礎にしている。コードを書くからこそ、バグも生じるし保守性が低下する。ゆえにコードは「必要悪」である――そんな現実を彼らはひりひりと感じている。

 かつてツール活用型開発は、WFやアジャイルといったプログラミング指向派から見下されがちなマイノリティであった。それが、実装技術の発展の結果、そして旧来のSIビジネスの行きづまりの結果として「第3の開発スタイル」として表舞台に立てるようになった。時代は変わりつつある。

 業務システム開発に携わる技術者なら、その種のツールのひとつくらいは身につけておいたほうがいい。実装技術の発展が止まらないゆえに、プログラミングできることの意義は変わらないにせよ、「プログラミング指向派」であることの意義は薄れてゆくからだ。

 そうは言うが、せっかく身につけたツールが廃れたりするではないかって?そのときは節操なく別のツールに乗り換えればいい。そもそも我々の役割は、良い業務システムを据え付けて稼働させることであって、プログラミングやツールはそのための手段でしかない。「プログラミングの専門家」でもなく、「ツールの専門家」でもなく、「業務システム開発の専門家」になろう。彼らにとってプログラミング言語やツールは、交換可能な文房具みたいなものでしかない。

|

« ベンチマークとしてのレファレンスモデル | トップページ | システムモデルを事業別に分割する »

コメント

偶然こんな記事を目にしました

ウオーターフォールとアジャイルを融合した“超高速開発”手法が日本の古いSIビジネスモデルを変える
http://www.atmarkit.co.jp/ait/spv/1502/25/news004.html

よく読むと似て非なる内容でした。しかもPRと書いてありますからステマですね

投稿: HAT | 2015.05.13 18:28

なるほど。確かに紛らわしい。データモデリングを射程外に置くUIプロトタイピングの専用ツールを「超高速開発」の文脈に置くことにはやはり違和感があります。まあ、「超高速開発」の用語じたいが厳密に定義されているわけではないんですけどね。

そういうわけで私はブログ記事内での「ツール活用型開発」の「ツール」の意味をあえて限定しています。データモデルにもとづくテーブル定義書と、機能モデルにもとづくプログラム仕様書を書けば、そのまま動作する。そのための基盤が、私にとっての超高速開発ツールです。

投稿: わたなべ | 2015.05.13 21:26

コメントを書く



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




トラックバック


この記事へのトラックバック一覧です: 「プログラミングの専門家」でも「ツールの専門家」でもなく:

« ベンチマークとしてのレファレンスモデル | トップページ | システムモデルを事業別に分割する »