アジャイルという言葉は「俊敏・機敏な」という意味であり、機能単位で開発サイクルを繰り返しながら進める開発手法をアジャイル開発といいます。開発中に仕様変更が出ることを許容する開発手法で、柔軟な対応が可能です。
アジャイル開発は機能ごとに開発プロセスを反復して行い、これを「イテレーション」といいます。一般的には1~2週間程度で反復をしながら順次リリースをしていくイメージで、繰り返すことによって完成度を高めていきます。
各開発工程を反復して行うアジャイル開発の性質上、役割分担がしっかりとされていなければこうかが発揮できません。開発スピードと完成の品質に関わってきますので、ここは固めておくようにしましょう。
アジャイル開発の中でもコミュニケーション重視のスクラム、技術面に重きを置いたXP、顧客にとっての機能価値を重視したユーザー機能駆動開発と大きく3つの開発手法が存在します。詳細は後述しますが、開発するアプリの目的などに合わせた手法を選ぶようにしましょう。
アジャイル開発は各機能を切り分けて進めることに加え、要件定義で全体の7割程度が固まっていれば設計フェーズに突入できることから全体の開発スピードが早いという特徴があります。できあがりを見ながら修正を重ねるため、迅速な対応が可能です。
各イテレーションで顧客のニーズとすり合わせを行えるアジャイル開発では、顧客側の希望を反映しやすいというメリットもあります。改善点が見つかれば次回のイテレーションで改善を織り込めるなど、細やかな対応が可能です。
小さな機能単位で開発を進めるため、トラブル発生時に後戻りする幅が限られています。そのため修正するための工数がそこまで多くはかからず、場合によっては再度設計し直すといった対応も可能です。
アジャイル開発は細かな計画を作るというよりもおおよその仕様決定で着手をするため、柔軟な対応がしやすい反面方向性がぶれやすくなっています。もともとのゴールをしっかりと決め、計画に沿って着実に進めたい場合には向かないといえるでしょう。
アジャイル開発では各機能のイテレーションを重ねて完成度を高めていきますので、修正や変更などにも順次対応します。そのため全体のスケジュールとして決まった通りに進めることが難しく、管理が難しいという面もあります。
アジャイルという名前ではありますが、アジャイル開発はどちらかというと「柔軟性」が特徴の開発手法です。豊富な経験と高いスキルを持つ開発者でなければ対応が難しいことから、開発状況によってはかえって時間がかかることもありえます。
アジャイル開発は該当範囲の要求の決定⇒設計⇒実装⇒テスト⇒修正⇒リリースという開発工程を機能ごとに繰り返して進めます。通常、1つのイテレーションは1週間から2週間程度で進められ、短期間の反復によりスピーディーな開発を実現します。また、このような手順を踏むことにより各工程単位での見直しや修正というプロセスを挟み込むことが容易になります。
アジャイル開発は「開発中に仕様変更があることは当然」という前提ですが、ウォーターフォール開発では開発中に工程を後戻りする想定をしません。計画をしっかり固め進めていくウォーターフォール開発と、開発工程を反復し進めるアジャイル開発のどちらが適しているかを見極めるようにしましょう。
スクラム開発はアジャイル開発の中で最も有名な手法で、開発を進めるためのフレームワークです。スクラムという名前の通りチーム内でのコミュニケーションを重視している点がポイントです。メンバーで計画を立案し、イテレーションの進行に問題がないか・成果物が正しく動作しているかを確認しながら進めていきます。メンバー間のコミュニケーションが成功のポイントであり、チーム全員が協力して開発を進めていくことが大切な開発手法です。
エクストリームプログラミングは「XP」とも略されることがありますが、事前に立てた計画よりも途中変更など柔軟性を重視する手法です。開発チームでは「コミュニケーション」「シンプル」「フィードバック」「勇気」といった4つの価値を共有することを推進しており、中でも「勇気」は開発途中の仕様現行や設計変更に立ち向かう勇気を示しています。計画よりも技術を優先するため、プログラマー中心の開発手法となっています。
ユーザー機能駆動開発は、ユーザー目線で価値のある機能を中心とし開発を進めていく手法です。開発する機能などによってチーム分けを行い、計画・設計・コーディングを進めていきます。アジャイル開発の中でも特に大規模案件に対応しやすい手法の一つであり、ユーザーがプロジェクトに求めるものを明確にしてから取り組む必要があります。その代わり機能面に重きを置いているため、他の開発手法よりも価値が高い機能を実装することが可能になります。
アジャイル開発のうち、それぞれの開発手法には特徴があることを紹介しました。ウォーターフォール開発も含め、目的に合わせた開発手法を選択するようにしましょう。アプリ開発について迷うことがあれば、まずはプロに相談してみてもよいのではないでしょうか。