BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ アーティクル 体験レポート:ゲームで学ぶアジャイルな反復型開発

体験レポート:ゲームで学ぶアジャイルな反復型開発

ゲームを通じてアジャイル開発のエッセンスを体験できるとしたら、アジャイル開発の導入に対して足踏みをしている人たちにとっては格好の教材となるのではなかろうか? 株式会社永和システムマネジメントの安井氏は「タスクボードシミュレーション」と称するアジャイル開発を体験できるゲームを開発した。このゲームは、架空のプロジェクトに対してイテレーション計画、タスクボードを使ったタスクの遂行およびふりかえりを行うことで、アジャイル開発において、チームがどのように計画を行い、タスクの進捗状況がどのように見える化され、メンバーが起こった問 題に対してどのように協力して解決し、そしてプロジェクトの戦略をどのように練るのかを楽しく体験できる優れものである。

この度、安井氏のご好意により筆者が所属する会社にてこのゲームを使ったワークショップを開いていただき、参加者から大好評を得た。(なお、このワークショップはAgile2009にThe Kanban Gameとしてもエントリーされている)。以下、本文ではその模様をレポートする。

ワークショップの概要

ゲームは参加者が4~6人にわかれてチームを作り、チームで架空のプロジェクトを遂行して成果を上げることを目的とする。架空のプロジェクトとして用意されているのは「メールクライアントを作成する」というプロジェクトと、エンジニアではない人にも理解できるように配慮された「部屋の模様替えをする」という2つのプロジェクトだ。各プロジェクトでは、顧客の要求として、顧客の視点から価値のあるフィーチャを記述した「ユーザーストーリー」が優先順位付けしてカード化されている。また、各ユーザーストーリーを実際の作業まで落とし込んだ「タスク」がそれにかかる正味時間を示す「理想時間」で見積られており、これも同様にカード化されている。チームはタスクを遂行して、なるべく多くのユーザーストーリーを達成することが成果となる。作業はイテレーション単位で行うこととして、1ゲーム2イテレーションで行うこととする。各イテレーションは次の通り行われる。

イテレーション計画

イテレーション計画でのアウトプットは「イテレーションで実現するユーザーストーリーを決めること」である。参加者はチームがどのくらいタスクを消化できるのか、どのように作業のバッファをとるかを全員で考え、ユーザーストーリーを決定する。

タスクの遂行

各自、計画されたタスクに対してサインアップしてサイコロを振る。タスクに対するサイコロの目の累積数がタスクの見積り時間を超えた場合にタスクは完了となる。これらの状況をタスクボードで確認する。

また、サイコロの目が1の場合にはProblemカードを引かなければならない。このProblemカードによりタスク遂行においてのさまざまな問題が起こることとなる。チーム全員でこの問題に取り組み、各自が持っているSolutionカードによりこの問題を解決できるかを話し合い、みんなが納得できる解法を見つけ出せればこの問題が解決されたこととなる。

Solutionカードを引く

Problemカードに対応するためのSolutionカードを山から引く。Solutionカードはゲーム開始時に各自に何枚かを配っておくものとする。

ふりかえり

KPT(Keep/Problem/Try)などを使い、イテレーションをふりかえることでタスク遂行における新たな戦略を練る。また、1イテレーションで完了した成果のレビューを行う。またイテレーションでのベロシティを計測して実績をはかることで次のイテレーション計画に役立てる。

その他のルール

ルールではペアプログラミングと残業を許可されている。

ペアプログラミングでは2人で1つのタスクにとりかからなければならないが、2人でサイコロを振って出目のいい方の数をとることができる。したがって、Problemカードを引く確率を激減させ、サイコロの期待値を上げることがでる。

また、残業をすることを選択した場合にはもう一度サイコロを振ることができるものの、次の日はサイコロの出目が1または2の時にProblemカードを引く必要がある。つまり、Problemカードを引く確率が2倍となってしまうのだ(ただし、金曜日の残業は次の日は休みのために影響を受けないこととなっている)。

気づきの共有

ゲーム終了後にチームでどんな戦略をとったのかをふりかえった後、ゲームはシミュレーションでありあくまでも実際の現場の内容を単純化したものだという認識に立ち、各チームで普段の仕事との違いと今後の仕事で活かすことができると感じたことを議論し、それを参加者全員で共有することでワークショップは終了する。

