アジャイル トランスペアレンシー ~アジャイル開発における透明性の確保について~

第1回 アジャイル開発と透明性

この記事を読むのに必要な時間:およそ 2.5 分

「Agile Conference tokyo 2009」開催のお知らせ

「Agile Conference tokyo 2009」12月8日(火)開催本カンファレンスは,400名規模のアジャイル開発事例を持ち,世界No.1のアジャイル開発の企業として名高いThoughtWorks社からスピーカーを招いて,最新の大規模アジャイル開発について講演していただきます。

詳細は→ http://gihyo.jp/event/2009/agile

はじめに

みなさん,こんにちは。テクノロジックアートの設楽と申します。この度,アジャイル開発についてのコラムを連載させていただくことになりました。よろしくお願いします。

日々アジャイル開発に携わっておりますが,ここ1,2年でアジャイルに対する風向きが随分と変わってきているように感じます。具体的には,ボトムアップに先鋭的な開発者が普及に奔走していた頃と比べると,組織として本格的にアジャイルに取り組むところが増えてきています。

そのような中,本連載では,アジャイル開発をこれから導入してみようという方向けに,⁠そもそもアジャイル開発ってどういうものなんだ?」という疑問の答えを,再整理してみたいと思います。

アジャイル開発については,一言で本質を言い表すのはなかなか難しいものがあります。既に,変化の抱擁とか,俊敏な開発とか,早くて安い,みたいなものまで多種多様な表現をされています。ある意味,いずれもアジャイルの特性を表現しているのですが,誤解を与えがちな表現とも言えるでしょう。そこで,本連載では「透明性」というキーワードで,その特徴を説明していこうと思います。

第一回である今回は,⁠透明性とは何か?」についてご説明します。簡単に言うと,風通しを良くしておかないと変化には適応できないよ,という話です。最初に,変化とは何かについて整理しておきましょう。

変化を歓迎するアジャイル

アジャイル開発は,変化に強い開発手法です。変化とは,環境の変化でもあり,要求仕様の変化であり,最終的には仕様変更として表出するものです。なぜ変化への強さを求めたかというと,顧客の本当に欲しいもの(=ニーズ)は,顧客本人ですら事前に明確に定義(=要求仕様)することは難しいという状況に対応するためです。ニーズと要求仕様との間のギャップを解消する必要があります。

例えば,あるソフトウェアの受託開発の現場を想定します。完成し納品後,顧客から使ってみて初めてわかる要求がでてきました。

「もっとこうなっていればよかったのに。。。」

これは,本来あったニーズを,要求仕様としてまとめあげることができなかったことを意味します。新たに出てきた要求仕様を実装する為には,仕様変更として二次開発を発注することになるでしょう。このようなニーズと要求仕様のギャップは,最初からキチンとニーズを分析・整理していれば回避できたコスト(=無駄)とであると考え,極力開発に着手する前に回避すべく働くのがこれまでの考え方でした。

しかし,アジャイル開発では違います。

開発の途中・途中でフィードバックをすることで,ニーズの再認識を促し,一次開発の途中で要求仕様を変更する機会を顧客に提供します。開発途中でも軌道修正(=仕様変更)をすることで,無駄を最小限に抑えようとするのです。

そのやり方が正しいという論拠としては,開発期間中に環境変化で要件が変わってしまうくらい変化の激しい状況を考えているというのが一面にあります(ニーズそのものの変化)。また,解決したい問題の本質は,問題を抱えている本人にすら分からない,といった要件定義段階での困難さへの解決方法という側面もあります(認知によるギャップ)。更には,上流工程で抽象的なレベルで顧客のニーズを掘り出すよりは,実際に動くものを見ながらの方が結果的に低コストで要件定義できるというコスト面の優位性からの判断でもあるのです(低コストでのギャップ解消)。

このように,現状の要求仕様が,本当に顧客のニーズとマッチするのかを絶えず検証し,可能な限りそのブレを修正していくのがアジャイル開発手法のスタンスです。つまり,アジャイル開発においては,変化はニーズと要求仕様のギャップの検出ととらえ,積極的に見つけ出していくものなのです。

変化を受け入れるには透明性が必要

アジャイル開発では,変化を受け入れることがポイントとなることを説明してきました。具体的には,以下のようなアプローチがあります。

  • ニーズの再検証等により,認知されたニーズと実装と間のギャップを発見します。(変化の検出)
  • 変化に伴い軌道修正をするかどうかを正しく判断する必要があります。(変化の判断)

そこで必要になるのが十分で正確な情報の伝達です。もともとソフトウェア開発においては,現場のニーズと成果物の適合性が問題になることが往々にしてありました。これは,認知されたニーズと要求仕様の間のギャップ,もしくは,要求仕様と実装のギャップに大別できます。

画像

前者のニーズと要求仕様のギャップは,上述のように,要求仕様策定当時からのニーズの変化や潜在的なニーズの認識違い,もしくは要求仕様策定時のニーズの取り違いにより発生します。後者の要求仕様と実装のギャップは,要求仕様の曖昧さに起因することが多いです。

このように,ソフトウェア開発においては,随所に情報の伝達を阻害し,ニーズと実装の食い違いを引き起こすコミュニケーションの壁があります。それらの壁薄くして,開発者と,実際のニーズを持つ顧客(所有者/ユーザ)との間で,密な情報交換ができるようにすることが大切です。すなわち,壁を薄くする = ⁠透明性」を高めることが必要になるのです。

著者プロフィール

設楽秀輔(したらしゅうすけ)

1994年,慶応義塾大学経済学部卒業。エンターテインメント系企業にて経営管理を経験後,システムインテグレータとして金融アプリケーションなどのソフトウェア開発に従事。2007年,株式会社テクノロジックアートに入社し,現在に至る。

テクノロジックアートアジャイル開発グループグループリーダー。認定スクラムマスター。会計士補。

コメント

コメントの記入