アジャイル開発とは? 概要や手法、他の開発方法との違いをわかりやすく解説
アジャイル開発は、システムやソフトウェアの開発手法の一つです。アジャイル開発は近年取り入れられるケースが増えており、注目が集まっています。
本コラムでは、アジャイル開発の概要、他の開発手法との違い、成功事例などをご紹介します。
DX推進が叫ばれる現在、システム・ソフトウェアの開発を発注する機会が増えている企業は多いでしょう。アジャイル開発の基礎知識を知りたい方は、ぜひご覧ください。
アジャイル開発とは
アジャイル開発の概要とメリット
アジャイル(agile)は、直訳すると「素早い」「機敏」といった意味を持つ用語。アジャイル開発は「計画→設計→実装→テスト」という開発の一連の流れを、機能単位の小さいサイクルで何度も繰り返すという特長があります。また、それぞれの開発者は設計、実装、テストなどすべての開発作業を担当します。
アジャイル開発では優先度の高い要件から順に開発に着手し、開発した各機能の集合体を一つの大きなシステムとして形成。素早くリリースしてから、ブラッシュアップできるため、サービスリリースまでの期間を短くできるメリットがあります。
また「開発には変化(変更)が起きるもの」という考えを前提に進められているため、仕様変更に対応しやすく、プロダクトの価値向上に重点を置いた開発手法と言えるでしょう。
開発手法が生まれた背景と原則
アジャイル開発誕生の背景にあるのが「アジャイルソフトウェア開発宣言」です。「アジャイルソフトウェア開発宣言」は、2001年、アメリカ ・ユタ州で17人の技術者・プログラマーによって提唱されたのが始まりと言われており、アジャイルの定義と12の原則が明記されています。
「アジャイルソフトウェア開発宣言」は、内閣官房情報通信(IT)総合戦略室が発行した「アジャイル開発実践ガイドブック」でも参考情報に用いられるなど、アジャイル開発の公式文書として広く知られています。
参考:アジャイル開発実践ガイドブック/内閣官房情報通信(IT)総合戦略室
ウォーターフォール開発との違いと適したプロジェクト
アジャイル開発の概要を解説しました。では、従来取り入れられてきたウォーターフォール開発との違いはどこにあるのでしょうか。
ウォーターフォール開発
ウォーターフォール開発は「計画→設計→実装→テスト」という開発の一連の流れを、順番に完了させていく手法です。最初にプロジェクトの要件定義や設計を細部まで詰め、各工程は工程専任の開発担当が担当します。全工程が完了してから、システム・ソフトウェアが利用可能になります。また、計画に沿って開発を進めるため、途中の要求変更には対応しないのが原則です。
アジャイル開発とでは、開発の進め方、各工程の開発担当、システム・ソフトウェアの提供スピード、要求変更への対応に違いがあります。
アジャイル開発に適したプロジェクト
開発手法にはそれぞれ特長や違いがあり、プロジェクトに応じて使い分けが必要です。アジャイル開発はどのようなプロジェクトに適しているのでしょうか。
要件や仕様が固まっていないプロジェクト
システムやソフトウェアの開発は必要だと認識している一方、まだ要件や仕様が固まっていないケースは、アジャイル開発が適していると言えます。アジャイル開発は開発途中での要件変更に対応できる柔軟性があります。そのため、要件や仕様が固まっていなくても、基本的な機能を搭載したシステム・ソフトウェアを実際に動かしながら、必要な機能を追加して完成に近づけることが可能です。
仕様変更や追加が予想されるプロジェクト
ECサイトやSNSといったWebサービス、アプリ、ゲームなど、開発途中で仕様変更や追加が予想されるケースでも、アジャイル開発が適しています。またUIが重視されるケースなど、発注者の要望に都度対応しながらシステム・ソフトウェアを完成させたい場合にも、柔軟性の高いアジャイル開発が適しているでしょう。
アジャイル開発の流れ
リリース計画
アジャイル開発では、計画の段階でシステム・ソフトウェアの全体像を明確にはせず、大まかな仕様決定に留めます。厳密に決めないのは「開発途中に仕様や設計の変更が起きるのは当たり前」という前提があるためです。大まかな仕様決定に留めているため、方向性にぶれが起きないように注意が必要にはなりますが、仕様変更があっても柔軟に対応できるため、顧客のニーズに最大限応えられる強みがあります。
イテレーション
大まかな仕様が決まったら、イテレーションと呼ばれるサイクルを繰り返し、開発を進めます。イテレーション(iteration)は反復という意味をもつ用語。「計画→設計→実装→テスト」までを小さな単位かつ短期間で反復しながら、機能のリリースを繰り返します。一つのイテレーションは一週間〜二週間程度が一般的。イテレーションが完了するごとに新しい機能がリリースされ、細かく開発を進めるなかで完成度を高めていきます。
アジャイル開発の3つの代表的手法
スクラム開発
アジャイル開発にはさまざまな手法があり、なかでも有名なのがスクラム開発です。スポーツのラグビーにおいて、肩を組みチーム一丸となってぶつかるフォーメーションをスクラムと呼びますが、それと同様にチームワークを重視して開発を進める特長があります。また、スクラム開発ではメンバーがイテレーションごとに「計画→設計→実装→テスト」を進行しますが、イテレーションごとに進捗管理や動作検証を行うため、チーム内でのコミュニケーションが重視されます。
エクストリーム・プログラミング(XP)
エクストリーム・プログラミング(XP)は、技術面に重きを置いたプログラマー寄りの開発手法と言われ、計画よりも要件や仕様の途中変更への柔軟な対応を重視しています。エクストリーム・プログラミングでは、以下5つの価値を提唱しています。
- コミュニケーション(顧客とのコミュニケーションを大切にする)
- シンプル(最初の設計を必要最低限のものにする)
- フィードバック(頻繁にテストしフィードバックを重視する)
- 勇気(仕様変更などを受け入れ立ち向かう勇気)
- 尊重(ほかのメンバーを尊重し、チームで開発する)
ユーザー機能駆動開発(FDD)
ユーザー機能駆動開発は、顧客にとって価値のある機能を重視した開発手法です。まずビジネスモデリングを実施し、顧客のビジネスを見える化します。そこから必要な機能を洗い出し、短期の開発を反復しながら適切な間隔で機能を提供するという特長があります。顧客の視点を重視するため、高品質の機能を開発しやすいと言われる手法です。
アジャイル開発の成功事例3選
アジャイル開発によってリリースされたサービスをいくつかご紹介します。
大手携帯キャリアの事例
大手携帯キャリアのA社では、登録エリア災害・避難情報メールというサービスを展開しています。これはあらかじめ登録した自治体から、災害・避難情報に関する緊急速報メールが配信された際にSMSでお知らせするものです。離れて暮らす家族や友人が住む地域を登録しておくことで、安否確認や避難の呼びかけを可能にします。このサービスは、大手携帯キャリアのA社とシステム開発会社のB社のスクラム開発により生まれたプロダクト。約2か月半という短期間で、ユーザーテストからフィードバックまでを工程に含め開発されました。
大手IT企業の事例
大手IT企業のC社では、長年にわたって決済サービスを提供しており、その周辺サービスにアジャイル開発を活用しています。C社の決済サービスは、日本の決済インフラという特性上、安定運用が第一です。またそれと同時に、顧客や市場のニーズを適時反映するための組織として、柔軟性や最新テクノロジーへの追従不足といった内部的な課題があったと言います。
この課題を解決するべく、専門のアジャイル開発チームが参画。ビジネスプロセス基盤の社内インフラと商品開発プロセスについて、見直しを行いました。プロセス変革については、これまで分断されてきたシステム開発と運用の体制を一体化させることがアジリティの確保につながると考え、メインに据えています。また、開発と運用が一体化し素早く価値を提供し続けるためには、ITソフトウェアの更新も欠かせません。それに対応できる仕組みや人も含めて変化させるなど、技術面に留まらない組織的な仕組みが取り入れられています。
製造業の事例
自動車部品等の製造をしているD社では、フリートオペレーションサービスの開発を、アジャイル開発によって行いました。D社のフリートオペレーションサービスは営業車を管理するためのものです。従来、車の管理は多くが紙で行われてきました。D社が開発したサービスでは、それらを自動化。ライブレコーダーをベースにした車載端末を用いて、車両位置や走行状況などのデータが定期的に管理者に送信され、安全性改善に役立てました。また、急ブレーキなどのヒヤリハットが起きた場合、リアルタイムで動画が送られるなどの仕組みも備えています。
このサービスを開発するにあたり、D社はスクラム開発を使いました。立ち上げの際には、スムーズに開発が立ち上がるよう、専用開発ルームを設ける、開発メンバーを専任化する、スクラムコーチに入ってもらい第三者からアドバイスを受けるなど、開発環境を整備しています。また、開発に顧客を巻き込み、動作するソフトウェアを見せながら一緒に議論していきました。注意したのは、開発を複雑化させないことです。並行バージョンを開発しない、バックエンドとフロントエンドでソースコードを分けないなど複雑化を抑えることで、開発期間を削減しています。
アジャイル開発導入時の注意点
アジャイル開発は有効的な手法ですが、実際に導入を決める際、事前に注意しておきたいことがあります。
開発の目的と設計を明確にする
アジャイル開発は、仕様を明確にせずに要件を追加・変更しながら開発していく手法です。顧客ニーズに応えやすいというメリットがあります。しかしその一方で、ニーズに応え続けることによって方向性がぶれやすいというデメリットもはらんでいます。当初の方向性から大きく外れないよう、また無駄に開発期間が延びることのないよう、常に開発の目的や設計を明確にし、方向性をコントロールすることが必要です。
スケジュール管理
アジャイル開発は、チームで開発を進める手法です。一人の作業が遅れると、開発全体に影響を及ぼしてしまいます。予定通りにリリースできるよう、スケジュール管理は適切に行う必要があります。
メンバーのスキルバランス
メンバーのスキルバランスに偏りがあると、プロジェクトの進行を妨げる可能性があります。そのため、チーム全体でスキルを補い合えるよう、スキルバランスのとれたメンバーでチームを編成することが大切です。
受発注間でのコミュニケーションの頻度
希望するシステム・ソフトウェアを完成させるためには、受発注間でコミュニケーションをとることが重要です。特にアジャイル開発は、フィードバックを得ながら完成に近づけていく特長があるため、発注側の協力が欠かせません。開発側が発注側の要望を正しく理解し、システム・ソフトウェアに反映できるよう、受発注間でのコミュニケーションを積極的に行うことが大切です。
まとめ
システムやソフトウェアの開発手法の一つである、アジャイル開発。本コラムでは、「アジャイル開発」の用語解説も含めた概要、アジャイル開発に適したプロジェクト、開発の流れ、代表的手法、成功事例、導入時の注意点を解説していきました。
アジャイル開発は注目を集める開発手法ですが、取り入れれば必ずしも上手くいくというわけではなく、失敗してしまうケースも少なからずあります。アジャイル開発を有効的に使うためにも、メリット・デメリットを理解し、適したプロジェクトを判断していくことが大切です。また、アジャイル開発の成功には発注者側の協力も欠かせません。「開発会社に任せきり」とならないよう、綿密なコミュニケーションを積極的にとっていく姿勢が大切です。
アジャイル開発の経験値が少ない場合は、外部人材を活用するのもおすすめです。成功事例にあったように、コーチの役割を担える人物に加わってもらうなど、サポート体制を整備するのも良いでしょう。
従来の開発手法との比較や、メリット・デメリットの検討のうえ、効果が見込める際は、アジャイル開発でのシステム・ソフトウェアの開発を検討してみてはいかがでしょうか。
この記事が気に入ったら「シェア」