ウェブ制作におけるアジャイル開発とは
今回は、ウェブ制作における発注者側の立場の方に向けて、 アジャイル開発とは何ぞや というところを説明してみます。
アジャイル開発とは
「アジャイル開発」とは、システム開発において 変化への対応力を高めるための考え方とテクニック のことです。
さまざまな流派・流儀がありそのそれぞれが「これはアジャイルであってこれはアジャイルでない」という線引きをしていますが、目的が「 変化への対応力を高める 」ということであるという点についてはどの流派でも大体共通しています。
従来システム開発といえば「企画 → 設計 → 実装 → テスト → リリース」の各フェーズを一度かぎり行う「ウォーターフォール型」と呼ばれる開発スタイルが主流でしたが、それには変化に弱いという大きなデメリットがありました。 そのデメリットを乗り越えるためのものとして 1990 年代後半〜 2000 年代に提唱されたのがアジャイルの考え方や手法です。
ただ、源流をたどれば、反復的・適応的なシステム開発のやり方は 1950 〜 60 年代頃からすでに多くの現場で実施されていたとも言われています。
アジャイル開発の流派として有名なものには次のようなものがあります:
- XP: エクストリームプログラミング
- Scrum: スクラム
- Kanban: カンバン
- Lean software development: リーンソフトウェア開発
アジャイルとは
アジャイル開発の「アジャイル」という言葉は、「敏捷性」や「機敏さ」を意味する「アジリティ」の形容詞形 agile です。 英語では「アジェル」「アジル」と発音されることが多いですが、残念ながらなぜか日本では「アジャイル」という独特の呼び方が一般的になってしまっています。
ちなみに、ソフトウェア開発の世界では「 lean 」「 light weight 」といった単語も「アジャイル」と似た意味合いで使われることがあります。
世界と日本のアジャイル開発の現状
システム開発の現場におけるアジャイル開発の状況は世界と日本とで大きく異なります。
世界でも日本でも 1990 年代はいわゆるウォーターフォール型が主流でしたが、現在は世界のシステム開発先進国ではアジャイル開発が主流となっています。 各種統計を見るかぎり、すでに先進国ではアジャイル開発を採用していることは差別化要因にはなり得ません。 まともなシステム開発会社であればむしろできて当然だからです。
一方の日本では、アジャイル開発が年々広まってきてはいるものの( 2018 年時点では)アジャイル開発をメインに採用している開発会社はまだまだ少数派という状況です。 グローバルな視点から見ると、日本の状況がむしろ特殊と言えるでしょう。
日本がアジャイル開発の採用において遅れを取っている理由は、単純に日本がソフトウェア開発の後進国であるということもありますが、「ユーザ企業の経営層の IT リテラシーの低さ」や「 IT 業界の業界構造」等もその一因になっていると言われています。
なぜアジャイル開発か
アジャイル開発は主に「変化への対応力を高める」ための考え方やテクニックですが、なぜ近年アジャイル開発は話題になり多くの現場で採用されているのでしょうか。 それには大きく 4 つの理由があります。
- a) 状況が速く変化する
- b) 認識は変化する
- c) 人間は計画が得意ではない
- d) ソフトウェアは後から変更ができる
a) 状況が速く変化する : ビジネス状況は刻々と変化します。ウェブ制作に 1 〜 2 年かけていると、そのうちに外部環境・内部環境がどんどん変化していきます。従来のウォーターフォール型の開発を行うと、サイトが完成した頃には状況が変わっていて使い物にならなかった、ということが起こりえます。アジャイル開発は、航行する船が潮流や天気の状況にあわせて航路を調整することに似ています。
b) 認識は変化する : ビジネス状況の変化やプロジェクト進行中の学習によって、ステークホルダーの認識は変わります。人の考え方は、数ヶ月や半年経てば変わってしまっても不思議ではありません。認識が変わったときにはソフトウェアの役割も変わってしかるべきですが、ウォーターフォール型開発ではそれに十分に対応できないことがあります。
c) 人間は計画が得意ではない : 人間は長期間の予測・計画を立てるのが得意ではありません。どれだけ綿密に計画を行っても、検討漏れや不足の状況の発生というのは起こります。そもそも人間の計画というのは 100% 完璧ではない、という認識があれば、アジャイル開発のアプローチを摂ることはむしろ当然とも言えるでしょう。
d) ソフトウェアは後から変更ができる : 建物や乗り物等のハードウェアと比べたときのソフトウェアの大きな特長は、一度完成した後でも変更が比較的容易ということです。 a) b) c) の前提があったとしてもハードウェアの場合は変更が難しいという理由である程度ウォーターフォール型のスタイルになってしまうことは避けられませんが、ソフトウェアは理論上はあらゆる部分を変更することができます。ただし、開発体制や設計によって変更のしやすさは大きく変わるので、最初から「変更に対応しやすく」という点を重視して開発を行うことが重要です。
つまり、近年のビジネス状況や人間の特性を考えると、従来のウォーターフォール型の開発というのはむしろ不自然で、アジャイル開発のアプローチが合理的な選択肢となるような状況が多くなってきています。
おわりに
最近は ICT の発展によりビジネス状況の変化のスピードが速くなっているとも言いますので、「変化に対応する」ことの重要性は、ソフトウェアの世界だけでなく、事業戦略からオペレーションまでビジネス活動における広い範囲で言われているところかと思います。
枝葉のポイントはいろいろありますが、要は、ソフトウェア開発において さまざまな変化があることを前提として、変化に対応できる力を高めるための考え方やテクニックが「アジャイル開発」 と捉えておいていただければ、そう大きな認識のズレなく制作会社スタッフや技術者の人たちと議論ができるかと思います。
というわけで、非技術者の方に向けた「アジャイル開発とは何ぞや」の説明でした。 ご参考になれば幸いです :D