Slide 1

Slide 1 text

hamait2023 2023/12/16 @suchi A PHILOSOPHY OF SOFTWARE DESIGN Every engineer makes continuous small investments in good design

Slide 2

Slide 2 text

hamait2023 APoSD 2

Slide 3

Slide 3 text

hamait2023 APoSD A Philosophy of Soft Design 2nd Edition 3 • なぜ読んだか • 良書との噂 • アジャイルと相反する考えが書かれてるらしい • 英語の勉強に • 邦訳がない • TOEIC 550-700点(追い風参考記録) https://www.amazon.co.jp/dp/1732102201

Slide 4

Slide 4 text

hamait2023 APoSD アジャイルマニフェスト 4 • プロセスやツールよりも個人と対話を • 包括的なドキュメントよりも動くソフト ウェアを • 契約交渉よりも顧客との協調を • 計画に従うことよりも変化への対応を 価値とする。 https://agilemanifesto.org/iso/ja/manifesto.html

Slide 5

Slide 5 text

hamait2023 APoSD YAGNI 5 • You Aren't Going to Need it • そんなの必要にならないよ • 必要となるまでは追加しない • 予測で機能を作りこむな • 使われないことが多いし • 複雑化すると理解はつらく不具合も増える • The Rules of Programming • ルール4: 一般化には3つの例が必要 https://www.amazon.co.jp/dp/4814400411

Slide 6

Slide 6 text

hamait2023 APoSD APoSDでは 6 • Working code isn't enough • 動くコードだけでは不十分 • →動けばいいってもんじゃない • 戦術的ではなく戦略的プログラミングを

Slide 7

Slide 7 text

hamait2023 APoSD Complexity(複雑さ) 7 「この本は、ソフトウェア システムの複雑 さを最小限に抑えるように設計する方法につ いて説明しています」 • とにかく放っておくと複雑になるもの • 長期的に複雑さを抑えられるのが優れた設計 • 複雑性は依存関係と不明瞭さから生まれる

Slide 8

Slide 8 text

hamait2023 APoSD 8

Slide 9

Slide 9 text

hamait2023 APoSD Modules should be deep 9 • モジュールはなるべく深く • シンプルな実装より、シンプルなインターフェ イス

Slide 10

Slide 10 text

hamait2023 APoSD Different layers should have different abstractions 10 • 異なるレイヤはことなる抽象度を持つべき • × パススルーメソッド • × デコレータパターン https://en.wikipedia.org/wiki/Decorator_pattern

Slide 11

Slide 11 text

hamait2023 APoSD アジャイルについて 11 • 開発は増分的・反復的であるべき • 戦術的プログラミングになりがち • どうする? • 機能よりも抽象化に焦点を当てるべき • 抽象化が必要になるまで考えを先送りし、必要に なったらきれいに設計する • YAGNIがだめと言ってるわけではない

Slide 12

Slide 12 text

hamait2023 APoSD 巻末: デザイン原則と赤旗まとめ 12

Slide 13

Slide 13 text

hamait2023 APoSD まとめ Every engineer makes continuous small investments in good design 13

Slide 14

Slide 14 text

hamait2023 APoSD 感想 14 • 複雑性を最小限にするための戦略的に設計 がわかりやすく書かれている。素晴らし かった • 新たな切り口の納得できる設計原則 • 2-3年目研修にも良さそう • ベテランのアンラーニング • 英語力は上がった?

Slide 15

Slide 15 text

hamait2023 APoSD 英語の勉強になったか 15 • つらくてDeepLを同時通訳扱いに • ChatGPTあらわる • 「以下のソフトウェア設計に関するセンテンス を箇条書きで短くまとめて」 • 得意な分野で英語の勉強 • →AI利用で効率的に他言語の本を理解する練習

Slide 16

Slide 16 text

hamait2023 APoSD 16

Slide 17

Slide 17 text

hamait2023 2023/12/16 @suchi A PHILOSOPHY OF SOFTWARE DESIGN Every engineer makes continuous small investments in good design