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
Split a huge class
Search
furuhashin
December 26, 2022
Technology
170
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Split a huge class
furuhashin
December 26, 2022
More Decks by furuhashin
See All by furuhashin
what changed when my position changed
furuhashin
0
230
Obsidian is good
furuhashin
0
480
遅い処理を速くするためのティップス集
furuhashin
0
140
密かにバグ管理簿というものを作っている話
furuhashin
0
250
Other Decks in Technology
See All in Technology
Slack上でインフラをトラブルシュートする! Agentic Platform Engineeringの第一歩
teru0x1
4
1.5k
The Agent Builder Loop from Daily Work to OSS
minorun365
PRO
3
150
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
3
480
Screen Lens - 今見てる画面を翻訳する
komagata
0
260
DEFCON_CHV_CTF_Write-up.pdf
bata_24
0
140
Code4Lib JAPANカンファレンス2026 開会挨拶 / Code4Lib JAPAN Conference 2026: Opening Remarks
ykiyota
0
350
家のリアーキテクト・リファクタリング
suguruooki
0
130
クロスボーダーM&AのValue Upを支えるプロダクト開発。日米チームのハブになったプロダクトエンジニアの実践 / Product Engineering Conference 2026
genda
0
120
銀行勘定系システムにおける開発プロセス刷新×AIによる環境モダナイゼーション / Development Process Transformation and AI-Driven Environment Modernization
muit
0
520
コーディングエージェントでM5Stack系の開発を少し試した時の話 / M5 Japan Tour 2026 Autumn 東京
you
PRO
0
180
GoにおけるFFIのこれまでとこれから
goccy
5
2.5k
GoCon2026 - Open Source, Open World
sanposhiho
4
3.4k
Featured
See All Featured
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.2k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
300
Color Theory Basics | Prateek | Gurzu
gurzu
0
460
Paper Plane (Part 1)
katiecoart
PRO
1
11k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
240
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
690
What does AI have to do with Human Rights?
axbom
PRO
1
2.4k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
Building a Scalable Design System with Sketch
lauravandoore
464
34k
Scaling GitHub
holman
464
140k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
4.7k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
490
Transcript
Nobukatsu Furuhashi 巨大クラスをどう分解するか
自己紹介 • @furuhashin • 趣味 • 顕微鏡 • 乾麺の十割そばで蕎麦湯を抽出
なぜ分解するのか?
なるべく変更を局所化したいから
高凝集、疎結合
システムを変更しやすく、シンプ ルに保つ
ではどのように分解するのがいい のか?
• 上から100行ずつ分解する • 名前順で10個の関数ずつ分解する • CRUDで分解する • 画面ごとに分解する • テーブルごとに分解する
• 関心事で分解する • 役割で分解する • etc
分解方法は無数にある
とりあえず既存関数を分類してみ た
バリエーションが少しずつ見えて くる
同時に歴史(時間軸)というものも 見えてくる
同時期に作られた関数達は関連が あるっぽいってやつ
話は変わるが・・・
そもそも変更はなぜ起こるのか?
ビジネスを加速させるため
ではどのような軸で変更が発生す るのか?
• 物件の画像を複数登録したい • 不動産会社の情報を詳細に登録したい • 不動産会社の担当者が退職した際に引 き継げるようにしたい • 自動配信の文言を修正したい •
物件の重複チェックをしたい • 物件の公開期限を変更したい • 不動産会社の月間レポートを表示した い • 不動産会社の担当者で代理ログインし たい • 希望条件で物件を検索したい • 自動配信が重複しないようにしたい • 物件のマイソクのデザインを変更した い
変更が起こりやすいビジネス上の 概念に気づく
ただ全部が全部変更されやすいわ けではないので・・
分解して変更の局所化をする
また、変更が起こりやすい概念の バリエーションが存在する
物件という概念を1つ取って も・・
公開物件、非公開物件、公開期限切れ 物件、削除物件、おすすめ物件、重複 物件、掲載保留物件、配信対象物件
何をどうまとめるか、粒度の選択 が発生する
ビジネスサイドと会話する機会を 作ること
どんな単語を使っているか?何を 気にしているのか?
変更の予兆をキャッチすること
ユビキタス言語を作成する
開発者、ビジネスサイドの概念の 意味を揃える
開発者「非公開物件、公開期限切れ物件も結局公開しないか ら同じものなのでしょうか?」 ビジネスサイド「いいえ、両者は別概念です」 開発者「なるほど」
現在使用している関数群、 変更が起きやすいビジネス上の重要概念、 変更の予兆 これらを総合的に見て分解の基準を考える
大切なのはイテレーション
失敗したらすぐ戻せるように すこしづつ変化に対応
いきなり完成はしないし、完成す ることもない
永遠にバランスを取り続けるだけ
おわり