アジャイル開発やマイクロサービス、PaaSにコンテナと、現在のソフトウェア開発の現場では新たなキーワードが飛び交っています。これらの用語を解説しつつ、クラウド環境を最大限に生かしたクラウドネイティブ時代のソフトウェア開発について紹介していきます。
アジャイル開発が注目される理由
とりわけIoTやデジタル・トランスフォーメーションにかかわるソフトウェア開発の現場において、頻繁に聞かれるキーワードの1つに「アジャイル」があります。これは1990年代後半に提唱され始めたソフトウェアの開発手法であり、従来の「ウォーターフォール」型のソフトウェア開発の対極に位置するものと捉えられます。
要件定義から基本設計、詳細設計、プログラミング、各種テストといった工程でプロジェクトを進めるウォーターフォールは、プロジェクトの計画を立てやすいこと、進捗管理を行いやすいことなどがメリットとして挙げられます。しかし難点となっているのは、プロジェクトの最初期の段階で要件が固まっていて、それが変わらないことが前提となっていることです。もしプロジェクトの途中で要件が変わるということになれば、膨大な手戻りコストが発生し、場合によっては大幅なプロジェクトの遅延といった事態を招きます。
これに対し、IoTやデジタル・トランスフォーメーションの領域はビジネス環境や顧客ニーズの変化により、要件が変わることが珍しくありません。たとえばソフトウェア開発に1年間かかると考えた場合、1年後のビジネス環境や顧客ニーズを正確に捉えて要件を定義することは至難の業でしょう。こうした課題に対応する上で、最適な開発手法として注目されているのがアジャイル開発です。
アジャイル開発の大きな特徴として、1週間から2週間程度の開発期間を反復して繰り返すことが挙げられます。この期間の中で開発する機能の設計と実装、テストまでを行い、開発期間終了時にはソフトウェアとしてリリースします。これにより、ソフトウェアの機能を段階的にチェックすることが可能です。このような形でプロジェクトを進めることにより、アジャイル開発は途中で要件が変わってもウォーターフォールよりも対応しやすく、手戻り工数も抑えられるという利点があります。
ビジネススピードを加速させるアジャイル開発

このアジャイル開発とともにソフトウェアの開発現場で広まり始めているのが「マイクロサービスアーキテクチャ」です。これは一枚岩のソフトウェアの中に複数の機能を詰め込むのではなく、個々の機能を個別のソフトウェア(サービス)として開発し、それらをAPIなどで連携させることによってシステムを構成するという考え方になります。機能単位で開発を行うためアジャイル開発と相性がよく、また機能単位での修正やアップデートが行えることから、要件の変更にも柔軟に対応することが可能です。
マイクロサービスとは
