継続的デリバリーのソフトウェア工学を読んだ #drc52

年度末プラスαの多忙につきだいぶあいだが空いてしまいました。デッドライン読書会の第52回の課題図書は「継続的デリバリーのソフトウェア工学」でした。

継続的デリバリーのソフトウェア工学 もっと早く、もっと良いソフトウェアを作るための秘訣
継続的デリバリーのソフトウェア工学 もっと早く、もっと良いソフトウェアを作るための秘訣

なぜに継続的デリバリーと書籍のタイトルに名付けたのかがいまいち分かりませんでしたが、ソフトウェアの開発にソフトウェア工学を取り戻そうという指南書としてとても良い本でした。なお、著者のデビッド・ファーリー氏は「継続的デリバリー」の本も出しています。

継続的デリバリー 信頼できるソフトウェアリリースのためのビルド・テスト・デプロイメントの自動化
いつまで手動でデプロイしているんですか? 現代では継続的にソフトウェアをリリースすることが必須になっています。本書は、継続的なソフトウェアのデリバリーを実現するためのビルド、デプロイ、テスト、リリースの自動化についての本格的な解説書です。

ソフトウェア工学とは

ソフトウェア開発は「実験的であるべし」っていう言葉だけが先行しがちな雰囲気を最近感じているので、実験的とはどういうことかの考え方を整理した冒頭の科学・工学・工芸・ソフトウェア工学の解説は繰り返し開くことになりそうです。勉強になりました。

ソフトウェア工学とは、ソフトウェアの現実的な問題に対する効率的、経済的な解を見つけるための経験的、科学的なアプローチの応用のことである。

1.2 ソフトウェア工学とはなにか

これを満たすために我々エンジニアは「学びのエキスパート」兼「複雑さ管理のエキスパート」を目指すのだと。つまり、、、

  • 学びのエキスパート
    • 反復的な作業
    • フィードバック
    • 漸進主義
    • 実験主義
    • 経験主義
  • 複雑さ管理のエキスパート
    • モジュラー性
    • 凝集度
    • 関心の分離
    • 抽象化
    • 疎結合
  • これらを満たす実践的なツール
    • テスト可能性
    • デプロイ可能性
    • スピード
    • 変数の管理
    • 継続的デリバリー

「学びのエキスパート」はアジャイル開発の考え方・思想に沿ってる感じ、「複雑さ管理のエキスパート」はアーキテクトの帽子を被ったときに悩みそうな話題ですかね。でも両方含めて、12の原則に入っているとも言えるのでしょうか。

アジャイル宣言の背後にある原則

工芸的なチームと工学的なチーム

個人的には言葉の響き的には工芸的なチームが好きですが…

「工芸的」とは職人芸を持つ人たちの集まりだと。例えるなら数ミリの精度で工作物を作れるチーム。人間的な能力の限界が長けている人たちの集まり。「工学的」とはより精度の高いものを作る機械を作ることができる人たちの集まり。メタな技術を持っているため数ミリではなく精度を追い求めることにより原子レベルの仕事ができるようになると。

本書で「数週間稼働している複雑なシステムにエラーが起きた」ときの両チームの振る舞い方の違いを使って説明していました。

工芸的なチームは、おそらくもっと徹底的にソフトウェアをテストすることになるでしょう。

2.9 反復性と計測精度

工学的なチームは、問題が起きるのを待つのではなく、計測精度の高い手段を使います。

2.9 反復性と計測精度

こういう捉え方の対比おもしろいですね。ここでいう「工学的なチーム」の振る舞い方は、まずは仮説ありきということなんでしょう。(科学の基礎として本書では、特徴づけ→仮説の定立→予測→実験を示している)

本書は新しい概念を示しているわけではない

1968年に提唱された「ソフトウェア工学」という言葉と、ここ30年ほどの成果をまとめたのが本書の位置づけのようです。監訳者(榊原氏)の解説では、

『継続的デリバリー』や『LeanとDevOpsの科学[Accelerate]』、『ドメイン駆動設計』、『チームトポロジー』あたりの書籍と、あとは『人月の神話』を読んだことがある人なら(かなりの読者があてあはまりそう)(略)

解説「継続的デリバリーのソフトウェア工学」の歩き方

だいぶ読者の「学びのエキスパート」レベルを上げてきましたね…wこれらに加えるとすると『エクストリームプログラミング』、『テスト駆動開発』が基礎にあると理解しました。(たしか引用されていました。参考書籍が最後にまとまってくれていると嬉しかったなぁ)

次のはどうしよう

決めてないので、これから相談して決めるところから。次は第53回です。

コメント

タイトルとURLをコピーしました