Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
ソフトウェアにおける「捨てやすさ」の探求
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Yutaka Kamei
July 19, 2025
Programming
110
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ソフトウェアにおける「捨てやすさ」の探求
Yutaka Kamei
July 19, 2025
More Decks by Yutaka Kamei
See All by Yutaka Kamei
チェックリストの正体に迫る!
yykamei
0
110
ミーティングなどの場における タイムキーパーの役割に スポットライトを当てたい
yykamei
0
110
コードと政治
yykamei
0
250
タスクは分割するのではなく、ステップを積み重ねていく
yykamei
4
1k
「困っていることはありません」は物事の見方を変えるチャンス
yykamei
0
100
Other Decks in Programming
See All in Programming
動作中のプログラムの中身をリアルタイムに覗く / Realtime Debugger for CSharp with Roslyn
prota
1
840
Snowflakeで業務アプリを作ろう。 Snowflakeのアプリ機能解説&実践ガイド
ayumu_yamaguchi
2
290
Starting & Sustaining Code-Based E2E Testing for Non-Coding QA Teams( #jasstniigata )
teyamagu
PRO
1
490
市販E-Readerを乗っ取れ 〜Embedded Swiftで電子ペーパーガジェットを制御する〜
trickart
0
200
モバイル交通系ICへのチャージ実例から考える、クロスプラットフォーム開発におけるiOS実機テスト設計とCI運用
yusuga
1
530
モジュールの視点からSwiftを読み解く #iosdc
s_shimotori
0
190
TiDB Cloudのカスタムコントローラーによるオートスケール対応
takaidohigasi
0
130
難しいけど、読めた。- OSSの入口に立った話。
sts11142
0
110
Vue Fes Japan 2026 タイムテーブル徹底解説
448jp
1
460
そのリトライ、死んだコネクションを使い回していませんか ── GoのHTTPクライアントとHTTP/2を実プロダクト障害から学び直す
myus4a
0
200
AGENTS.md Is Not Enough:Build Skills, Don't Download Them
lx_t
0
130
『寄り添うラジオ』をAIで作る 体験価値から逆算した、会話しないUXと品質設計
theoriatec2024
3
180
Featured
See All Featured
Design in an AI World
tapps
1
330
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
940
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
430
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
340
The Curious Case for Waylosing
cassininazir
1
520
Done Done
chrislema
186
17k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
500
Fashionably flexible responsive web design (full day workshop)
malarkey
409
67k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.4k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
2
280
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.2k
HDC tutorial
michielstock
2
880
Transcript
ソフトウェアにおける 捨てやすさの探究 Yutaka Kamei Scrum Fest Osaka2025 @関西大学梅田キャンパス KANDAI Me
RISE July 19, 2025
Self-introduction • Yutaka Kamei • @yykamei on GitHub • @_yykamei
on X • Timee, Inc.
Copyright © Timee All Rights Reserved 3 タイミーとは
Copyright © Timee All Rights Reserved 4 タイミーの特徴
Copyright © Timee All Rights Reserved 5 導入実績
Copyright © Timee All Rights Reserved 6 導入企業の例
今回は私が思っている主張をぶつけていこうと 思っています。間違っていることもあると思いま すがご了承ください。
“ソフトウェアはソフトでなければいけない” —Robert C. Martin(著)、角征典、髙木正弘(訳)『Clean Architecture 達人に学ぶソフ トウェアの構造と設計』KADOKAWA、2018年
ソフトウェアの「ソフト」とは? 簡単にいうと、 not hard ということ → 簡単に貫通させられるし、分割もでき るし、形を変えられるようなもの https://www.dictionary.com/browse/soft
ソフトウェアにはユーザーがいる
2種類のユーザー • もっとたくさん「機能」を欲しがる ユーザー • 日常的に特定の「機能」を使って現 状に満足しているユーザー
ソフトウェア開発者のジレンマ
ソフトウェア自身も形を変えたがる — ソフトだからね • 潜在的なバグが顕在化 • 脆弱性が発見された →ユーザーに使ってもらいながらこれらに対応する必要がある
リファクタリング • リファクタリングは見た目や振る舞いを変えずに内部構造を改善する取り組み ◦ これは最高だ! • しかし、リファクタリングは難しく、システムを破壊する可能性もある ◦ 振る舞いを変えないはずでは!?
“整頓は可愛くてふわふわした小さなリファクタリン グなので、誰も嫌いになれないはずだ” Kent Beck(著)、吉羽龍太郎、永瀬美穂、細澤あゆみ(訳)『Tidy First? ―個人で実践 する経験主義的ソフトウェア設計』オライリー・ジャパン、2024年
整理と整頓 • 「整理」は不要なものを捨てること • 「整頓」は必要なものを決められた 場所に置き、取り出しやすくするこ と
「捨てる」のは簡単だが「何を」「捨てる」のか? • ソフトウェアにおける「整理」(捨てる) は、意思決定と合意があれば簡単 • しかし、「捨てる」対象の特定が難し い場合がある • 機能のリプレイスのように、既存機能 を「捨てる」際に影響範囲の特定と安
全な削除が求められる • 対象が分散していると「捨てる」難易 度が非常に高くなる
最初は「適切な境界」に基づいていた(はず) • 「モジュールの分離」だとか「境界 の設定」みたいな話 • しかし、ソフトウェアは進化の過程 で当初の境界が曖昧になることが ある
最初から「捨てる」ことを目指す キャップとラベルは「プラスチック」として捨てられるようになっている
「捨てる」ことを目指す開発 • 「未来永劫使うわけではない」とい う前提で機能を考える • 時代や状況の変化で前提が簡単 に崩れることを受け入れる • 「あとで捨てられる機能」として導入 することで、心理的なハードルが下
がる • 「捨てる」対象が明確になり、確実 に捨てられる • Slack は Glitch というゲームからピボットし た ◦ https://www.johnnyrodgers.is/the-death-of- glitch-the-birth-of-slack/ • YouTube は最初は出会いを促すサービス だった ◦ https://en.wikipedia.org/wiki/History_of_Yo uTube Copeさんの “Stop treating code as an asset” に近い考えかもしれません
「捨てる」マインドとソフトウェア原則 • 「捨てる」ことを目指すと、「捨てる」対象がどこからどこまでかが明確になる • 「意味のあるかたまりにする」「同じ理由・同じタイミングで変更されるものをまとめ る」といった原則に従う • 「同じ理由・同じタイミングで変更されるか?」という問いを「同じタイミングで捨てら れるか?」に置き換えただけ ◦
違いはこう ▪ 「変更のタイミング」を意識するか? ▪ 期待通りその空間はきれいになるか?
プラグインの話 — 「土台」自体も「捨てる」 • プラグインの仕組みは「捨てる」のに便 利だが、その「土台」を最初からつくらな い • 一度「土台」を作ると、将来より良い方法 が見つかっても置き換えが難しいのでな
るべく「土台」自体も「捨てられる」ように しておきたい • 高価な決定を先送りし、「捨てる」ことで オプションを購入する ◦ オプションの行使は先送りに
「作り直し」の奨励と学びの蓄積 • 「捨てる」ことを目指すことは、必然的 に「作り直し」を奨励する • これは「車輪の再発明」に見えるかも しれないが、そうではない • 「捨てる」「作り直す」を繰り返すこと で、その過程での学びが蓄積される
• 関わったメンバーの経験がアップ デートされ、技量が向上する ちなみに、Copeさんはオープニングキーノートで “Move the rework to analysis” と言い、 Set-Based Design の文脈で作りなおせと言っていました
品質と「捨てやすさ」 • 「捨てる」からといって「雑につくればいい」わけではない • 目の前のリリースに向けて、リリース可能な品質のものを目指す • 「捨てる」ことを目指すからこそ、品質が良くなる可能性がある • 「捨てる」ためのソフトウェア設計は、単体テストのしやすさや変更・リファクタリング のしやすさにつながる
まとめ • ソフトウェアはソフトだが、ユーザーが増えると変更が難しくなる • 開発者は「変更を望む」と「現状維持を望む」ユーザーの間で板挟みになりがち • 「捨てる」という考え方は、未来永劫使わない前提で機能を設計し、明確な境界を 設定する • 「捨てる」ことを目指す開発は、「作り直し」を奨励し、学習と品質向上につながる
Thank you!