知識

「失敗は当たり前」DX推進に最適な「アジャイル開発」って?【用語解説】

今日もDXに関する用語を解説していくよ。今回のテーマは「アジャイル」。英語ではagileと書いて「機敏な」「明敏な」という意味なんだけど、近年、ソフトウェアなどの開発手法の一つとしてこの「アジャイル」が注目を集めているんだ。でも「アジャイルな開発方法」とは、具体的にはどんなものを指すんだろう。一緒に考えてみよう!

「アジャイル開発」とは

「アジャイル開発」という考え方が生まれたのは2001年のこと。アメリカ・ユタ州で技術者やプログラマーたちが提唱したのが始まりといわれているんだ。彼らはソフトウェア開発をする上で、どんなことを大切にしたらいいのかを「アジャイルソフトウェア開発宣言」で定義付けたんだよ。その内容は以下の通り。

 

「アジャイルソフトウェア開発宣言」

私たちは、ソフトウェア開発の実践

あるいは実践を手助けをする活動を通じて、

よりよい開発方法を見つけだそうとしている。

この活動を通して、私たちは以下の価値に至った。

プロセスやツールよりも個人と対話を、

包括的なドキュメントよりも動くソフトウェアを、

契約交渉よりも顧客との協調を、

計画に従うことよりも変化への対応を、

価値とする。

すなわち、左記のことがらに価値があることを

認めながらも、私たちは右記のことがらにより価値をおく。

 

つまり、アジャイル開発とは機敏に動きながら、状況の変化に即座に対応してプロジェクトを進行することを指すんだ。

「ウォーターフォール開発」との違い

ソフトウェア開発においては「計画→設計→実装→テスト→リリース(運用)」という工程があるんだけど、アジャイル開発ではこの流れを小さいサイクルで何度も繰り返すのが特徴なんだ。リリースが最終ゴールではなく、リリース後も問題点や課題をその都度クリアしていきながらどんどんブラッシュアップしていくから、完成までの時間を大幅に短縮できるんだね。

実は、この概念が普及する以前は「ウォーターフォール開発」といって、まったく逆のやり方が主流だった。アジャイルとは違って「計画→設計→実装→テスト→リリース(運用)」の工程を一つひとつ段階的に終わらせ、プロジェクト立ち上げ時に決定した設計書通りにリリースされてようやく「開発完了」になる。一つひとつの工程に抜け漏れがないかを慎重に確認しながら進めていき完成度が高いものを世に出せる反面、スピードが遅いことがネックになっていた。

「アジャイル開発」のメリット

everythingpossible– stock.adobe.com

ウォーターフォール開発はいわば「完璧な状態」にもっていくことを目的に、一つひとつきっちりと完了させてリリースに向かう。特に最初の計画や設計をしっかり固める分、時間を犠牲にせざるを得なかった。それに、一つひとつを完璧に終わらせるあまり、途中で変更が生じた場合にはすぐに修正対応ができないというマイナス面もあった。

一方「アジャイル開発」は最初から100%を目指さない。「計画→設計→実装→テスト→リリース(運用)」を何度も繰り返して修正をしながら開発するから、チームに負担がかかりにくいんだよ。顧客の要望にも細かく応じることができるから、顧客満足度も上がるというメリットがあるんだね。

「アジャイル開発」のデメリット

だからって、良い部分ばかりではない。アジャイル開発はウォーターフォール開発と違って厳密な設計や計画を立てないから、当初と比べて開発の目的がぶれてしまいやすいんだ。また、最初にリリースまでの全体の流れやスケジュールを設定するウォーターフォール開発に対して、アジャイル開発は仕様や要件ごとにスケジュールを設定する。だから、全体の進行が把握しにくくなって、かえって納期が遅れてしまうなんてこともあり得るんだよ。

どんなやり方にもメリット・デメリットは存在するから、プロジェクトの状況に応じて何がふさわしいのかをしっかり見極めることが大切だね。

どうしてDX推進に「アジャイル開発」が最適なの?

プロジェクトチームのミーティングの様子

Sushiman- stock.adobe.com

近年、こうした「アジャイル開発」の考え方こそDX推進に取り組む上で必要なのではないかといわれているんだ。DXのような大規模かつ前例のないことに挑むプロジェクトは、途中でどんなことが起きるのか予想がつかないよね。加えて、目まぐるしく変わる社会の流れにも対応しないといけない。だからこそ、小さな課題をその場で一つずつ潰していきながらスピーディーに進行できるアジャイル開発のやり方が最適と考えられているんだよ。

また、アジャイル開発の現場では、短い期間で開発を繰り返すから頻繁にチームミーティングが開かれる。こうしてこまめにコミュニケーションをとることができれば、組織の関係性が強固になるよね。これは、DXを進める上で欠かせない、スムーズなチーム運営にもきっと役立つはずだ。

「アジャイル開発」の手法を知ろう

じゃあ、いざ「アジャイル開発」を取り入れたいと考えたときに、どんなことから始めたらいいんだろう。ここでは代表的な手法をいくつか紹介するね。

1:情報共有を頻繁に行う「スクラム」

チームが一体となって効率的にプロジェクトを進めるフレームワークのこと。ラグビーの「スクラム」が語源になっている通り、とにかくチーム間の連携が重視される手法だよ。開発状況や進捗、品質について細やかに情報共有をすることでサイクルをスムーズにまわしていくんだ。

2:進行状況が見える化されたツールを活用する「かんばん」

チーム全体でひとつのボードを共有し、「進行中」「完了」など、タスクをカードに書き込んで視覚的に整理する手法。トヨタ自動車の生産システムから生まれた言葉なんだよ。毎日ミーティングを開かなくとも、それぞれの状況や作業量がわかるんだ。

3:エクストリーム・プログラミング(XP)

プログラマーなど、いわゆる技術者を重視した開発手法のこと。XPでは顧客もチームの1人として参加し、共に完成を目指すんだ。アジャイル開発のなかでも最も柔軟に対応ができる手法といえるね。

4:ユーザー機能駆動開発(FOD)

顧客にとっての価値を重視した開発手法のこと。あらかじめ顧客のビジネスモデルや価値を理解し、どんな機能を実装すればいいのかを考えるやり方だよ。

【関連記事】
「アフターデジタル」最前線の中国に学ぶ、デジタルと融合した世界とは【用語解説】
2020年・日本のユニコーン企業一覧&世界ランキング公開【用語解説】

「アジャイル開発」で組織はどう変わる?

「アジャイル開発」は、どんな方法が最適かを何度も話し合ってトライ&エラーを繰り返しながら進めていくことが大切だ。そのためには、失敗を恐れずに進める勇気も必要だよ。とにかくやってみて、失敗しそうだったら改善するというやり方は「失敗は悪」という考えが根強い日本にはまだまだ浸透しにくいのかもしれない。でも、逆に考えれば「アジャイル開発」を導入することで、そうした組織の「壁」を打ち破ることができるかもしれないよね。