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
何故、UseCaseは1メソッドなのか
Search
okuzawats
June 05, 2023
Technology
3
1.6k
何故、UseCaseは1メソッドなのか
ランチタイムLT会 #1(2023年6月5日)での発表資料です。
okuzawats
June 05, 2023
Tweet
Share
More Decks by okuzawats
See All by okuzawats
カンファレンス参加をいかに正当化するか
okuzawats
0
170
「勉強になった」で終わらせない、ストロングスタイルの勉強会
okuzawats
0
310
10年モノのAndroidアプリのコード品質を改善していく、3つの取り組み
okuzawats
0
1.1k
Androidアプリ開発におけるSonarCloudの活用
okuzawats
0
910
例外を投げるな、値を返せ
okuzawats
9
7.6k
GitHub ActionsでAndroidアプリのテストを回しまくってたら全プロジェクトのCI/CDが完全停止する寸前だった件
okuzawats
0
450
Kotlinのifを愛でる
okuzawats
0
390
Say good-bye to Kotlin Android Extensions
okuzawats
0
230
KDoc in a nutshell
okuzawats
0
320
Other Decks in Technology
See All in Technology
[FOSS4G 2024 Japan LT] LLMを使ってGISデータ解析を自動化したい!
nssv
1
210
いざ、BSC討伐の旅
nikinusu
2
770
マルチプロダクトな開発組織で 「開発生産性」に向き合うために試みたこと / Improving Multi-Product Dev Productivity
sugamasao
1
300
障害対応指揮の意思決定と情報共有における価値観 / Waroom Meetup #2
arthur1
5
460
CysharpのOSS群から見るModern C#の現在地
neuecc
1
3k
Why does continuous profiling matter to developers? #appdevelopercon
salaboy
0
180
Why App Signing Matters for Your Android Apps - Android Bangkok Conference 2024
akexorcist
0
120
iOSチームとAndroidチームでブランチ運用が違ったので整理してます
sansantech
PRO
0
120
強いチームと開発生産性
onk
PRO
33
11k
【Pycon mini 東海 2024】Google Colaboratoryで試すVLM
kazuhitotakahashi
2
480
iOS/Androidで同じUI体験をネ イティブで作成する際に気をつ けたい落とし穴
fumiyasac0921
1
110
New Relicを活用したSREの最初のステップ / NRUG OKINAWA VOL.3
isaoshimizu
2
570
Featured
See All Featured
Bash Introduction
62gerente
608
210k
Six Lessons from altMBA
skipperchong
27
3.5k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
25
1.8k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
229
52k
Facilitating Awesome Meetings
lara
50
6.1k
Writing Fast Ruby
sferik
627
61k
Keith and Marios Guide to Fast Websites
keithpitt
409
22k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
246
1.3M
Making Projects Easy
brettharned
115
5.9k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
48k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
1.9k
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), ドメイン駆動設計 モデリング/実践ガイド