ローコード開発の記事
ARTICLEアジャイル開発の考え方とメリット・デメリットについて解説
システム開発において、2000年ごろから超高速開発というカテゴリが生まれ定着してきました。従来のシステム開発よりも開発工数を短縮する手法が誕生し、その1つにアジャイル開発とよばれるものがあります。
アジャイル開発はこれまでの開発方法とは違い、小さく開発しPDCAのサイクルをまわしながらシステム開発を行うという考え方です。
本記事では、アジャイル開発とは何か、メリット・デメリットについてご紹介します。
アジャイル開発とは?
アジャイル開発は、システムやソフトウェア開発の手法のひとつで、機能ごとに小規模で「要件定義・設計・開発・実装・テスト・運用」のサイクルを繰り返します。
優先度の高い要件から順に開発をし、それらをまとめたものが1つのシステムとなります。アジャイル開発は、要件に変更があるものという前提で進めるので仕様変更に強いことが特徴です。
アジャイル開発の歴史
アジャイルソフトウェア開発宣言
引用元:アジャイルソフトウェア開発宣言
私たちは、ソフトウェア開発の実践
あるいは実践を手助けをする活動を通じて、
よりよい開発方法を見つけだそうとしている。
この活動を通して、私たちは以下の価値に至った。
プロセスやツールよりも個人と対話を、
包括的なドキュメントよりも動くソフトウェアを、
契約交渉よりも顧客との協調を、
計画に従うことよりも変化への対応を、
価値とする。すなわち、左記のことがらに価値があることを
認めながらも、私たちは右記のことがらにより価値をおく。
2001年、米国ユタ州に 17名の技術者・プログラマーが 集まり、開発手法について議論しました。その内容が「アジャイルソフトウェア開発宣言」にまとめられています。
アジャイルソフトウェア開発宣言は、ソフトウェア開発とそれに基づく12の原則を定義しており、アジャイル開発の公式文書として知られています。
アジャイル開発に向いているプロジェクト
アジャイル開発は、開発の途中で仕様の変更や追加が予想される案件に向いています。例えば、競争が激しいモバイルアプリなどにおいては、開発の途中で仕様の変更や追加がおこなわれることが予想できます。
逆に、業務システムのリプレースのような案件では、すでに作るべき機能が明確に決まっているので、ウォーターフォール開発が向いているでしょう。また、厳密な仕様を決めていないため、追加要件や変更を繰り返すうちに開発の方向性がブレやすくなるというデメリットがあります。
アジャイル開発の手法
アジャイル開発の代表的な手法を紹介します。
スクラム
スクラム開発は、アジャイル開発の中で最も有名な手法でチームで開発を進めるためのフレームワークのことです。チームでプロジェクトを遂行することに重点をおいていることから、スクラムと呼ばれています。
スクラム開発では、メンバーがイテレーションごとに計画立案、設計・実装をします。イテレーションごとに開発の進捗や動作を検証するため、メンバー間のコミュニケーションが重要になります。コミュニケーションが不十分だと、機能が正常に動かないといった不具合が生じる可能性があります。
エクストリーム・プログラミング(Extreme Programming)
エクストリーム・プログラミングは、仕様変更や追加要件などの変更に対し柔軟性を重視した開発手法です。初期の計画よりも技術面を重視しているので、プログラマー中心の開発手段です。
ユーザー機能駆動開発(Feature Driven Development)
ユーザー機能駆動開発は、ユーザーのビジネスを見える化し必要な機能を洗い出し、適切な間隔でシステム開発を繰り返す手法で、ユーザーにとっての機能価値を重視した開発を行います。
アジャイル開発とウォーターフォール開発の違い
従来の開発方法(ウォーターフォール開発)は、初めにプロジェクトの要件定義・設計をし、開発・実装・テスト・運用を段階的に進めます。そのため、実際に開発が始まるまでに時間を要しますが、開発がスタートするときには全てが明確に決まっているので、予算や納期をコントロールしやすいというメリットがあります。
一方、アジャイル開発は要件が高いものから順番に開発をするので、リリースのタイミングではすべての要件を満たしていませんが、リリースしてからブラッシュアップしていくことが可能です。つまり、アジャイル開発は機能ごとに段階的に開発することで、従来の開発手法と比べてシステムのリリース期間を短縮でき、短期間でビジネスを始めることが可能になるのです。
またウォーターフォール開発は、途中での仕様変更や追加開発が困難であり、万が一、仕様の抜け漏れなどがあると、前の工程から見直すことになったり、開発期間が延びる可能性があります。一方、アジャイル開発は機能ごとに細かい開発サイクルを繰り返すので、そのサイクルの中に仕様変更や追加開発などを組み込むことは容易です。
アジャイル開発の流れ
- リリース計画
- イテレーション
▼リリース計画
アジャイル開発では、計画段階で厳密に仕様を固めず、大まかな仕様と要求だけを決めます。これは「開発途中に仕様や設計の変更があることは当たり前」という前提があるからです。仕様を細かく決めていないので途中で変更があっても臨機応変に対応することができ、顧客のニーズに応えやすくなります。
▼イテレーション
おおまかな仕様・要求を決めたら、イテレーション(iteration)と呼ばれるサイクルを繰り返して開発を進めます。イテレーションとは「反復」という意味で、機能ごとなど小さな単位に分けられた開発を「計画・設計・実装・テスト」と繰り返しながら、機能をリリースしていきます。一般的に、イテレーションは1~2週間ごとに行われます。
アジャイル開発にもドキュメントは必要
アジャイル開発では、要件定義書や設計書などのドキュメント類が不要と考えている人もいるようですが、納品して終わりではなく、続いていくことも考えられます。チームの引継ぎや開発メンバーの入れ替わりもある可能性もあるのでドキュメントは用意しておく必要があります。
アジャイル開発のメリット・デメリット
開発するシステムに合った手法を選ぶためには、メリット・デメリットについても把握しておきましょう。
アジャイル開発のメリットは柔軟な対応が可能で開発スピードが早いこと
アジャイル開発のメリットは、不具合があったときに戻る工程が少ないことです。ウォーターフォール開発の場合には、最初に決定した設計・計画を重視するため、戻る工程が大きい場合や、その時間やコストが膨大に膨らむ可能性があります。しかし、アジャイル開発の場合は、小さな単位で開発をしているため、修正にかかる工程が小さくすみます。
また、開発途中でユーザーとフィードバックを行い確認をしながら進めることができます。仕様変更や追加に対応可能なので、ユーザーの要望に最大限応えることが可能です。
アジャイル開発のデメリットはスケジュールのコントロールが難しいこと
ウォーターフォール開発の場合は、最初に開発スケジュールを設定するので現状の進捗度を把握することが可能ですが、アジャイル開発では仕様・要件ごとにスケジュールを設定するため全体のスケジュールや進捗具合が把握しにくくコントロールが難しい点がデメリットです。
アジャイル開発とローコード開発プラットフォームで開発スピード向上へ
アジャイル開発のサイクルの中に、ローコード開発プラットフォームを取り入れることでより開発工数を削減することができます。ローコード開発プラットフォームは、ソースをあまり使わずにシステム開発が可能になります。
アジャイル開発の短いサイクルの中で、ローコード開発プラットフォームを活用すれば、開発工数をさらに抑えることができるので、短い納期の案件やリソース不足といった場合にも案件を受注することができるようになります。また、今抱えているエンジニアのリソースのまま案件を増やすことも可能になるでしょう。
ローコード開発プラットフォームについての詳細は、「ローコード開発で得られるメリットとは?」をご覧ください。
ライター/こんちゃ