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
何故、UseCaseは1メソッドなのか
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
okuzawats
June 05, 2023
Technology
2.4k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
何故、UseCaseは1メソッドなのか
ランチタイムLT会 #1(2023年6月5日)での発表資料です。
okuzawats
June 05, 2023
More Decks by okuzawats
See All by okuzawats
Androidアプリのモジュール分割における:x:commonを考える
okuzawats
1
520
「Chatwork」Android版アプリを 支える単体テストの現在
okuzawats
0
510
カンファレンス参加をいかに正当化するか
okuzawats
0
400
「勉強になった」で終わらせない、ストロングスタイルの勉強会
okuzawats
0
480
10年モノのAndroidアプリのコード品質を改善していく、3つの取り組み
okuzawats
0
1.5k
Androidアプリ開発におけるSonarCloudの活用
okuzawats
0
1.4k
例外を投げるな、値を返せ
okuzawats
9
8.3k
GitHub ActionsでAndroidアプリのテストを回しまくってたら全プロジェクトのCI/CDが完全停止する寸前だった件
okuzawats
0
790
Kotlinのifを愛でる
okuzawats
0
1.3k
Other Decks in Technology
See All in Technology
Maestro MCPとClaude Code Skillsによる自律的なE2Eテスト支援
asmz
0
300
AWS DevOps Agentはどこまで任せられるか 〜機能の現在地と、機能拡張の実践〜
nyankotaro
0
270
クラウドサインを止めずに Nuxt へ 次の10年のために先に決めたこと
bengo4com
1
170
AI駆動開発における開発環境のセキュリティの考え方
yamahiro
2
650
これだけは抑えておきたい!後悔しない re:Invent の過ごし方 / AWS re:Invent 2026 prestudy
kinunori
2
500
アカウント統制の健康診断
kenichinakamura
1
210
E2Eってつらくないですか?E2Eの管理コストを下げる手段とその実践
akaboshinit
5
2.5k
Agent × Maestro で始める モバイル E2E 端末準備からテスト実行・結果確認まで
sansantech
PRO
0
230
AWSDirectConnectの構築の進め方を整理してみた
masa_my
1
200
自宅サーバと脆弱性
masakiokuda
1
120
正解のない研修に放り出されて / Being thrown into a training program with no right answers
ohnoeight
1
160
データマネジメント × 法務で作りあげる、 freeeの新しいデータガバナンスへの軌跡
freee
PRO
2
520
Featured
See All Featured
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
540
Git: the NoSQL Database
bkeepers
PRO
433
67k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Claude Code のすすめ
schroneko
67
230k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
300
Why Our Code Smells
bkeepers
PRO
340
58k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
1.1k
Prompt Engineering for Job Search
mfonobong
0
550
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
6
1.2k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.7k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.8k
Transcript
何故、UseCaseは1メソッドなのか
話す人 • 奥澤 @okuzawats • Chatwork株式会社 •ビジネスチャットChatwork Android版のアーキテクチャ改善業、技術負債返済業をやっています。 •Kotlinで `operator
fun get` を書くチャンスを虎視眈々と狙っています🐯
Software Design 2023年6月号の特集、「クリーンアーキテクチャとは何か?」は読みましたか?
今日はこの特集の5章「モバイルアプリ開発における実践」を執筆した後で、同僚から受けたコメントに答えていこうと思います。
UseCase
しばしば見るUseCase
👆1つの画面に対して1つのUseCase型を作って、 そこに複数のメソッドが定義されるパターン
一方、 Androidのアプリアーキテクチャガイドでは👇
アプリアーキテクチャガイドの示すUseCase UseCaseの担うアクションに基づいた命名 動詞 + 名詞 / 対象 + UseCase `LogoutUserUseCase`
operator修飾子を使用して `invoke()` 関数を定義することでUseCaseのインスタンスを関数として呼び出す `logoutUserUseCase()` 👉このルールに従うと必然的に1 UseCase - 1 (public) メソッドになる。
1 UseCase 1 (public) mehtodで嬉しいこと UseCaseの担うアクションの再利用性が高まる 複数の画面からログアウト処理を呼び出す場合、複数の画面でLogoutUserUseCaseを使えば良い。 最初に出てきたSomeUseCaseのfunctionを再利用しようとすると…? UseCaseの保守性が高まる(凝集度が高まる) 1クラスに書かれる処理が、ただひとつのアクションに関連する処理だけになる。テストコードも読みやすい。
ઌ΄ͲͷྫΛॻ͖͢ͱ͜Μͳײ͡ʹͳΔ
1 UseCase - 1 (public) メソッドのメリット UseCaseの担うアクションの再利用性が高まる UseCaseの保守性が高まる(凝集度が高まる)
1 UseCase - 1 (public) メソッドのデメリット UseCaseのアクションが再利用されない場合、ただ面倒くさい 何らかのアクションを追加するたび、UseCaseのinterfaceを作って、実装クラスを作って、テストクラスを作って、Hiltのモジュールを作って…という「面倒くささ」のコストを正当化しにくい
こっちのパターンが絶対にダメとまでは言いにくい🤔
まとめ UseCaseは、1 UseCase - 1メソッドで作れると嬉しい🤗 実装クラス、テストクラスが圧倒的に美しい✨(個人の感想) UseCaseが再利用されない場合、面倒くささが勝ちがち😅 「これ面倒くさくないですか?」って言われたらそれまで
最後に Chatworkでは、Android アプリエンジニアを募集しています! (それ以外の職種も絶賛募集中です!)
参考文献 Software Design 2023年6月号, 技術評論社 Android Developer, ドメインレイヤ, retrieved from
https://developer.android.com/jetpack/guide/domain-layer?hl=ja (最終アクセス日:2023年5月27日) 松岡幸一郎, (2020), ドメイン駆動設計 モデリング/実践ガイド