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
530
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
どうすると生き残れないのか/how-not-to-survive
hanhan1978
17
13k
100分で本番デプロイ!Laravelで作るWebアプリケーション作成/100min_web_app_cicd
hanhan1978
1
110
PHPerのための計算量入門/Complexity101 for PHPer
hanhan1978
6
2.4k
集中して作業する技術/how_to_work_deeply
hanhan1978
62
48k
PHPでデータベースを作ってみた/create-data-with-php
hanhan1978
11
10k
ADRを一年運用してみた/adr_after_a_year
hanhan1978
8
3.9k
B+木入門:PHPで理解する データベースインデックスの仕組み/b-plus-tree-101
hanhan1978
5
5.1k
ADRを一年運用してみた/our_story_about_adr
hanhan1978
5
2.2k
PHPで学ぶ Session の基本と応用 / web-app-session-101-2024
hanhan1978
13
5.9k
Other Decks in Programming
See All in Programming
オープンソースコントリビュート入門
_katsuma
0
120
GitHub Copilot for Azureを使い倒したい
ymd65536
1
310
状態と共に暮らす:ステートフルへの挑戦
ypresto
3
1.1k
プロダクト横断分析に役立つ、事前集計しないサマリーテーブル設計
hanon52_
3
540
Improve my own Ruby
sisshiki1969
0
100
fieldalignmentから見るGoの構造体
kuro_kurorrr
0
130
Making TCPSocket.new "Happy"!
coe401_
1
3.1k
note の Elasticsearch 更新系を支える技術
tchov
9
3.5k
SwiftDataのカスタムデータストアを試してみた
1mash0
0
140
ComposeでのPicture in Picture
takathemax
0
130
ぽちぽち選択するだけでOSSを読めるVSCode拡張機能
ymbigo
5
2.7k
Optimizing JRuby 10
headius
0
570
Featured
See All Featured
Building an army of robots
kneath
305
45k
Unsuck your backbone
ammeep
671
57k
Reflections from 52 weeks, 52 projects
jeffersonlam
349
20k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
30
2k
Build your cross-platform service in a week with App Engine
jlugia
230
18k
The Cult of Friendly URLs
andyhume
78
6.3k
Testing 201, or: Great Expectations
jmmastey
42
7.5k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
RailsConf 2023
tenderlove
30
1.1k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.7k
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