あの手この手でeXtreme Programmingを体感 ――XP祭り2006
2006年9月2日,江戸川区総合文化センター(東京都江戸川区)にて,eXtreme Programming(XP)の成果や事例を紹介するイベント「XP祭り2006」が開催された(写真1).XPの適用事例が発表されたほか,テーブル・ゲームをとおしてXPを体感するチュートリアルや,XP方式の開発を競うコンテストが実施された.XPとは,Kent Beck氏などが提唱しているソフトウェア開発手法である.会場には,XPの考えかたをよく知らない参加者も多かったが,主催者である日本XPユーザ・グループ(XPJUG)スタッフの努力により,会場にはなごやかな雰囲気が広がっていた.
[写真1] XP祭り2006
江戸川区総合文化センター(東京都江戸川区)にて開催された
●XPは「改善型開発」
日本XPユーザ・グループ 代表の倉貫義人氏は,XPの基本的な概念について講演した(写真2).XPは,動くソフトウェアを確認しながら反復型で開発を進めることを基本とする.ただし,XPは特定のプログラミング手法や開発プロセスを指すことばではない.また,ソフトウェアの早期開発を目ざす手法でもなく,「むしろ,開発したソフトウェアを改善し続け,顧客にシステムを提供し続けることが重要」(倉貫氏).優れたチームが実践している方法を取り入れながら,現場の開発者自身が考えて,自分たちのプロジェクトに合うように改善していくことがたいせつだという.これにより,顧客にとっては,開発途上の仕様変更に対応しやすく,求めていたシステムにより近いものを入手できる可能性が高くなるという.
[写真2] 講演する倉貫義人氏(日本XPユーザ・グループ 代表)
XPには「価値」と「原則」,「プラクティス」という概念がある.このうちプラクティスは,具体的に実践するべきことを指す.例えば,会議における「振り返り」や,プログラミングにおける「ペア・プログラミング」,「TO DOリスト」などがプラクティスの具体的な作業として挙げられる.採用するべきプラクティスは,チームやプロジェクトの状況によって異なる.
●合いことばは「Gush」!
モデリング・ツールなどを開発・販売しているチェンジビジョンの平鍋健児氏は,XPに関する書籍の紹介をとおして,2000年ごろから現在までのXPの流れを説明した.その講演に先立って,「そうそう,そのとおり,と思ったときに"Gush !"と言ってください」(平鍋氏)と会場に呼びかけたことから,この日に行われたあちこちのセッションで"Gush !"ということばが聞かれるようになった(写真3).XPでは,チームとしてじょうずにコミュニケーションをとりながら楽しく開発することを重視する.この"Gush !"についての呼びかけも,XP的な気配りの表れの一つだろう.
[写真3] 講演する平鍋健児氏(チェンジビジョン 代表取締役)
●折り紙でXPを体感
XPを体感するためのチュートリアル・セッションでは,5~6人ずつでチームを組み,規定の時間内に折り紙で多面体を作るというゲームが行われた.作成できる多面体には複数の種類があり,その形状によって,完成したときに得られる得点が異なる.1回のゲームの制限時間は10分.
ゲーム開始前に,チーム内でどのように作業を進めるかを相談する時間がある.また,ゲーム終了後に今回の結果を振り返り,次はどうするかを相談する時間がある.このようにしてゲームを3回繰り返し,最終的にどのような成果が得られたのかを,XPの「五つの価値」という概念,すなわち「コミュニケーション」,「シンプル」,「フィードバック」,「勇気」,「尊重」というキーワードに関連づけて検討する,という内容だった.
会場に集まった参加者たちは,互いに初対面の人が多かったためか,最初はかなり硬い態度だった.しかし,熱心に折り紙に取り組み,さまざまな議論を交わしながら,徐々に打ち解けていく人が増えていった(写真4).
[写真4] チュートリアル・セッションのようす
折り紙で多面体を作るテーブル・ゲームをとおして,XPの「価値」を体感する
●ペア・プログラミングでじゃんけんゲームを開発
XP方式の開発を競うコンテストでは,あらかじめ開発してきたじゃんけんゲームのプログラム(これをイテレーション0と位置付ける)に対し,1時間ごとに仕様変更の指令が下され,それに対応しながらプログラムを変更するという作業が行われた.参加チームは6チーム.コーディングは,2名でペアを組んで同じ画面を見ながら実施する「ペア・プログラミング」形式で進められた.和室で実施された本セッションは当初は楽しそうな雰囲気で始まったが(写真5),3時間の開発の間には,仕様変更に追従できずにパニックに陥ったり,焦ったあげく雰囲気が悪くなったチームなどもあったようだ.
[写真5] コンテスト・セッションのようす
3時間の間に3回の仕様変更に対応して開発する