写真●ウルシステムズの河野正幸氏
写真●ウルシステムズの河野正幸氏
[画像のクリックで拡大表示]

 現在,システム開発の現場は一昔前に比べて,非常に厳しい状況にある。ユーザーが満足できるシステムを作り上げるには,業務の本質を理解して正しい要求を“発見/発明”する「要求開発」と,ユーザーの要求を早い段階で動くソフトウエアとして具体化し,ユーザーと一緒に検証する「アジャイル開発」を同時に実施することが有効だ---。ウルシステムズの河野正幸氏(写真)は,9月7日に開催されたカンファレンス「X-over Development Conference 2007」でこう指摘した。

 最近のシステム開発が厳しいのは,高価値のシステムを安く,短期間で構築してほしいというユーザーの期待が高まっているからである。加えて,「システム化対象が難しくなってきた。昔はどんなシステムを作るのかを業務を知っている人に聞けばよかったが,現在は解決策を明確に知っている人がいない」(河野氏)ということもある。こうした状況においては,「開発者が専門知識を使って能動的に働きかけていくことによって,要求を構造化し,本質を追及する必要がある。それが要求開発のコンセプトだ」(同)。

 ただし,システム開発では実際にやってみないとわからないことも多い。そこで要求開発を補完するのが,アジャイル開発である。アジャイル開発では,ある期間(タイムボックス)を決めて,動くものを作りながらユーザーからのフィードバックを得つつ,段階的にシステムを構築していく。

 しかし一方で,アジャイル開発には,ユーザーが実際に動くシステムを見ると,目先の仔細なことに関心が集中してしまいがちだというデメリットもある。要求開発はアジャイル開発のそうしたデメリットを補完してくれるという。システム開発においては「要求開発とアジャイル開発を同時に進行する双子のプロセスとして実行するのが望ましい」(河野氏)。

 河野氏はさらに,ある大手製造業の事業部向け「SCMシステム構築プロジェクト」に要求開発とアジャイル開発を併用した例を示した。プロジェクトは,「基本構想フェーズ(6カ月)」,「仮説検証フェーズ(6カ月)」,「量産&移行フェーズ1(職場横展開と拡張,12カ月)」,「量産&移行フェーズ2(全業務展開,18カ月)」という規模のもの。要求開発とアジャイル開発を併用して一番効果があったのは「仮説検証フェーズ」だったという。

 仮説検証フェーズでは,実際に使えるシステムをリリースしてフィードバックを得て修正していく「イテレーション・サイクル」を4回繰り返した。これによって,懸案事項であった「現場担当者に実績を入力してもらえるかどうか」を確認でき,重大なリスク要因を早期に解消できたという。さらに,現場からのフィードバックが次にリリースされるシステムに素早く反映されることによって,ユーザーが積極的に要求を出してくれるようになるというメリットもあった。また,動くソフトウエアを初期の段階から見てシステムの“着地点”をイメージしやすくなったユーザーが自ら要求を調整してくれるようになり,結果として予算と納期をクリアできたという。

 開発チームにはほかに,メンバーが早い段階で失敗を体験し,リカバリする経験を繰り返すことによってスキルが向上するというメリットがあった。仮説検証フェーズから量産&移行フェーズで生産性が2倍近く向上するなど「プロジェクトの後半になるほど楽になった」(河野氏)。この際には,イテレーションの早い段階ではゴールを低くし,成功体験を積ませて自信を持たせることで,ハードルを上げていっても,やる気を維持できるようなプロジェクト管理上の工夫もしたという。

 最後に河野氏は,要求開発とアジャイル開発の併用を実践するポイントとして,(1)固定期間のイテレーションを短く回し,リリース・サイクルとイテレーション・サイクルを区別すること,(2)要求を優先付ける際には二つ以上の尺度を使うこと,(3)マイルストーンを設定すること,(4)要求開発プロセスとシステム開発プロセスをパイプライン制御することで無駄な待ち時間が発生しないようにすること,(5)一人ひとりの守備範囲が広い「一人屋台」方式でコミュニケーションロスを極小化すること,を挙げた。