ゲームの効果

このゲームを通して参加者は様々なアジャイルプラクティスを体験できる。

計画する

1回目のイテレーションの実績レビューでベロシティを計算することで、次のイテレーションで実行できるタスクの量を前のイテレーションよりも精度が高く見積もることができることを学び、チームによっては朝会を開くことで日々状況を確認することの重要性を感じる。また、アジャイル開発においては完了していないストーリーは価値をもたないと考えるということ学ぶことも同時に期待できる。

協力する

プロブレムカードによって引き起こされた問題に対して、チームの個々がもつスキル(ソリューションカード)を全員で共有し、解決策を練ることで協力する重要性を体感できる。

みんなで考える

当初ゲームでは最小限のルールしか参加者には伝えられていない。参加者はふりかえりなどを通して新たなチームのルールを作ることで、プロジェクトナレッジメントを構築することの重要性を体験できる。たとえば、タスクの見積り粒度はばらばらに設定されているのだが、この粒度ではタスク遂行に支障をきたすと判断した場合にはチームで最適な粒度を決定し、タスクのマージや分割を行うといった具合である。

見える化

参加者はタスクボードを使ってタスクの遂行状況が一目で確認できることを学ぶ。タスクボードのバリエーションに関してもふりかえなどを通じて考えることも可能である。また、タスクの消化状況をバーンダウンチャートで確認することも学ぶことができる。

その他

「メールクライアントを作成する」プロジェクトにおいては、Solutionカードには、たとえば、「顧客に常駐してもらう」、「テスト駆動設計を導入する」、「頻繁にリリースする」など、アジャイル開発のプラクティスが書かれている。そして、Problemカードから引き起こされる問題に対してどういったプラクティスが役に立つのかを学ぶこともできる。たとえば、「大量のドキュメントを要求される」というProblemカードに対して、「テスト駆動設計を導入する」というSolutionカードを提示して、テストで仕様を表現することでドキュメントを回避するといった具合である。

ワークショップを実施した結果

まずなんといってもこのワークショップは非常に楽しい。参加者は協力し、新しい戦略を練ることがどんなに楽しくて重要なのかということを体験できる。そして、参加者どうしはほぼ初対面であったのにもかかわらず、説明を含め3時間のワークショップが終わるころにはチームに一体感が芽生え始めるという素晴らしい効果も生む。

また、受講後の参加者にアンケートをとったところ、満足度は平均4.6点(1~5段階評価)、今後の業務での有用性については平均4.2点(1~5段階評価)と非常に高い結果を示し、彼らの感想と今後の業務で使えると感じた点を挙げてもらったところ非常にポジティブな意見(下表)を聞くことができた。

主な感想
他部署のエンジニアとやり方、考え方をシェアするのは貴重だった。
楽しんで学べたことが良かった。
本だけだとやりざまが判らないので実体験するのは良かった。
コミュニケーションは大事だと感じた。
見えることによる効果は実感できた。
他のプラクティスにどのようなものがあるかを知りたくなった。後で調べたいと思う。

業務でどんなところが使えると感じたか?
問題点を共有すること。
タスクボード、バーンダウンチャートなどは低コストで効果的な進捗の見える化ができる。
タスクを個人で抱え込まず、皆で悩み解決する。
PJメンバーのコミュニケーション強化に使えそう。
自分達のやり方を決めたこと。
こまめな戦略の建て直し(朝会)。
1週間ごとのタイムボックスを設けるところ。

最後に

筆者の会社は組み込み系の開発者が多数所属しており社内全体におけるアジャイル開発に対する理解度はまだ低いという現状である。このワークショップを通じて少なくとも参加者に対してはアジャイル開発の有用性が理解され、今後の彼らの開発の一助になったのではないかと考えている。

筆者紹介

現場リーダー兼プログラマ兼雑用係。1998年電気メーカー入社。2006年より少人数の機動力を活かしたプロセスを求めてAgile開発手法に出会い、取り組みを始める。

この記事に星をつける

おすすめ度
スタイル

BT