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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Ryo Tomidokoro
October 14, 2020
Programming
2
610
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
開発者が知っておきたい複雑さの正体/where-the-complexity-comes-from
hanhan1978
8
3.3k
Spec Driven Development入門/spec_driven_development_for_learners
hanhan1978
2
1.5k
フロントエンドがTypeScriptなら、バックエンドはPHPでもいいじゃない/php-is-not-bad
hanhan1978
8
13k
どうすると生き残れないのか/how-not-to-survive
hanhan1978
17
14k
100分で本番デプロイ!Laravelで作るWebアプリケーション作成/100min_web_app_cicd
hanhan1978
1
240
PHPerのための計算量入門/Complexity101 for PHPer
hanhan1978
8
3.4k
集中して作業する技術/how_to_work_deeply
hanhan1978
65
54k
PHPでデータベースを作ってみた/create-data-with-php
hanhan1978
11
11k
ADRを一年運用してみた/adr_after_a_year
hanhan1978
8
4.7k
Other Decks in Programming
See All in Programming
OSSとなったswift-buildで Xcodeのビルドを差し替えられるため 自分でXcodeを直せる時代になっている ダイアモンド問題編
yimajo
3
620
AWS re:Invent 2025参加 直前 Seattle-Tacoma Airport(SEA)におけるハードウェア紛失インシデントLT
tetutetu214
2
110
20260127_試行錯誤の結晶を1冊に。著者が解説 先輩データサイエンティストからの指南書 / author's_commentary_ds_instructions_guide
nash_efp
1
970
AI & Enginnering
codelynx
0
110
Grafana:建立系統全知視角的捷徑
blueswen
0
330
【卒業研究】会話ログ分析によるユーザーごとの関心に応じた話題提案手法
momok47
0
200
0→1 フロントエンド開発 Tips🚀 #レバテックMeetup
bengo4com
0
570
[KNOTS 2026登壇資料]AIで拡張‧交差する プロダクト開発のプロセス および携わるメンバーの役割
hisatake
0
280
humanlayerのブログから学ぶ、良いCLAUDE.mdの書き方
tsukamoto1783
0
190
CSC307 Lecture 07
javiergs
PRO
0
550
余白を設計しフロントエンド開発を 加速させる
tsukuha
7
2.1k
CSC307 Lecture 05
javiergs
PRO
0
500
Featured
See All Featured
jQuery: Nuts, Bolts and Bling
dougneiner
65
8.4k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
270
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
360
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
82
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
120
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.7k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
0
440
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
450
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.4k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
34k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.1k
Marketing to machines
jonoalderson
1
4.6k
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