APoSDは良いぞ!/aposd_is_great

 APoSDは良いぞ!/aposd_is_great

A Philosophy of Software Designは素晴らしいと言い続けるだけのスライドです。

F04982ad61107b5408ad139966596316?s=128

Ryo Tomidokoro

October 14, 2020
Tweet

Transcript

  1. @hanhan1978 APoSD本は良いぞ! Fukuoka.php 2020/10/14

  2. 本日のテーマ 買って読んで。(洋書)

  3. コードレビュー してますか?

  4. 会社のブログにも書いた https://tech.innovator.jp.net/entry/2019/10/16/151227

  5. • 近年、GithubのPRにより形式化 • レビューを受けないとMerge不可 • レビューにより品質が向上??

  6. トレンドチェック https://trends.google.com/trends/explore?date=all&geo=US&q=%22Pull%20Request%22 2009年くらいから認知され てきている

  7. コードレビューの目的は何か?

  8. 他人の目を入れる • Aさんしか知らない実装を無くす => 属人性排除 • Bさんが知っている見地からコードを見ても らう => 設計の妥当性

  9. コードレビューの結果は 指摘事項として現れる

  10. 1. 仕様からの乖離は無いか 2. 誤りのあるコード 3. より良い実装・設計の提案

  11. 1. 仕様からの乖離は無いか 2. 誤りのあるコード 3. より良い実装・設計の提案 明確

  12. 1. 仕様からの乖離は無いか 2. 誤りのあるコード 3. より良い実装・設計の提案 曖昧

  13. 私が抱えていた問題(1)

  14. レビュー対象のソースコードに 「良くない臭い」を感じるが... • 上手く言語化できない • 説明が冗長になりコストがかかる

  15. 私が抱えていた問題(2)

  16. レビュー&指摘修正後のゴール • そもそも何で指摘するのか? • より良い設計という目的は曖昧

  17. 結果として

  18. 忖度LGTM

  19. 「説明長くなりそうだし、明日リリースだから...ヨシッ!」 「今夜は用事がある。少し気になるけど...ヨシッ!」 「読みづらいけど、説明が難しいし、緊急対応だから...ヨシッ!」

  20. ヨクナイ

  21. しかし、設計思想や目的を言語化す るのは難しい。 一体どうしたら...

  22. APoSD

  23. APoSDの主題

  24. ソフトウェアデザイン

  25. 特に注目しているポイント

  26. 複雑性 ソフトウェア開発を難しくする原因

  27. 複雑性 C = ΣCpTp • Cp => 部分の複雑性 • Tp

    => 部分開発にかかる時間 全体の複雑性は 部分ごとの複雑性の積算
  28. 欠けていたピースが見つかった

  29. 1. 仕様からの乖離は無いか 2. 誤りのあるコード 3. より良い実装・設計の提案 3. 複雑性を下げる実装・設計の提案

  30. 具体的な手法は 是非本を読んでほしい。

  31. 目次

  32. 著者のオススメ • コードレビュー時に参照 • チームでBetterなシステムデザインを目 指す

  33. まとめ

  34. • 複雑性という共通の敵が明らかに • レビューに活用、みんなで設計議論 • 気軽に使いたいから、誰か翻訳して!

  35. A Philosophy of Software Design