アジャイル開発とは何か?変化に即応してユーザーの要望を最大限実現する手法とは
事業環境の変化のスピードが加速する昨今では、システムを開発する環境も変化を余儀なくされています。その中で注目されているのがアジャイル開発と呼ばれる開発手法です。本記事では、従来の開発方法と違い、変化に柔軟に対応し、ユーザーの要望を最大限に実現することを目的とするアジャイル開発について解説します。
アジャイル開発とウォーターフォール開発の違い
アジャイル開発とは、短いサイクルで設計・開発・実装・テストを繰り返し、優先順位の高い順に各機能をリリースしていき、全体としてのシステム完成を目指すといった開発手法のことです。「アジャイル(agile)」とは英語で「俊敏な」といった意味ですが、開発期間を短く区切って各機能をユーザー側でテストしてもらうことで、途中の仕様変更にも柔軟に対応できるようになります。2001年に米国のエンジニアによって『アジャイルソフトウェア開発宣言(Manifesto for Agile Software Development)』がまとめられ、考え方や実践の詳細が示されました。アジャイル開発は、必要なものを必要なときに供給し製品を早く市場に供給するという、トヨタ自動車の生産方式「Toyota Production System(TPS)」が源流になっています。
アジャイル開発が対比される、いわゆる従来型の開発手法はウォーターフォール式と呼ばれます。こちらは、最初にしっかりと要件定義を固め、設計・開発・実装・テスト・リリースという工程を滝が流れるように一つひとつ確認しながら行うものです。プロジェクト全体の進捗状況の把握は容易になりますが、次のフェーズに進むと後戻りができないのと、すべての工程が終了してはじめてシステムが使えるため、仕様変更や切り戻しが入った場合は、非常に大がかりになってしまいます。
アジャイル開発のメリット・デメリット
アジャイル開発は、細かい仕様変更に強いといったメリットがあるものの、デメリットもあります。ここではメリットとデメリットについて比較してみます。
アジャイル開発のメリット
アジャイル開発は、優先度をつけ必要な機能を素早くリリースできるため、スピード感を持って開発できる点が魅力です。徐々に変化を取り入れられるため、既存システムやWebベースのアプリなどの部分的な変更といった、小さい範囲から着手し、広げていくといった方法もできます。最初にリリースした機能のユーザー側の反応を確認してからプロジェクトを進められるため、ユーザー側での新しいシステムに対する抵抗を少なく抑えるといった効果もあるでしょう。
こうした特徴から、アジャイル開発はWebサイトのUIや使い勝手を変更するような場合に向いています。こうした案件が多くなる分野としては、eコマースやモバイルアプリの開発で力を発揮する形です。
アジャイル開発は、仕様変更を前提として柔軟に修正を行っていく開発手法ですが、案件に対して一定期間専属のチームを作るラボ型開発と組み合わせれば、より効率を上げられるでしょう。チームが固定されているラボ型開発であれば仕様変更が発生した場合でも、追加費用がなく対応できるため、コストを抑えられます。また、同じメンバーで対応するためシステムへの習熟によるスピードアップという面でも、効果が期待できます。
→ ラボ型開発については、こちらの記事もご参照ください。
アジャイル開発のデメリット
アジャイル開発は、ユーザーとよくコミュニケーションを取って顧客の要望を反映させようという開発姿勢なのですが、これがデメリットになってしまうこともあります。特に、コミュニケーションを密に取った結果として、あまりにも多くの仕様変更をしてしまう、といったパターンです。
根本的な原因としては、開発側での要件理解が不十分なことと、事業部側でもシステムへの理解が乏しく、提案された内容から成果物のイメージが正しくできていないことが考えられます。アジャイル開発の利点は、顧客からのフィードバックによる改善を重ねながらシステムをよりユーザーの要求に近いものに仕上げる工程にあります。しかし、前述のように根本的な部分でのコミュニケーションが不足していると、何度も修正して工数が膨れるだけでユーザーが満足するシステムができないという悲劇が起きてしまいます。
また、修復や手戻しが増えるにつれ、コミュニケーションがより複雑になり、ユーザーの開発側への信頼が薄れてくることもあり得ます。このような事態を避けるためにも、最初から顧客が実現したいビジョンを明確にしておくことが大切です。
アジャイル開発の方法
アジャイルで用いられる開発方法を紹介します。代表的なものにスクラム開発、XP(エクストリームプログラミング)、FDD開発があります。
スクラム開発
スクラム開発はアジャイル開発の代表的な方法で、コミュニケーションに重きを置いたフレームワークです。この方法では、プロジェクト全体をスプリントと呼ばれる1~2週間の小単位に区切り、その中で計画・設計から実装・テストまでの作業を進め、各機能を実現していきます。大体3~8人単位でチーム編成を行い、チーム内でラグビーのスクラムのように一丸となってコミュニケーションを密に取り合い、開発していきます。
スクラム開発は、メンバーにプロダクトオーナー(PO)やスクラムマスター(SM)といった役割が明確に与えられ、チーム内で密にコミュニケーションをとることが求められます。このため、先にも挙げた一定期間同じメンバーで開発するラボ型開発との相性が非常に良い手法です。
XP(エクストームプログラミング)
XP(エストリームプログラミング)は、冒頭でも紹介した『アジャイルソフトウェア開発宣言』の提唱者の1人であるケント・ベック氏により、1999年に考案された開発方法です。柔軟さ、簡潔さに重点を置いた開発方法で、アジャイル開発の先駆けになったものと評価されています。コミュニケーション、シンプルさ、フィードバック、勇気、尊重という5つのコンセプトを柱にしており、さらに反復やペア・プログラミングといった細かなプラクティスを4カテゴリに分けて具体的な開発方法が定義されています。
FDD開発
FDD開発は「Feature Driven Development」の略で、「ユーザー機能駆動開発」とも呼よばれるものです。この手法では、最初に全体リストを作り、そこからフィーチャーリストを構築。リスト化したフィーごとに計画・設計と開発プロセスを進めていきます。その名前にある「フィーチャー」とは、ユーザー視点で見た各機能のことをと呼んでおり、顧客にとっての価値に重点を置いた開発方法です。ユーザーでテストが可能な最新状態のデモ機を用意しておく、プロジェクトの内部・外部に向けて見える形で進捗を行う、など顧客にとって何が行われているのかを把握できるように配慮されます。
アジャイル開発をオフショア開発で行う際のポイント
アジャイル開発は、開発を海外に委託するオフショア開発とも相性が良いものです。
実施するにあたって注意しておきたいのは、短いサイクルでの開発と修正が繰り返されるため、顧客・メンバー間でのコミュニケーション頻度が高くなるという点です。オフショア開発を委託するチームの開発知識・実績・システムへの理解といった面で高いレベルが求められることはもちろんですが、そうしたチームであってもコミュニケーションの取り方によって、成果物の品質が変わってきます。デメリットとしても挙げたように、コミュニケーションの課題から修正を繰り返し工数ばかりが膨れる事態は避けなければなりません。このためにも、顧客を含め関係者を巻き込んだシステムの動作確認を行う環境を用意できるかどうか、顧客側での指示系統が整っているか、といった点を確認しておきましょう。
→ オフショア開発については、こちらの記事もご参照ください。
オフショア開発では、委託する国について迷うこともありますが、近年オフショア先として人気が高いのがベトナムです。ベトナムは国を挙げてエンジニアの育成を行っているため、若く優秀なIT人材の確保が容易なこと、最近ではAIやIoTといった高度な開発の実績が増えているという点で注目を集めています。また、日本語学習者が多いという点も魅力的です。
→ ベトナムでのオフショア開発については、こちらの記事もご参照ください。
まとめ:柔軟性の高さが魅力アジャイル開発
短期間で必要な機能を開発し、仕様変更にも柔軟に対応可能なアジャイル開発は、変化のスピードが速い現代のビジネスにあった開発手法です。この手法を成功させるためには、コミュニケーションが鍵となるため、コミュニケーションがしやすい環境づくりが大切になります。また、特に開発側での人材確保という課題を解決するためにも、相性の良いラボ型開発やオフショア開発といった手法と組み合わせるのが有効と言えるでしょう。
お問い合わせページ