表紙の「いつまで手動でデプロイしているんですか?」という叩きが胸に突き刺さる書籍『継続的デリバリー』を読みました。スゴ本でした。544ページと結構な厚さがあるのですが、読んで良かったです。
次に挙げるような、ソフトウェア開発の現場で話題になっているトピックについて、かなり理解が深まる本です。一つ一つを深く掘り下げている訳ではなく、「どうして話題になっているか」「何故こうしたトピックに注目が集まるか」が、本書を読むと良く分かるようになります。
裏表紙で対象読者として「上級技術者向け」とされていますが、私はそうは思いません。むしろ、チーム開発で曖昧な責任やバタバタしたリリース作業、「あの人が居ないから進まない」みたいな苦労をした人ほど、読むと発見がある本だと思います。
実際、このような苦労を経験した人が読むと精神的にはキツイです。私がそうだったからです。挙げられているアンチパターンに思い当たる節があり過ぎて「お前らのプロジェクトはこうだから駄目!」って斬って捨てられる気分になりました。
いわゆる「ソフトウェアのリリース作業」から、属人的な要素を廃して、継続的に行うために徹底的な自動化を施すことにフォーカスされた本です。
本書の中では「デプロイメントパイプライン」と呼ばれ、これの構築方法やメリットについて8割くらいのページ数が割かれています。
特に第5章『デプロイメントパイプラインの解剖学』に、幾つか分かり易い図があったので、思い出し用に引用しておきます。
デプロイメントパイプラインを構築する上で、とにかく大事だとされる点は、くどいほどに繰り返される本でした。
いちいち全部が正論なので「ハイ」と言うしかありません。
他には、第14章「高度なバージョン管理」で紹介されている「抽象化ブランチ」という考え方が興味深かったです。ソースコード管理としてはtrunk(masterブランチ)に常にチェックインしておいて、分岐させるのはリリースブランチに留めるという考え方です。新機能はフラグで管理して有効/無効を切り替えられるように隠しながら実装を進めるというのが、最近のアンチブランチと呼ばれる流行と合致しています。確かに大きく肥大化・長生きしちゃった機能開発ブランチって、マージがうんざりする作業になりがちなんですよね。
個人的に「アジャイルが~」「リーン開発手法が~」「UI/UXが~」ってトップダウンで言われるのってもの凄く醒めてしまうのですが、この本は逆にボトムアップ視点で語られているので、「あぁこういうのが実現している現場がアジャイルってやつで、フィードバックのサイクルが早くなって、UI/UXの磨き込みも高速になるんだな」と一連の流れが腑に落ちたところも、凄く良かったです。ペース数は多くはありませんが、チームビルディングや組織の中でデプロイメントパイプラインをどう適用して行くか、といった話題にも触れてあり、なるほどなぁと感じました。
本当に良い書籍でした。
最近のツッコミ
参号館 日記(ariyasacca)