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
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
takato fukui
May 23, 2024
Programming
0
140
なぜコードを書いてはいけないか
takato fukui
May 23, 2024
Tweet
Share
More Decks by takato fukui
See All by takato fukui
関数の挙動書き換える
takatofukui
4
820
機関室の灯りは消えない
takatofukui
0
38
エンジニアリングの良い塩梅🧂🌸
takatofukui
0
58
dd-trace-goのtrace context propagation実装
takatofukui
0
500
ソフトウェアテスト
takatofukui
0
82
リファクタリング
takatofukui
0
140
本番分析データベースを丸ごと削除した人の顔
takatofukui
0
120
Other Decks in Programming
See All in Programming
Event Storming
hschwentner
3
1.3k
AIコーディングの理想と現実 2026 | AI Coding: Expectations vs. Reality 2026
tomohisa
0
1k
守る「だけ」の優しいEMを抜けて、 事業とチームを両方見る視点を身につけた話
maroon8021
3
280
受け入れテスト駆動開発(ATDD)×AI駆動開発 AI時代のATDDの取り組み方を考える
kztakasaki
2
520
今更考える「単一責任原則」 / Thinking about the Single Responsibility Principle
tooppoo
3
1.4k
AIとペアプロして処理時間を97%削減した話 #pyconshizu
kashewnuts
1
200
RubyとGoでゼロから作る証券システム: 高信頼性が求められるシステムのコードの外側にある設計と運用のリアル
free_world21
0
210
PostgreSQL を使った快適な go test 環境を求めて
otakakot
0
400
TROCCOで実現するkintone+BigQueryによるオペレーション改善
ssxota
0
130
メタプログラミングで実現する「コードを仕様にする」仕組み/nikkei-tech-talk43
nikkei_engineer_recruiting
0
160
DSPy入門 Pythonで実現する自動プロンプト最適化 〜人手によるプロンプト調整からの卒業〜
seaturt1e
1
530
nuget-server - あなたが必要だったNuGetサーバー
kekyo
PRO
0
170
Featured
See All Featured
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.3k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
170
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
63
53k
The browser strikes back
jonoalderson
0
760
The Illustrated Children's Guide to Kubernetes
chrisshort
51
52k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Scaling GitHub
holman
464
140k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Testing 201, or: Great Expectations
jmmastey
46
8.1k
Utilizing Notion as your number one productivity tool
mfonobong
4
240
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.6k
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