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
450
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
B+木入門:PHPで理解する データベースインデックスの仕組み/b-plus-tree-101
hanhan1978
5
3k
ADRを一年運用してみた/our_story_about_adr
hanhan1978
4
1.2k
PHPで学ぶ Session の基本と応用 / web-app-session-101-2024
hanhan1978
12
4.5k
レガシー回避のPHP開発術/avoid_php_legacy
hanhan1978
13
11k
Laravel Collectionの計算量を調べてみた2023/laravel_collection_time_complexity_2023
hanhan1978
0
790
PHP で学ぶ Cache の距離の話 / study_cache_with_php
hanhan1978
7
1.8k
Laravel を低速化する技術 / how to slow laravel
hanhan1978
1
3k
俺の Laravel がこんなに速いわけがない! / My Laravel Too Fast
hanhan1978
0
1.5k
カンファレンスで登壇するとどうなるのか? / PHPTechCafe PHPerKaigi 2022
hanhan1978
3
380
Other Decks in Programming
See All in Programming
今の SmartHR にエンジニアで入社するとどうなるの?
daisukeshinoku
1
210
DocC Tutorial と TCA におけるテスト機能の紹介
kalupas226
1
330
OpenAPI を守るのは難しい
ohmori_yusuke
1
140
Ruby製社内ツールのGo移行
bgpat
2
260
AppDeveloperCon 2024 EU: Building polyglot developer experiences in 2024
salaboy
0
380
MySQL のインデックスの種類をおさらいしよう! / overviewing indexes in MySQL
okashoi
0
170
実践!RDRAを活用した既存システムの仕様変更 / Specification Changes in Existing Systems Utilizing RDRA
imamotohikaru
0
2.5k
Learning PHP and Static Analysis with PHP Parser
inouehi
1
250
コミュニティに参加したことで起きた変化
ohmori_yusuke
3
130
RubyVM を PHP で実装する 〜Hello World を出力するまで〜
memory1994
PRO
1
490
マイ隙間家具OSSたちのご紹介
karupanerura
2
150
C# 大統一理論推進委員会 会員のための Unity Package Manager プロジェクト構成案
monry
PRO
0
580
Featured
See All Featured
The Pragmatic Product Professional
lauravandoore
24
5.7k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
67
38k
Building Better People: How to give real-time feedback that sticks.
wjessup
350
18k
How STYLIGHT went responsive
nonsquared
92
4.7k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
39
4.3k
Build your cross-platform service in a week with App Engine
jlugia
223
17k
Building a Modern Day E-commerce SEO Strategy
aleyda
15
6.3k
Fontdeck: Realign not Redesign
paulrobertlloyd
75
4.8k
jQuery: Nuts, Bolts and Bling
dougneiner
57
7.1k
Creatively Recalculating Your Daily Design Routine
revolveconf
209
11k
GraphQLの誤解/rethinking-graphql
sonatard
48
9.1k
The Mythical Team-Month
searls
214
42k
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