最近,XPなるものが気になり始めた。弊社のいくつかの雑誌などでも最近よく目にする,“エクストリーム・プログラミング”というやつだ。最近,取材や同僚との雑談の中で,何度かXP型モデルについて考えたことがあった。といっても,私の場合は,プログラミングやソフトウエア開発には縁遠いこともあって,ソフト開発手法として注目しているわけではない。気になっているのは,XPのモデルを他の分野,つまりIT分野,またはネットワーク・システム分野に生かせないのか,あるいはすでに実践していないのか,という点である。

 XPは数人のチームで1つのソフトウエアを開発する手法。XPに関して確かな知識があるわけではないので,詳細な内容や効果などに関してはご容赦いただきたいが,聞くところによる体制ははこんなものだ。実際にコードを書く際に,チームのうち2人が共同で取り組み,意見を出し合いながら,最適と考えられるコードを作成していく。さらに,この2人の組み合わせを順に変えていき,チーム全員でソフト開発作業をローテーションさせる。

 私がこのモデルに興味を抱いている理由は,チーム全員で1つの開発に対する「現場レベルでの知識」を共有できることにある。2人1組でコードを書く際には,パートナからさまざまな知識を吸収できる可能性があるし,スキルの高いプログラマでも自分だけでは思いもつかなかったような斬新な観点を指摘されることだってあるだろう。これをローテーションさせていけば,共有できる知識の範囲はますます広がる。これはXPの本質ではないのかもしれないが,少なくとも,メリットの1つとしては挙げられるはずだ。

 この点に興味を抱かせる背景には,“職人”と呼べるようなエンジニアの不足がある。冒頭に触れた,ある取材先での話題はネットワークの運用・管理。とにかく,優秀なエンジニアが少なく,エンジニアのスキル底上げが欠かせないというのである。優秀なエンジニアには仕事が集中し,結果として極度の疲弊を招きかねないし,他のエンジニアは経験が増えないために,いつまでたってもスキルが上がらない。そこで,XP的なアプローチがエンジニアのスキル底上げに役立つということになる。このところ,この考えが頭にこびりついてしまっている。私が日ごろ追いかけている分野,つまりネットワーク・システムの設計や構築,システム・インテグレーション,運用・管理といった領域(業界)では,XP的なモデルを採用しているのかが気になってきたからだ。

 この取材先,実は,インターネット向けシステムを管理代行する,あるMSP(マネージメント・サービス・プロバイダ)なのだが,同社のシステム管理サービスは,実際にXPに近いモデルに基づいているという。実際の監視・管理にあたるオペレータは,特定のサイトを担当するのではなく,いろいろな顧客のシステムを日替わりで監視するようになっている。こうすることで,サイトによってシステムの特性や要件が違っていることがはっきり理解できるようになる。前にそのサイトを監視したスタッフからは,どんな警告があったか,どんな対応をしたかなどの申し送りもある。こうしたことを繰り返し,徐々にスキル・アップできれば,“職人”は不要になる。

 同様に,ネットワーク・システムの設計や構築でも,こうしたアプローチはありえないのだろうか。例えば,Webサイトの設計時。そのシステム要件でロード・バランサを使う必要があるかとか,どこをチューニングした方がよいとか,そういう議論をXP的なアプローチで進めるのである。ただ,システム構築については,「多くの場合,システムの構成パターンはある程度決まっている。せいぜい数十パターンしかなく,そこから選ぶ程度なので,XPのようなモデルは必要ないだろう」とする声もある。実際,システム・インテグレーションの業務上で,XP的なアプローチが本当に有効かどうかは,なんとも言えない。ただ,エンジニアの「勘や経験」を含めた知識の共有,スキル・アップまで含めて考えると,必ずしも「不要」とは言えないのではないか。

 この件については,きちんとリサーチしたわけではない。このため,実際には,MSPやアウトソーサ,システム・インテグレータなど,各社はすでにXP的なアプローチを採用していたり,業界としてごく当たり前なモデルだったりするのかもしれない。ただ,こうしたアプローチについての議論は,今まであまりなされてこなかったように思う。もしかして,XPのモデルが,IT業界の常識というか,ITエンジニアの未来を変えるきっかけになんかなったら面白い。

(河井 保博=日経インターネット テクノロジー)