こんにちは、 @kz_morita です。
今回は、 『Clean Craftsmanship』 という本を読んだのでその感想などについてまとめます。
本について
Clean Craftsmanship 規律、基準、倫理おなじみのボブおじさんの、Clean シリーズの本になります。
Craftsmanship についての本で 以前 ソフトウェア職人気質 という本を読んで気になってたので、最近でたこの本も気になって読んでみました。
目次は以下のような感じです。 (長すぎるので折りたたんでます)
Clean Craftsmanship 目次
序文
はじめに
-「クラフトマンシップ」という言葉について
- たったひとつの道
謝辞
著者について
第1章 クラフトマンシップ
第I部 規律
- エクストリームプログラミング
- テスト駆動開発
a リファクタリング
- シンプルな設計
- 協力的プログラミング
- 受け入れテスト
第2章 テスト駆動開発
- 概要
- 基本
- 結論
第3章 テスト駆動開発応用
- ソート1
- ソート2
- 行き詰まり
- AAA(準備、実行、アサート)
- テストダブル
- アーキテクチャ
- 結論
第4章 テスト設計
- データベースのテスト
- GUIのテスト
- テストパターン
- テスト設計
- 変換の優先順位説
- 結論
第5章 リファクタリング
- リファクタリングとは?
- 基本的なツールキット
- 規律
- 結論
第6章 シンプルな設計
- YAGNI
- テストでカバーする
- 表現の最大化
- 重複の最小化
- サイズの最小化
第7章 協力的プログラミング
第8章 受け入れテスト
- 規律
- 継続的ビルド
第II部 基準
- あなたの新しいCTO
第9章 生産性
- 絶対にS**Tを出荷しない
- 安価な適応力
- 常に準備万端
- 安定した生産性
第10章 品質
- 継続的改善
- 恐れを知らない能力
- エクストリームな品質
- QAを軽視しない
- QAは何も発見しない
- テストの自動化
- 自動テストとユーザーインターフェイス
- ユーザーインターフェイスのテスト
第11章 勇気
- お互いをカバーする
- 正直な見積り
- 「ノー」と言う
- 継続的挑戦的学習
- メンタリング
第III部 倫理
- 最初のプログラマー
- 75年
- オタクから救世主へ
- ロールモデルと悪役
- 我々が世界を支配する
- 大惨事
- プログラマーの誓い
第12章 有害
- 第一に、害を与えてはならない
- 最高傑作
- 再現可能な証拠
第13章 誠実
- 小さなサイクル
- 容赦ない改善
- 高い生産性を維持する
第14章 チームワーク
- チームとして働く
- 正直に公正に見積もる
- 尊重
- 学習をやめない
訳者あとがき
- ソフトウェアクラフトマンの歴史
- クリーンクラフトマンシップ
訳者紹介
索引
感想など
大きく分けて 3部構成になってました。
第 1 部では、主に TDD や、XP についての話がメインとなってました。このあたりはほかの書籍などでも書かれてそうな内容ですが、実際のコードを交えながら TDD のステップによってどのようにコードが変化していくのかがわかりやすく書かれています。
第 2 部では、基準という点が書かれてました。 新しい CTO がやってきて、エンジニアであるあなたに期待することを伝えるという体で書かれています。 最低限守るべきとされている項目が書かれてます。 このあたりは、開発に関するところからチームについて、そして見積もりについてなどについて書かれていてかなり参考になりました。 ソフトウェアエンジニアとして、定期的に見返したいリストを手に入れることができます。
第 3 部では、ソフトウェアエンジニアの倫理について書かれてました。 ソフトウェアはいまや世界のあらゆるところで動いていて、自分の書いたソフトウェアが思っている以上に現実世界に及ぼす影響が大きいということが書かれています。 例としてソフトウェアによる事故について言及されてました。
影響が大きいからこそ、規律を守り、基準、倫理を持ちながら開発をしていくことの重要性を再認識しました。
本文中の プログラマーの誓い
という節は 著者である Robert Martin 氏が、公開した「誓い」について書かれていてます。
この章は個人的に非常に共感しましたし、ソフトウェアエンジニアとして常に意識しなければいけない点だと再認識しました。
下記URLでも見ることができます。
- https://www.infoq.com/jp/news/2017/10/oath-programmers/
- http://blog.cleancoder.com/uncle-bob/2015/11/18/TheProgrammersOath.html
読み終わった率直な感想としては、ソフトウェアエンジニアとして意識しなければいけないエッセンスがギュッと詰まった本だなと思います。
具体的な技術のテクニックなどではないですが、ソフトウェアエンジニアとして craftsmanship を持つための心構えなどを知るための良きバイブルとなる本だと思います。