1. アジャイル開発とは
アジャイル開発とは、システムやソフトウェア開発などを素早く作り上げる手法の1つです。具体的には、開発手順を大きく区切るのではなく小さい単位でシステムを分担し、要件から計画・設計・実装・テストを機能単位の小さいサイクルで反復して開発します。
もともとアジャイルとは、素早い・機敏な・頭の回転が早いなどの意味があり、2001年にアメリカのユタ州に集まった17人のプログラマーら技術者が提唱した「アジャイルソフトウェア開発宣言」が始まりです。
「アジャイルソフトウェア開発宣言」とは、「プロセスやツールよりも個人と対話を、包括的なドキュメントよりも動くソフトウェアを、契約交渉よりも顧客との協調を計画に従うよりも変化柄の対応を価値とする」を理念としています。
上記の開発理念を達成するために「顧客満足を優先し、価値のあるソフトウェアを継続的に提供します。」「動くソフトウェアを2~3週間から2~3ヶ月という、できるだけ短い時間間隔でリリースします。」などのソフトウェア開発とそれに伴う12の原則が定義されています。
2. アジャイル開発とウォーターフォール開発の違い
アジャイル開発とウォーターフォール開発は、開発途中であっても仕様の変更や、追加の対応がしやすいのが大きな違いです。ウォーターフォール開発とは、あらかじめ全ての工程において開発設計を立てておき、システムの設計から実装・テストまでを計画的に完了させる手法です。
ウォーターフォール開発は、事前に計画を綿密に立てるため予算が組みやすかったり、システムの開発計画が建てやすいという開発方法であり、事前に開発予算や期間、使用方法が明確な場合に有効です。しかし、全体の計画を固めてから開発に取り掛かるため、開発が開始するまでに時間がかかるといったデメリットがあります。
また、ウォーターフォール開発の場合は、システムの仕様変更やミスが後から発覚した際に、手前の工程からやり直したり追加の費用や開発期間が延長してしまうリスクが避けられます。しかし、アジャイル開発は上述したようにシステムを小さく分割して同時進行で進めていくので、急な仕様変更にも柔軟に対応できます。
3. アジャイル開発のメリット
アジャイル開発は、追加の仕様変更や不具合が発覚してもスムーズに対応できるのが一番のメリットです。小さく分割してシステム開発を同時に進行していくため、仕様変更や不具合が発覚した際に、開発工程を大きく戻す必要がないからです。
また、ユーザーやクライアントの意見を取り入れやすいため、フィードバックをすぐに開発に取り込めるのもメリットです。フィードバックをすぐに取り入れることで、完成したシステムがユーザーやクライアントの理想から大きく外れづらいでしょう。
従来のウォーターフォール開発では、一から順番に開発を完了していくため、開発途中で仕様変更やミスがあった際は、複数の工程に戻って開発をやり直さなければならず、最悪の場合は一から作り直さなければなりません。そうすると、開発期間や費用が大幅に膨らむ可能性が出てしまいます。
また、アジャイル開発では計画段階で綿密な設計や計画を決めません。そのため、クライアントやユーザーとフィードバックを行いながらコミュニケーションが取れるため、クライアントやユーザーが満足できる仕上がりになる可能性が高いのもメリットです。
4. アジャイル開発のデメリット
アジャイル開発は、システムの方向性が定まりづらいという点がデメリットとしてあげられます。アジャイル開発では、初めの計画段階で綿密なゴールや道筋を決めずに開発に取り掛かるからです。
アジャイル開発のメリットでもある柔軟な仕様変更ですが、複数の改善やシステムの追加を行っていくと、気がつけば当初の計画や理想からかけ離れたシステムが出来上がってしまう可能性があります。
本来作りたかった製品とかけ離れすぎると、付随する他のプログラムやデザインにまで影響が出てしまうリスクもあります。
また、初めに開発計画を綿密に決めないことが原因で、開発期間が予測しづらく進捗状況が不鮮明であったり、納期に大幅な遅れが出てしまう可能性があるでしょう。さらに、納期が長引く影響で、開発費用が予想以上に膨れ上がる可能性もあります。
5. アジャイル開発に向いているプロジェクトとは
アジャイル開発に向いているプロジェクトとは、多くの仕様変更が見込まれる開発プロジェクトです。
▼ 具体的には、下記の4つがあげられます。
- 継続的にリリースが必要
- ユーザーのフィードバックが得られる
- クライアントと一体になって開発できる
- 開発チームが継続的に携わる
オンラインゲームのように1〜3ヶ月ごとに、追加要素や大幅なアップデートが必要なプロジェクトには、アジャイル開発が向いています。また、ユーザーからの要望や不満などのフィードバックに対応して、アジャイル開発であれば市場で求められる価値に迅速に対応できます。
次にクライアントや開発チームの一体感があるプロジェクトにはアジャイル開発が効果的です。はじめに綿密な計画を立てずに開発を進めるアジャイル開発では、クライアントとのコミュニケーションが不十分だと開発目的やビジョンが不透明なまま開発が進んでしまいます。
また、こまめに改善点やテストを繰り返してコミュニケーションを取りながら開発を進めていくアジャイル開発では、開発チームが頻繁に入れ替わってしまうと情報の共有やコミュニケーションが不十分になるため、余計な時間がかかってしまったり満足のいく出来にならないことがあります。
6. オフショア開発とアジャイル開発の有効性
オフショア開発とアジャイル開発はとても相性が良いです。オフショア開発とは、海外のITエンジニアやIT企業に開発を依頼する手法で、国内のITエンジニアが不足している日本と比較して安価で効率的に依頼できます。
アジャイル開発は複数の作業工程を順不同で進める手法なため、複数のITエンジニアが必要になるケースが多いです。そのため、一部や複数の制作プロセスをオフショア開発で進めることで、日本国内でエンジニアを確保する労力が削減でき、日本のエンジニアより安価で依頼できます。
ただし、アジャイル開発でオフショア開発を利用する場合は、コミュニケーションに注意しなければなりません。オフショア開発は海外の企業やエンジニアに依頼するため、主用言語が異なるためです。
こまめなコミュニケーションが必要になるアジャイル開発において、言語が異なると上手くコミュニケーションが取れなかったり、思わぬ所で理解の食い違いが起こる可能性があります。
しかし、コミュニケーションをスムーズに行うためには、ブリッジエンジニアに間に入ってもらうのが効果的です。ブリッジエンジニアとは、お互いの言語やITの知識を有しているエンジニアで、文字通り橋渡しになってくれる存在です。
7. アジャイル開発の手法
アジャイル開発にも複数の手法があるため、代表的な3つの手法を解説します。
7-1. スクラム
スクラムとは、ラグビーのスクラムが語源になっていてラグビーのようにチームが一体となってプロジェクトを進めていく手法です。アジャイル開発の中でも最もメジャーな手法で、チーム全員が中心となり効率的に開発が進められます。
開発チームのコミュニケーションを重視しているのが特徴で、チームメンバー全員がイテレーションごとに計画の立案から設計・開発をして繰り返し精査します。そのため、全てのエンジニアが開発チームとしてプロジェクトに参加する必要があります。
開発チーム全員にプロジェクトにおける責任感が生まれ、情報を共有しながら開発が進むため、お互いのサポートや効率的なシステム開発が期待できます。
7-2. エクストリーム・プログラミング(Extreme Programming)
エクストリーム・プログラミング(Extreme Programming)とは、柔軟性を重視した手法です。事前に立てた計画にとらわれず、途中経過や仕様変更を重視します。エンジニアがペアを組んでお互いをサポートしながら開発をするケースが多いです。
また、エクストリーム・プログラミングでは「コミュニケーション」「シンプル」「フィードバック」「勇気」の4つの価値を共有するのが特徴です。
特に「勇気」は開発途中に訪れる仕様変更や追加要素など、不確定で訪れる要素に立ち向かうという意味が込められており、チーム内での意識共有が必要不可欠になります。
勇気をチーム内で共有できていないと、度重なる変更を強いられた際に不満が募ってしまいチームのモチベーションが下がってしまうでしょう。また、ペアになったエンジニアの相性もあるため、綿密なコミュニケーションが取れる環境作りも大切です。
7-3. ユーザー機能駆動開発(FDD)
ユーザー機能駆動開発(FDD)とは、顧客にとっての機能価値(feature)を重視した手法です。ユーザービジネスの見える化を行うのが特徴で、必要な機能を洗いだすために事前にビジネスモデリングをする必要があります。
▼ また、ユーザー機能駆動開発には下記5つの基本活動が示されています。
- 全体モデル開発
- フィーチャーリストの構築
- フィーチャーごとの計画
- フィーチャーごとの設計
- フィーチャーごとの構築
上記5つの工程を、2週間程の短い間隔で反復的に繰り返しながらシステムを開発します。
前提としてクライアントの意見や要望を多く取り入れる手法なため、計画段階からクライアントとの綿密なコミュニケーションが必要です。
8. アジャイル開発の流れ
アジャイル開発は数週間のイテレーション開発期間を設けて、イテレーションごとに反復しながらシステムの改善や構築を進めて行きます。どこから着手していくのかは、業務プロセスによって異なるため、イテレーションごとに計画の立案からスタートします。
▼ 具体的なアジャイル開発の流れは主に下記のとおりです。
1. 計画:おおよその仕様だけを決めて、開発範囲全体を1〜3週間程の短い範囲で区切ります。
2. 開発:区切った範囲のどこから開発を進めるべきかを決めます。計画で決まった範囲の設計・実装・テスト・修正を繰り返します。
3. リリース:クライアントと話し合って問題がなければリリースして、改めて計画から作業を繰り返していきます。
1〜3を反復して繰り返すことで、途中の仕様変更にも対応しやすくなり、コミュニケーションがとれる機会が増えるため、チーム全体の連携が取りやすくなります。
9. まとめ
アジャイル開発を取り入れることで、従来のウォーターフォール開発と比較して短期間での開発や、開発途中での仕様変更などの柔軟性が格段にスムーズになります。特に、常にアップデートを要求されるアプリケーションの開発や、ユーザーの意見を取り入れやすい場合は特に有効です。
また、オフショア開発との相性も良いと言えます。アジャイル開発は大部分を丸投げして委託するのではなく、イテレーション毎に分けて開発を進めるため、連携が取りやすいからです。ブリッジエンジニアがいれば言語の壁がなくなるため、よりコミュニケーションが取りやすくなるでしょう。
ベトナムのオフショア開発会社比較20選!大手会社を一覧で紹介
「オルグローラボ」では、ベトナムでのラボ型オフショア開発事業を展開しています。オルグローラボを利用すれば、貴社の開発チームにベトナムの優秀なエンジニアを加え、長期的にプロジェクトにアサインすることができます。お客様のニーズに合わせた柔軟なチーム編成が可能ですし、プロジェクト開始から運用まで、継続的なサポートを提供しています。ぜひお気軽にお問い合わせください!