バグのないソフトウェアを素早く作りたい――。そのために求められるのが「なんちゃって」ではない「真の」工学的アプローチです。その具体的なスキルセットを分かりやすく説いた 『継続的デリバリーのソフトウェア工学』 を、ソフトウェア開発者にして『教養としてのコンピューターサイエンス講義 第2版』などの翻訳者である酒匂寛氏が読み解きます。
『継続的デリバリーのソフトウェア工学』は、『継続的デリバリー』の共著者として著名なDavid Farley(デイビッド・ファーリー、ファーレイと表記する場合もある)による「もっと早く、もっと良いソフトウェアを作るための」書籍です。
本書が力を入れて説明しているのは特定の手法ではなく、高品質なソフトウェアを迅速に開発する際に役立つ10個のスキルとその関係です。
本書で説明されるテスト可能性、デプロイ可能性、スピード、変数の管理、そして、継続的デリバリー(Continuous Delivery)といった最終的な目標を目指せば、開発プロセスが逆算されて結果的に高品質なソフトウェアを迅速に開発しやすくなるでしょう。本書ではこの目標に到達するために、「学びのエキスパート」であることと「複雑さ管理のエキスパート」であることが求められるとし、それぞれに必要な5個ずつ合計10個の重要なスキルが具体的、かつ丁寧に説明されています。ただし、この10個のスキルそのものは目新しいものではなく、モジュラー性、凝集度、反復作業など以前からその必要性が指摘されてきたものです。
そのうえで本書が新しいのは、各スキルの要点を改めて整理し、それらの関連性を継続的デリバリーの実現に向けて実践的に提示している点です。例えば、継続的デリバリーという目標を設定したときに、各スキルがどのように関わってくるのかを具体的に説明しています。その際に筆者は「工学(Engineering)」であるために「安定性とスループット」を計測せよ、と繰り返し説きます。なぜなら、きちんとフィードバック(これもスキルのひとつです)を行う工学的アプローチこそが高品質で迅速なソフトウェア開発を支えてくれるからです。
なお解説されている10個のスキルは、開発対象のシステムだけではなく、実は開発組織そのものにも適用可能です。本書には随所にそのような言及が出てきます。「アジャイル」はこの20年でぜいたく品から必需品へと変化しています。本書はそのために必要な組織変革の役にも立つでしょう。
本書の原題は“Modern Software Engineering: Doing What Works to Build Better Software Faster”、つまり「優れたソフトウェアを迅速に作成するために役立つことをやる」というものです。この「役立つことをやる」という部分に著者が考える「工学」が表れているのです。
