Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
APoSDは良いぞ!/aposd_is_great
Search
Ryo Tomidokoro
October 14, 2020
Programming
2
460
APoSDは良いぞ!/aposd_is_great
A Philosophy of Software Designは素晴らしいと言い続けるだけのスライドです。
Ryo Tomidokoro
October 14, 2020
Tweet
Share
More Decks by Ryo Tomidokoro
See All by Ryo Tomidokoro
ADRを一年運用してみた/adr_after_a_year
hanhan1978
7
2.8k
B+木入門:PHPで理解する データベースインデックスの仕組み/b-plus-tree-101
hanhan1978
5
3.4k
ADRを一年運用してみた/our_story_about_adr
hanhan1978
4
1.5k
PHPで学ぶ Session の基本と応用 / web-app-session-101-2024
hanhan1978
12
4.9k
レガシー回避のPHP開発術/avoid_php_legacy
hanhan1978
14
11k
Laravel Collectionの計算量を調べてみた2023/laravel_collection_time_complexity_2023
hanhan1978
0
930
PHP で学ぶ Cache の距離の話 / study_cache_with_php
hanhan1978
7
1.8k
Laravel を低速化する技術 / how to slow laravel
hanhan1978
1
3.1k
俺の Laravel がこんなに速いわけがない! / My Laravel Too Fast
hanhan1978
0
1.7k
Other Decks in Programming
See All in Programming
RuboCop: LSP and Prism
koic
1
110
JavaScript Closure
asoluka
0
2k
TypeScriptの型とパフォーマンス (TSKaigi 2024)
ypresto
14
5.2k
Prepare for Jakarta EE 11 - Performance and Developer Productivity
ivargrimstad
0
360
Docker_OSS_ホスティング入門
satokoki645
0
140
Findy - エンジニア向け会社紹介 / Findy Letter for Engineers
findyinc
2
74k
The grand strategy of Ruby Parser
yui_knk
5
410
GoでParserを書く
karupanerura
3
450
Documentation testsの恩恵 / Documentation testing benefits
ssssota
1
570
Ruby on Fails - effective error handling with Rails conventions
talyssonoc
0
300
GNU Makeの使い方 / How to use GNU Make
kaityo256
PRO
13
4.4k
The World is a Network (and We Are Just Nodes)
whatyouhide
0
100
Featured
See All Featured
Art, The Web, and Tiny UX
lynnandtonic
290
19k
What the flash - Photography Introduction
edds
64
11k
How to Ace a Technical Interview
jacobian
273
22k
Rebuilding a faster, lazier Slack
samanthasiow
74
8.3k
The MySQL Ecosystem @ GitHub 2015
samlambert
244
12k
Build The Right Thing And Hit Your Dates
maggiecrowley
25
2k
Producing Creativity
orderedlist
PRO
338
39k
YesSQL, Process and Tooling at Scale
rocio
165
13k
5 minutes of I Can Smell Your CMS
philhawksworth
199
19k
Designing on Purpose - Digital PM Summit 2013
jponch
111
6.5k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
18
7k
GitHub's CSS Performance
jonrohan
1025
450k
Transcript
@hanhan1978 APoSD本は良いぞ! Fukuoka.php 2020/10/14
本日のテーマ 買って読んで。(洋書)
コードレビュー してますか?
会社のブログにも書いた https://tech.innovator.jp.net/entry/2019/10/16/151227
• 近年、GithubのPRにより形式化 • レビューを受けないとMerge不可 • レビューにより品質が向上??
トレンドチェック https://trends.google.com/trends/explore?date=all&geo=US&q=%22Pull%20Request%22 2009年くらいから認知され てきている
コードレビューの目的は何か?
他人の目を入れる • Aさんしか知らない実装を無くす => 属人性排除 • Bさんが知っている見地からコードを見ても らう => 設計の妥当性
コードレビューの結果は 指摘事項として現れる
1. 仕様からの乖離は無いか 2. 誤りのあるコード 3. より良い実装・設計の提案
1. 仕様からの乖離は無いか 2. 誤りのあるコード 3. より良い実装・設計の提案 明確
1. 仕様からの乖離は無いか 2. 誤りのあるコード 3. より良い実装・設計の提案 曖昧
私が抱えていた問題(1)
レビュー対象のソースコードに 「良くない臭い」を感じるが... • 上手く言語化できない • 説明が冗長になりコストがかかる
私が抱えていた問題(2)
レビュー&指摘修正後のゴール • そもそも何で指摘するのか? • より良い設計という目的は曖昧
結果として
忖度LGTM
「説明長くなりそうだし、明日リリースだから...ヨシッ!」 「今夜は用事がある。少し気になるけど...ヨシッ!」 「読みづらいけど、説明が難しいし、緊急対応だから...ヨシッ!」
ヨクナイ
しかし、設計思想や目的を言語化す るのは難しい。 一体どうしたら...
APoSD
APoSDの主題
ソフトウェアデザイン
特に注目しているポイント
複雑性 ソフトウェア開発を難しくする原因
複雑性 C = ΣCpTp • Cp => 部分の複雑性 • Tp
=> 部分開発にかかる時間 全体の複雑性は 部分ごとの複雑性の積算
欠けていたピースが見つかった
1. 仕様からの乖離は無いか 2. 誤りのあるコード 3. より良い実装・設計の提案 3. 複雑性を下げる実装・設計の提案
具体的な手法は 是非本を読んでほしい。
目次
著者のオススメ • コードレビュー時に参照 • チームでBetterなシステムデザインを目 指す
まとめ
• 複雑性という共通の敵が明らかに • レビューに活用、みんなで設計議論 • 気軽に使いたいから、誰か翻訳して!
A Philosophy of Software Design