最近、システム開発の世界で「アジャイル開発」という語をよく耳にするようになりました。「アジャイル(agile)」とは、英語で敏捷とか素早いという意味があります。
この「アジャイル開発」には、れっきとしたルーツがあります。それは、2001年、アメリカのユタ州に集まった、17人のコンピュータ・エンジニアによって発表された「アジャイルソフトウェア開発宣言」です。ここに、「アジャイル開発」の精神が明記されています。
アジャイルソフトウェア開発宣言
「アジャイルソフトウェア開発宣言」では、よりよい開発方法として、まず4つの「価値を置くべきこと」について述べています。
4つの価値
- プロセスやツールよりも、個人と対話を
- 包括なドキュメントよりも、動くソフトウェアを
- 契約交渉よりも、顧客との協調を
- 計画に従うことよりも、変化への対応を
これらからは、従来のソフトウェア開発でありがちだった様々な問題からの脱却、という意思が感じられます。それは例えば、組織・形式・約束・計画といったものにがんじがらめになって、融通が効かない、というような構造的な問題です。
半導体や通信分野における急速で著しい技術革新によって、インターネットは急速に発展しました。また、AI・ビッグデータ・機械学習などの新しいソフトウェア技術が出現しました。このため、システムに求められる機能や性能は、日々変化しています。
このような状況に対応するには、柔軟で機敏に仕様を変えられる、新しい開発手法が必要だ、と彼らは考えました。
以上のような宣言から始まったアジャイル開発は、前述のように時代の潮流に合ったソフトウェア開発手法として、ソフトウェア・エンジニアに受け入れられ、発展・普及してきました。
ではアジャイル開発とは具体的にどのように行うのでしょうか?次章でご説明します。
アジャイル開発の流れと手法
アジャイル開発の進め方と、代表的な手法をご説明します。
アジャイル開発のスタート
アジャイル開発では、初めから厳密な仕様を決めることはせず、おおよその仕様と要求だけを決めます。アジャイル開発では、後で仕様変更があることを前提にしているからです。次に、おおよその仕様・要求に基づいて、システムを小さな機能ユニットに分割して、ユニットごとに開発を行います。
イテレーション
アジャイル開発は、「イテレーション(iteration)」というサイクルを繰り返して進めます。イテレーションとは、英語で反復という意味ですが、その通り、ユニットごとに「計画」→「設計」→「実装」→「テスト」というプロセスを何度も繰り返し、機能ユニットを改善していきます。1回のサイクルは、1〜2週間ごとが一般的です。
重要なのは、各サイクルごとに実際に動くソフトウェアをリリースする、ということです。これにより、開発の進捗を見える化することができ、また次にどこを改善すべきか、方針を立てやすくなります。
開発チーム
アジャイル開発で重要なのはチームワークです。各ユニットごとの開発チームには、開発者だけでなく、実際にシステムを使う立場の人間(ユーザー)も関わり、緊密にコミュニケーションを取りながら開発を進めます。これにより、顧客やユーザーの要望を開発に反映しやすくなり、その結果生じた仕様変更も迅速にチーム全員で共有することができるようになります。
開発手法
アジャイル開発の代表的な手法には、スクラム、XP(エクストリーム・プログラミング)、FDD(ユーザー機能駆動開発)などがあります。
スクラムは、もっとも一般的なアジャイル開発手法で、開発者とユーザーが10人以下のチームを作り、5つのプロセスが規定されています。スクラムでは、開発のサイクルをスプリントと呼びます。スプリント計画というプロセスでは、最初に作業全体のゴールと計画を作成します。
開発中のチームでは、1回15分程度のデイリースクラムというミーティングで進捗を共有します。サイクルの最後に、成果を検査・評価するスプリントレビューを行い、その結果を反映して次のサイクルを計画します。
すべての開発プロジェクトが終了した後、スプリントレトロスペクティブという全体総括のプロセスを行います。
XPは、開発者を中心にした開発手法です。2人1組で開発を行うペアプログラミングや、コーディング規約など、開発を効率的に行うことを重視した手法です。スクラムが短期間に集中的に製品を開発するのに対して、XPは継続的にシステムが成長することを重視していることが特長です。
FDDは、ユーザーの目線で価値がある機能を中心に開発を進める手法です。開発者とユーザーが一緒にビジネスモデルを作成し、また、進捗をマイルストーンによって見える化します。
アジャイル開発の注意点
アジャイル開発は最近のシステム開発の潮流ではありますが、すべてのシステム開発で有効というわけではありません。アジャイル開発の注意点について、以下に解説します。
アジャイル開発のメリット・デメリット
アジャイル開発と、従来型開発(上から下へ、水が流れるようにシステム開発を行うことから、「ウォーターフォール開発」と呼ばれます)では、それぞれにメリット、デメリットがあり、プロジェクトの性質によって、どちらが適しているか、決定しなければいけません。
アジャイル開発のメリットは、何といってもその柔軟性です。開発の途中で不具合が生じた場合にも、一段階だけ開発サイクルを戻せばいいため、最小限のロスで済みます。
一方、アジャイル開発のデメリットは、プロジェクト開始の時点で最終的なシステムの姿が分かりにくいということです。そのため、リリースまでの期間が明確に決められなかったり、当初の想定よりも開発費が膨らむリスクがあります。
アジャイル開発に適したプロジェクト
アジャイル開発は、変化が激しい環境で使われ、常にバージョンアップが求められるようなプロジェクトに向いています。例えば、インターネット上のサービスや、モバイル端末向けアプリなどが、アジャイル開発に向いてるといえます。
一方、銀行などの何十年も使われてきたシステムをリプレースするようなプロジェクトでは、すでにシステムに必要な仕様が決まっているため、仕様変更を前提とするアジャイル開発よりウォーターフォール開発が適しています。
ただし、このようなシステムでも、近年ではインターネットやモバイル向けのサービス部分ではアジャイル開発が使われるなど、双方のメリットを活かした協業が行われています。
アジャイル開発者のスキル
なお、アジャイル開発でプロジェクトを行う場合、アジャイル開発のスキルを持ったエンジニアをチームに参加させることが重要です。
アジャイル開発のスキルを客観的に測るものとして、「アジャイルソフトウェア開発技術者検定試験」があります。プロジェクトのメンバーを選ぶとき、開発パートナーとなる会社を選定するときに、アジャイル検定を指標とするのも良いでしょう。
アジャイル開発は、変化の激しい現代という時代の要請に適したソフトウェア開発手法です。その柔軟性、持続性という特長を活かすことで、プロジェクトを効率よく顧客満足度の高いものにできます。
これからシステム開発を始める際には、アジャイル開発の利点を取り入れることを検討されてはいかがでしょうか?また、システム開発の外注先選びでお困りの方は、弊社までお気軽にご相談ください。
当社がこれまで支援してきた開発事例の共有、企画・コンサルティング・要件定義や実際の開発支援まで包括的にサポートさせていただくことが可能です。
システム開発を失敗しないために、弊社が相見積もりの取得までをサポートさせていただくことも可能です。むやみな営業電話などは決して行いませんので、まずは無料のご相談をお待ちしております。