XPJUG(eXtreme Programming Japan Users Group)の伊尾木将之氏
XPJUG(eXtreme Programming Japan Users Group)の伊尾木将之氏
[画像のクリックで拡大表示]

 「オフショア開発に関して,『非常に手間がかかる割に,品質がよくない』という声を耳にすることがある。本当にそうなのだろうか」――。9月7日に開催されたシステム開発をテーマにしたイベント「XDev 2007」で講演した,XPJUG(eXtreme Programming Japan Users Group)の伊尾木将之氏は,このように疑問を投げかけた(写真)。「もしそのように感じる場合,日本側に問題はないのか。オフショア・ベンダーへの信頼の欠如が,その背景にある」と指摘する。

 信頼の欠如は,様々なところに現れるのだという。「コミュニケーションを日本語だけに頼っていないか。ドキュメントの内容が過剰ではないか。細部に及ぶ過剰な指示やダメ出しをしていないか。不安だからドキュメントの内容や指示が過剰になる。私がオフショア・ベンダーの立場なら,ドキュメントは簡潔な内容にとどめ,英語を交えたコミュニケーションで意思の疎通を図るほうが,よほどやりやすい」(伊尾木氏)。

 伊尾木氏は信頼関係を構築するためには,四つの取り組みが必要だという。(1)あいまいなコミュニケーションは避けること,(2)共通の目標を設定すること,(3)明確なゴールを設けること,(4)情報を共有すること,である。これらを実現するための手法として,伊尾木氏が提案するのが,三つのテスト作業である。

 具体的には,「Storyテスト駆動」,「TDD(Test Driven Development)」,「継続的ビルド」の三つのテスト作業を通じて,信頼感を高めることができるという。まず,「Storyテスト駆動」では,開発の目標を明確化。2,3日から1週間程度で実施するテスト用のコードを作成し,そのテストに日本側とオフショア・ベンダーが共同で取り組む。業務単位でコードを作成する作業は,業務に対する理解を深める意味でもオフショア・ベンダーが実施する。テスト一覧とその進ちょく情報は共有し,すべてのテストを達成するという共通の目標を持つ。

 「TDD」では,オフショア・ベンダーがプログラミングを始める前に,機能単体のテスト用コードを書く。「ソース・コードにはプログラムが『どのように動くか』を記述するが,このテスト用コードには『どのように動くべきか』を記述する」(伊尾木氏)。そのうえでそのテスト用コードを,日本側が定期的にレビューし,理解度を高める。

 この「Storyテスト駆動」と「TDD」を継続的に実施する。これが「継続的ビルド」である。「大切なのは,テストで失敗しても騒がないこと。原因を追及することよりも,状況を公開して情報を共有することだ」と伊尾木氏は付け加える。

 また,伊尾木氏自身の経験として,「朝会とペアプロ(ペア・プログラミング)が非常に有効だ」と説明する。「プロジェクトが終わった時に,オフショア・ベンダーに話を聞くと,朝会がとてもよかったと口を揃える」(伊尾木氏)という。朝会とは,毎日朝一番で実施する簡単なミーティングのこと。Skypeなどを使い,海外にいるオフショア・ベンダーを含め,原則としてプロジェクト・メンバー全員が参加。「昨日どんな作業をやったか」や,「何か気になることはないか」などを話し合う。伊尾木氏は「朝会のような簡単な取り組みが,日本と海外の距離を縮める。同じ船に乗っている感覚を共有できるのがよいのだろう」と分析する。