Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

結果として

Slide 18

Slide 18 text

忖度LGTM

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

ヨクナイ

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

APoSD

Slide 23

Slide 23 text

APoSDの主題

Slide 24

Slide 24 text

ソフトウェアデザイン

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

複雑性 C = ΣCpTp ● Cp => 部分の複雑性 ● Tp => 部分開発にかかる時間 全体の複雑性は 部分ごとの複雑性の積算

Slide 28

Slide 28 text

欠けていたピースが見つかった

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

目次

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

まとめ

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

A Philosophy of Software Design