« DB開発とアプリ開発を分離せよ | トップページ | 顧客も業者によって値踏みされる »

2018.03.07

超高速開発とアジャイルの違い

 超高速開発ライブの後で、観客からアジャイル手法との関係について指摘されることがある。それは例えば「やっぱりアジャイルは圧倒的に速いですね」といった感想だったりするが、私はあわてて否定する。「いえ、これはアジャイル手法ではありません。アジャイルの人たちはプログラミングやテストを重要視しますが、私たちはそれらをなるべくやらずに済むように合理化しています。そういう意味で私たちは"ロボットを駆使する建築業者"で、アジャイラーは"宮大工"なんです」

 宮大工がどんなに俊敏であっても、ロボットを使った業者のほうが仕事が速いのは当たり前なのだが、われわれは仕事が速いだけではない。情シスの部長さんから「開発者側の業務知識がしっかりしているのが印象的でした」と今更のように感心されたことがある。我々は、生産管理システムや販売管理システムといった、複雑なDBを核とする事業データ管理システム(いわゆる業務システム)の分野に特化している。それゆえ、専用の実装合理化手段を使うだけでなく、その分野に固有な問題に通じている。すなわち、前回記事で述べたように、「業務知識に裏打ちされたDB設計スキル」こそが自分たちの専門性の核だと考えている。

 いっぽうアジャイラーは、自分の専門性を「プログラミングそのもの」と考えていて、ソフトウエアの適用分野にはこだわらない。知らない分野向の専門知識に関しては、それを有するはずのプロダクトオーナーに訊けばよいというスタンスである。それはそれでアリだとは思うが、何歳になってもその姿勢がPLに受け入れられるかどうかはわからない。日本でプログラミングの専任要員として年を重ねると、年下のPLから敬遠されやすくなるからだ(関連記事「いつまでもプログラミングを楽しむために」)。

 このように超高速開発とアジャイルとでは姿勢がまったく異なるわけだが、前者における「ソフトウエアの適用分野をあえて限定する」という方針は決定的に重要である。超高速開発とひとことで言っても、業務システム以外の分野に特化しているケースもあるので、用語としては曖昧ではある。しかしながら、用いる実装手段が「適用分野を限定している実装合理化ツール」という点では共通している。そういったツールのことを私は「ドメイン特化型プラットフォーム(DSP,Domain Specific Platform)」と呼び、これを使った開発手法を「ツール活用型開発」と呼んでいる。

 では、DSPはどんな経緯で生み出されるのだろう。ソフトウエアが駆使される活動的な分野であれば、その分野向けのDSPは遅かれ早かれ生み出される。需要が多ければ自動的に合理化が進むからだ。音源制作分野におけるDAWツール、ロボット制御分野におけるシーケンサ、ゲーム開発におけるUnity等、DSPはさまざまな分野で生み出され社会活動を支えている。たとえば「"イパネマの娘"演奏プログラム」を生み出すには、演奏に含まれる音色や発音タイミングや音価を専用エディタ上で手早く編集するだけでいい。その過程でミュージシャンは、オブジェクト指向プログラミングを学ぶ必要はない。

 プログラミング言語を用いた「ゴリゴリの手組み」の時代から始めて我々は、「事前に用意されたフレームワーク(骨格)+手組み」や「パッケージソフト+カスタマイズ」といった合理化努力を営々と続けてきた。DSPはまさにその究極形であって、適用分野をあえて限定したゆえにもたらされる賜物である。このようにソフトウエア開発の専門性というものは、適用分野別に分化していくような気がする。「シャンソン歌手」や「演歌歌手」はいても、「どんなジャンルも引き受ける歌手」がいないようなものだ。

 なお、分野特化型のやり方に対して、「顧客の要望は多様化していて、一案件における開発範囲が特定分野だけで完結するとは限らない」といった批判を聞くことがある。心配ない。いくつかのDSPを組み合わせることで、単一分野に特化している弱点は補えるからだ。じっさいいまどきの開発ツールはツール間の連携を意識していて、そのためのAPIを豊富に用意している。DSP同士が連係することで、ソフトウエア開発はさらに容易になってゆくだろう。

 DDD(ドメイン駆動設計,Domain Driven Design)との関係を訊かれたこともある。エリック・エバンスは「船荷証券」のような業務用語とJavaのコードを使って、開発対象分野の概念構造を洞察する過程や重要性を説明した。それゆえにDDDが「業務システムにも適用可能な、洗練されたオブジェクト指向開発手法」として矮小化されたきらいがある。そのように解釈されたDDDは、プログラミングにこだわるという意味ではアジャイル手法の仲間だ。ちなみに「業務システム開発」を専門とする私にとってオブジェクト指向言語は、「業務システム開発用DSP」を生み出すための手段であって、JavaとかRubyとかで個々の業務システムを手組みしようとは思わない。システム要件を仕様化する際の自由度がありすぎるため、要員交代を前提とした長期的な保守性を保証できないからだ。

 一度だけ、「アジャイル手法との対決ライブなんてやらないんですか」と訊かれたことがある。私も以前から、アジャイル手法やDDDとの合同イベントをやってみたいと考えている。会場で提示された中から多数決で決めた案件について、データモデリングとクラスモデリングを同時に30分でやる。続いてそれぞれの手段で60~90分で実装して(それより長いと観客が退屈する)、互いの成果を見せ合うのである――たいへん興味深いイベントだが、実現は難しいのではないかと思う。DSPで扱える分野向けであれば我々が極端に有利になるので、まともな勝負にならないような気がするからだ。

|

« DB開発とアプリ開発を分離せよ | トップページ | 顧客も業者によって値踏みされる »

コメント

コメントを書く



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




トラックバック


この記事へのトラックバック一覧です: 超高速開発とアジャイルの違い:

« DB開発とアプリ開発を分離せよ | トップページ | 顧客も業者によって値踏みされる »