Dyno

ウェブ制作における「アジャイル開発」とは

今回は、ウェブ制作における発注者側の立場の方(≒技術者ではない方)に向けて、「アジャイル開発とは何ぞや」という説明をしてみたいと思います。

アジャイル開発とは

「アジャイル開発」とは、システム開発・ソフトウェア開発において 変化に対応しやすくするための考え方とテクニック のことです。

細かくいえばさまざまな流派・流儀がありそのそれぞれに「これはアジャイルであってこれはアジャイルでない」といった線引きがあったりしますが、「 変化への対応力を高める 」という目的についてはほぼどの流派でも共通しています。

従来システム開発といえば「計画 → 設計 → 実装 → テスト」の各フェーズを一度だけ行うスタイル(「ウォーターフォール型開発」)が主流でしたが、それには「変化に弱い」というデメリットがありました。 そのデメリットを乗り越えるためのものとして 1990 年代後半〜 2000 年代に「アジャイル」の考え方・手法が考え出されました。

ただ、源流をたどれば、反復的・適応的なソフトウェア開発手法そのものは 1950 〜 60 年代頃からすでに行われていたとも言われています。

アジャイル開発と言われる手法には例えば次のようなものがあります。

  • XP: エクストリームプログラミング
  • Scrum: スクラム
  • Kanban: カンバン
  • Lean software development: リーンソフトウェア開発

アジャイルとは

アジャイルとは、英語では「敏捷性」「機敏さ」を意味する「アジリティ」の形容詞形 agile です。

英語ではどちらかというと「アジェル」「アジル」と発音されることが多いのですが、なぜか日本では「アジャイル」という日本独特の呼び方が一般的になってしまっています。 「変化にすばやく機敏に対応できる」という意味でアジャイル開発には「アジャイル」ということばが使われているものと思います。

ちなみに、ソフトウェア開発の世界では「 lean 」「 light weight 」といったことば等も「アジャイル」と似た意味合いで使われたりします。

システム開発の現場におけるアジャイル開発の現状

ソフトウェア開発の現場におけるアジャイル開発の状況は、世界と日本とで大きく異なります。

90 年代は世界でも日本国内でもウォーターフォール型が主流だったとされていますが、ソフトウェア開発先進国では現在はアジャイル開発が主流になっていると言われています。 先進国ではすでにアジャイル開発は差別化要因ではなく、どこの会社も行えて当然の衛生要因的な開発手法となっているようです。

一方の日本では、アジャイル開発は年々広まってきてはいるものの( 2018 年現在は)全体から見るとまだまだ少数派です。 世界的に見るとむしろ日本の状況が特殊です。 日本がこうなっている原因としては、単にソフトウェア開発後進国ということもありますが、「ユーザ企業の経営層の IT リテラシーの低さ」「 IT 業界の特殊な業界構造」等もその一因だと言われています。

なぜアジャイル開発か

アジャイル開発は主に「変化への対応力を高める」ための考え方やテクニックですが、なぜアジャイル開発が大きく話題になり多くの現場で採用されるに至ったのでしょうか。 それには大きく 4 つの理由があります。

  • a) 状況は変化する
  • b) 認識は変化する
  • c) 人間は計画が得意ではない
  • d) ソフトウェアは後から変更ができる

a) 状況は変化する: ビジネス状況は刻々と変化します。ウェブ制作に 1 〜 2 年かけていると、そのうちに外部環境・内部環境がどんどん変化していきます。従来のウォーターフォール型の開発を行うと、サイトが完成した頃には状況が変わっていて使い物にならなかった、ということが起こりえます。アジャイル開発は、航行する船が潮流や天気の状況にあわせて航路を調整することに似ています。

b) 認識は変化する: ビジネス状況の変化やプロジェクト進行中の学習によって、ステークホルダーの認識は変わります。人の考え方は、数ヶ月や半年経てば変わってしまっても不思議ではありません。認識が変わったときにはソフトウェアの役割も変わってしかるべきですが、ウォーターフォール型開発ではそれに十分に対応できないことがあります。

c) 人間は計画が得意ではない: 人間は長期間の予測・計画を立てるのが得意ではありません。どれだけ綿密に計画を行っても、検討漏れや不足の状況の発生というのは起こります。そもそも人間の計画というのは 100% 完璧ではない、という認識があれば、アジャイル開発のアプローチを摂ることはむしろ当然とも言えるでしょう。

d) ソフトウェアは後から変更ができる: 建物や乗り物等のハードウェアと比べたときのソフトウェアの大きな特長は、一度完成した後でも変更が比較的容易ということです。 a) b) c) の前提があったとしてもハードウェアの場合は変更が難しいという理由である程度ウォーターフォール型のスタイルになってしまうことは避けられませんが、ソフトウェアは理論上はあらゆる部分を変更することができます。ただし、開発体制や設計によって変更のしやすさは大きく変わるので、最初から「変更に対応しやすく」という点を重視して開発を行うことが重要です。

つまり、近年のビジネス状況や人間の特性を考えると、従来のウォーターフォール型の開発というのはむしろ不自然で、アジャイル開発のアプローチが合理的な選択肢となるような状況が多くなってきています。

おわりに

最近は ICT の発展によりビジネス状況の変化のスピードが速くなっているとも言いますので、「変化に対応する」ことの重要性は、ソフトウェアの世界だけでなく、事業戦略からオペレーションまでビジネス活動における広い範囲で言われているところかと思います。

枝葉のポイントはいろいろありますが、要は、ソフトウェア開発において さまざまな変化があることを前提として、変化に対応できる力を高めるための考え方やテクニックが「アジャイル開発」 と捉えておいていただければ、そう大きな認識のズレなく制作会社スタッフや技術者の人たちと議論ができるかと思います。

というわけで、非技術者の方に向けた「アジャイル開発とは何ぞや」というご説明でした。 ぜひご参考にしてみてください :)