アプリケーションの開発手法には、さまざまな種類のものがあります。本記事において詳細をひも解いていくアジャイル開発もその中に含まれ、「ニーズにしっかり合致するかたちで開発を進めたい」となった際には、それぞれの特徴や利点、向いている開発シーンに目を向けておくことが欠かせないと言えるでしょう。
また、イテレーションとスプリントといった2パターンの開発サイクルについても、詳しく知っておくことは重要です。
今回は、アジャイル開発と2つの開発サイクルについて特徴を解説していきます。あわせてそのほかの手法についても見ていくため、望ましいかたちの手法は何か見いだすうえでも参考にしてみてください。
アジャイル開発とは何か
開発工程の考え方や手法には、あらゆるパターンがあります。アジャイル開発は、システムやアプリケーションを開発する際に「納期をできるだけ短縮したかたちの手法」として主に採用されるのが特徴です。
アジャイル開発の概念は「アジャイルソフトウェア開発宣言」からスタートし、この中では、品質のよいシステムやアプリケーションを作るために、素早く効率的な開発を心がけることを内容としています。
アジャイル開発のサイクルについて
本来の意味を紹介しておくと、アジャイルはもともと「すばやい」という意味の言葉です。よって、そのまま意味を当てはめると、アジャイル開発は「迅速化された開発」・「すばやさのある開発」といったような意味合いで解釈することができるでしょう。
アジャイル開発では企画から最終的な実装・テストまでの行程を、ケースバイケースであり機能単位で分けて行えるのです。したがって必要最低限の機能でリリースができ、その分、短いスパンでの納品も可能になっています。
こういったプロセスでの開発は、臨機応変で柔軟な対応になるからこそ、途中での仕様変更にもスピーディーに対応できるのが強みです。このことから、「途中で仕様変更の可能性が生じやすいシステムやアプリケーション」を作ろうとする際に、アジャイル開発が選ばれやすいことがわかります。
ちなみに最近はネット環境の普及から、ECサイトなどのWebサービスの開発がさかんですが、Webサービスは途中での仕様変更などの要望もよく見られます。そのため、これらには特にアジャイル開発の手法が選択される傾向が大きいのです。
アジャイル開発におけるイテレーションとスプリントの違い
アジャイル開発には2つのケースのサイクル「イテレーション」と「スプリント」とがあります。「本当にこのアジャイル開発を選んで失敗はないか?」と不安になったときに備えて、各サイクルにおける概念を理解しておくことも不可欠です。
それでは両者にはどのような違いがあるのでしょうか。
- イテレーション:XP(エクストリームプログラミング)で使用される。
- スプリント:スクラムで使用される。
基本的には、このように使用される開発シーンに相違点があります。
まず、設計から開発、そしてテスト、改善といった一連のプロセスを繰り返していく開発サイクルは、イテレーションと呼ばれます。何度も渡ってサイクルさせリリースまで持っていくという性質から、「改善点の洗い出しとその対処がしやすい」のがポイントです。
しかし実際のところ、スプリントも同様にこのようにサイクルを繰り返すことを指します。具体的なアプローチの違いについては、上でも触れた開発シーンの特徴とあわせてひも解いていきます。
イテレーションとXP(エクストリームプログラミング)
まず原則として、エクストリームプログラミング=XPにおいては、イテレーションが見られます。これまでの経験則から開発の進め方や方針をまとめたものをXPといい、主に以下のような価値があるのが特徴です。
- コミュニケーション
- シンプル
- フィードバック
- 勇気(※途中で大きな変更に対応することの勇気を指す)
- 尊重(※チーム内でメンバーを尊重することを指す)
イテレーションでは、短いスパンで改善までを高頻度でとり行っていくため、失敗と改善という経験を自然と集めやすくなります。だからこそイテレーションはXP開発において組み込まれているのです。
スプリントとスクラムについて
イテレーションに対して、スプリントはスクラムという枠組みの中で採用されるようになっています。開発チームが具体的にどのような手順や方針で開発を進めていくのかというフレームワークは、スムーズな作業において不可欠です。この「取り決め・枠組みのようなもの=スクラム」と解釈するとわかりやすいでしょう。
スクラムには、作業計画を示す2パターンのバックログがあります。1つはプロダクトバックログで、技術的な改善が必要なポイントや機能といったものを中心に優先順位をつけたものを指します。これは顧客に提供するための価値を主に記述しているのが特徴です。これに対して当面の作業を指すものとして、もう1つのバックログ、スプリントバックログがあります。
よって、スクラムは、主に業務効率のポイントから見たときの枠組みとして知られます。
このことからスクラム開発にあたっての開発サイクルはスプリントと言われ、顧客にとっての価値や要望を、サイクルの繰り返しによって反映させていくのです。
アジャイル開発とさまざま開発手法の比較
昨今のDXの流れの影響もあり、ソフトウェア開発の手法においては、アジャイル開発の需要は高まってきています。「IT技術の利用により、さらによいサービスを提供しビジネス環境を変革していく」という考え方が、柔軟性のあるアジャイル開発とよい相性を発揮してくれるのが主な理由として考えられます。
最後に、別パターンの開発プロセスや手法について詳細をわかりやすくひも解いていきましょう。どのようなやり方で開発を進めればよいのか判断に迷った際には、それぞれのパターンや利点を知ることが役立ちます。
プロトタイプ手法
開発工程の考え方でのプロトタイプ手法は、試作を用意すること&評価を実施することを何度にも渡って繰り返していくことで完成にこぎつけます。
試作というかたちで顧客からの評価を得られるのが主なメリットです。しかし具体的な仕様やコストが定まっていない分、試作を繰り返す段階で仕様やコストが大きく変わる恐れも生じます。これは、明確なデメリットとして挙げられるでしょう。
スパイラル手法
開発手法にはスパイラル手法というものも存在します。これは「顧客・クライアントの要望の反映を短いスパンで繰り返し行うことによって、完成形を目指す」という方法になります。
何度も実装を行うため「フィードバックの反映がスピーディーであること」などはメリットです、しかし全体像が見えていない分、コストが増大したり納品までに遅延が生じたりするというデメリットもしばしば指摘されます。
ウォーターフォール手法
上位工程と下位行程に分けて、滝(=ウォーターフォール)のように下るイメージで細かく工程の進捗状況を把握し、ほかと比べて大型プロジェクトとも言える開発を進める手法は、ウォーターフォール手法と呼ばれます。
要件定義や設計がいわゆる上位工程で行われるものに該当し、下位の行程ではコーディングやテストを実施します。全体像を決めてタスクを細分化し工程を決めるため、順序がわかりやすい点などは大きなメリットです。しかしアジャイル開発と異なり、「途中で生じるスペック変更などには基本的に対処できない」というネックを持ちます。
まとめ
開発の進め方にはさまざまな手法が用いられるため、それぞれの手法に関する知識は十分に増やしておきたいところです。
特にサービスの多様化が著しい現代のなかでは、アジャイル開発はあらゆるタイプの開発シチュエーションにおいて技術者たちから目を向けられていると言えます。特徴を比較したうえで、もっとも望ましい手法を積極的に取り入れていきましょう。
Azureは開発の現場を含むあらゆるビジネス環境において業務効率化をサポートするクラウドサービスです。クラウドネイティブな基盤を構築して業務をスムーズに進めるためにも、Azureの導入はぜひ積極的に検討していきましょう。