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
なぜコードを書いてはいけないか
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
takato fukui
May 23, 2024
Programming
150
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
なぜコードを書いてはいけないか
takato fukui
May 23, 2024
More Decks by takato fukui
See All by takato fukui
関数の挙動書き換える
takatofukui
4
880
機関室の灯りは消えない
takatofukui
0
47
エンジニアリングの良い塩梅🧂🌸
takatofukui
0
77
dd-trace-goのtrace context propagation実装
takatofukui
0
570
ソフトウェアテスト
takatofukui
0
91
リファクタリング
takatofukui
0
150
本番分析データベースを丸ごと削除した人の顔
takatofukui
0
130
Other Decks in Programming
See All in Programming
AIキャラアプリkaiwaの低遅延音声通話基盤をどう作ったか - AWS Gravitonで支える低遅延・低コストAI Agent基盤
mogamit
0
170
Observability in Practice:Grafana 與 Edge Device SRE 的那些事
blueswen
0
190
Creating Composable Callables in Contemporary C++
rollbear
0
200
鹿野さんに聞く!『TypeScriptコードレシピ集』で磨く実践力
tonkotsuboy_com
4
1.1k
SLOをサービス品質の共通言語にするために 取り組んできたこと
wakana0222
0
480
コンテキストの使い捨てをやめる — ビジネスルール駆動開発と miko —
ioki
0
270
symfony/aiとlaravel/boost
77web
0
120
Go1.27で導入されるジェネリクスメソッドでできること
mackee
0
280
Contextとはなにか
chiroruxx
1
390
Semantic Version 単位で戦略を柔軟に変えて、パッケージアップデートを自動化する
daitasu
1
350
SREは、MCPとSRE Agentをこう使え!
kazumax55
0
150
1年で人数1.5倍、PR数5.5倍増。 品質とアウトカムはどうなったか、 何が効いたか
ike002jp
0
120
Featured
See All Featured
Paper Plane (Part 1)
katiecoart
PRO
0
9.6k
Scaling GitHub
holman
464
140k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.5k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
62
44k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
410
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
67k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
410
Ruling the World: When Life Gets Gamed
codingconduct
0
280
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.8k
Transcript
なぜコードを書いてはいけないか 福井崇人
https://twitter.com/takano32/status/1345717252423733249
コードを書くと... -> 管理するコードが増える = コードが複雑になる “コードが増える”はこちらではなく こちらのような意味合い
管理するコードが増えるとどうなるか? • コードを読む時間がかかる a. エンジニアはコードは書くより読む時間に 9割かかると言われる • バグを生みやすくなる a. バグがないシステムはない
b. コード量に比例してバグが入り込む可能性が高くなる • 機能追加などに時間がかかりやすくなる a. コードが多いと修正の影響を受けやすくなり、その対応コストがかかりやすくなる b. コードが多いと修正するコード量も多くなりやすくなる
「管理するコードが増えるとどうなるか?」 -> それすなわち生産性が低くなる Frederick Phillips Brooks, Jr. (2015, April 15).
人月の神話. 丸善出版 (原著初版は1975) 指数関数的な伸びは 50年前から普遍的 『人月の神話』 ↓などについて言及している • 5人で2ヶ月かかる開発に+5人投入して 合計10人にしても1ヶ月では終わらない • 「遅れているソフトウェアプロジェクトへの 要員追加は、さらにプロジェクトを遅らせ る」 • 少人数チームによるコミュニケーション 負荷削減
Robert Cecil Martin. (2018, July 27). Clean Architecture 達人に学ぶソ フトウェアの構造と設計.
アスキードワンゴ コード行数はこれくらいしか増えてない のに... エンジニアはめっちゃ増えてる 参考
このようにコードを書くと負の部分が多く、 資産ではなく負債と扱われることが多い 資産 負債 🔥😠💦 頑張って書いたコードは資 産だと思いたいが... 実際にはこっち
また、多いコードはシステムにおける複雑性の1つ • システムの複雑性を成すもの ◦ 多いコード = 複雑なコード ← 今回はこの観点からの話 ◦
バラバラな使用技術 ▪ 「1つのシステムでawsとGCPのサービスをいいとこどりで組み合わせて使ってます」 ◦ 特別な仕組みの多さ ▪ (Webサイトで)「ページ表示速度遅いからここだけはバッチにしよう」 ▪ (Webサイトで)「ページ表示速度遅いからここだけキャッシュ入れよう」 ◦ バラバラな設計
でも負債とはいえコード書かないと何もできないのでは? じゃあコードを書く判断は? 管理するコード量 × 価値という観点で機能追加を例に考えてみる 価値 管理するコード量 100 200 今ここだとする
機能追加してコードが 2倍になっ たら、2倍良くなる? ?
コードを書かないためにはどうするか? • コードが複雑になる箇所の仕様を見直す a. コードが複雑になる箇所はどんな箇所 ? ▪ 複雑な条件 ▪ 多くの概念を扱っている箇所
• 「凄いユーザーは”優良ユーザー”として扱われるが、さらに凄いユーザーは ”優良ユー ザー 殿堂入り”として扱われる」 ▪ 個別最適 • 「口コミ一覧ページでは星 1の口コミは表示しないが、今回追加する ”口コミ平均値表示” では星1の口コミを含める」 • 「”オススメのレストラン ”カセットでは内観の1番優先度が高い画像を出すが、 ”近くのレ ストラン”カセットでは料理の一番優先度が高い画像を出す」 2倍良くならなさそうならコードは書かない方がいいかも
コードを書かないためにはどうするか? • ただただ機能追加を諦める • コードを書かずに価値提供する a. 運用でカバー的な 「最も読みやすいコードは、何も書かれていないコードだ。」 Dustin Boswell
& Trevor Foucher. (2019, September 24). リーダブルコード. 株式会社オライリー・ジャパン 2倍良くならなさそうならコードは書かない方がいいかも
• 特に競争になり得るコアドメインは価値に繋がりやすいし書いていいかも コアドメインの例 a. SNSにおける友達推測(「友達ですか?」) b. ECサイトにおける配送料計算 (割引とかがある) • “コアドメイン”ではないがサービスが大事にする品質特性の向上も価値に繋がりや
すいし書いていいかも a. スマホゲームのサクサク度 b. デザイン会社のホームページデザイン c. セキュリティ会社が提供するサービスのセキュリティ ← むしろこのためにコード書かないとダメ 2倍良くなりそうだったらコード書いてもいいかも
• ただ生産性という観点だと前にあげた指数関数的なグラフのように、管理するコー ドが多ければ多いほど生産性が下がる その生産性の下り幅を和らげるために設計が必要 これはエンジニアの腕の見せ所 2倍良くなりそうだったらコード書いてもいいかも 管理するコード 生産性 🔥😠💦 管理するコード
生産性
「なぜコードを書いてはいけないか」まとめ • 多いコードはシステムにおける複雑性の1つ • コードが多いと生産性が下がる • コードが生む価値と照らし合わせて書くかどうかを判断すべし • 「シンプルさ(ムダなく作れる量を最大限にすること)が本質です。」 アジャイル宣言の背後にある原則
. (n.d.). https://agilemanifesto.org/iso/ja/principles.html