Upgrade to Pro — share decks privately, control downloads, hide ads and more …

A Philosophy of Software Design 2nd Ed

suchi
December 16, 2023

A Philosophy of Software Design 2nd Ed

2023/12/16の浜松IT技術者忘年会2023で「A Philosophy of Software Design 2nd Ed」を5分で薦めるLTをしました。

がやっぱり5分では無理がありました

#hamait
https://hamamatsu-it.connpass.com/event/298965/

suchi

December 16, 2023
Tweet

More Decks by suchi

Other Decks in Programming

Transcript

  1. hamait2023 2023/12/16 @suchi A PHILOSOPHY OF SOFTWARE DESIGN Every engineer

    makes continuous small investments in good design
  2. hamait2023 APoSD A Philosophy of Soft Design 2nd Edition 3

    • なぜ読んだか • 良書との噂 • アジャイルと相反する考えが書かれてるらしい • 英語の勉強に • 邦訳がない • TOEIC 550-700点(追い風参考記録) https://www.amazon.co.jp/dp/1732102201
  3. hamait2023 APoSD アジャイルマニフェスト 4 • プロセスやツールよりも個人と対話を • 包括的なドキュメントよりも動くソフト ウェアを •

    契約交渉よりも顧客との協調を • 計画に従うことよりも変化への対応を 価値とする。 https://agilemanifesto.org/iso/ja/manifesto.html
  4. hamait2023 APoSD YAGNI 5 • You Aren't Going to Need

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

    動くコードだけでは不十分 • →動けばいいってもんじゃない • 戦術的ではなく戦略的プログラミングを
  6. hamait2023 APoSD Modules should be deep 9 • モジュールはなるべく深く •

    シンプルな実装より、シンプルなインターフェ イス
  7. hamait2023 APoSD Different layers should have different abstractions 10 •

    異なるレイヤはことなる抽象度を持つべき • × パススルーメソッド • × デコレータパターン https://en.wikipedia.org/wiki/Decorator_pattern
  8. hamait2023 APoSD アジャイルについて 11 • 開発は増分的・反復的であるべき • 戦術的プログラミングになりがち • どうする?

    • 機能よりも抽象化に焦点を当てるべき • 抽象化が必要になるまで考えを先送りし、必要に なったらきれいに設計する • YAGNIがだめと言ってるわけではない
  9. hamait2023 APoSD 英語の勉強になったか 15 • つらくてDeepLを同時通訳扱いに • ChatGPTあらわる • 「以下のソフトウェア設計に関するセンテンス

    を箇条書きで短くまとめて」 • 得意な分野で英語の勉強 • →AI利用で効率的に他言語の本を理解する練習
  10. hamait2023 2023/12/16 @suchi A PHILOSOPHY OF SOFTWARE DESIGN Every engineer

    makes continuous small investments in good design