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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
okuzawats
June 05, 2023
Technology
2.3k
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
480
「Chatwork」Android版アプリを 支える単体テストの現在
okuzawats
0
460
カンファレンス参加をいかに正当化するか
okuzawats
0
380
「勉強になった」で終わらせない、ストロングスタイルの勉強会
okuzawats
0
460
10年モノのAndroidアプリのコード品質を改善していく、3つの取り組み
okuzawats
0
1.4k
Androidアプリ開発におけるSonarCloudの活用
okuzawats
0
1.3k
例外を投げるな、値を返せ
okuzawats
9
8.3k
GitHub ActionsでAndroidアプリのテストを回しまくってたら全プロジェクトのCI/CDが完全停止する寸前だった件
okuzawats
0
720
Kotlinのifを愛でる
okuzawats
0
1.2k
Other Decks in Technology
See All in Technology
AI Agentをシステムに組み込む前にゆるく向き合ってみる
hayama17
0
130
秘密度ラベル初心者が第1歩でつまづかないための「設計・運用」ポイント
seafay
PRO
1
480
徹底討論!ECS vs EKS!
daitak
3
1.7k
Claude Codeをどのように キャッチアップしているか
oikon48
13
8.8k
コミュニティの有益性 ~JAWS Days 2026 での体験を通して~ / The Benefits of a Community ~Through My Experience at JAWS Days 2026~
seike460
PRO
0
270
「勝手に広まる」人気 AI エージェントを爆速で作ろう!(AWS Summit Japan 2026講演資料)
minorun365
PRO
10
2.5k
10年間のブログ発信を振り返って見えたWebアプリケーションエンジニアとしての軌跡
stefafafan
0
180
Comment regagner la souveraineté de vos données tout en étant payé grâce à Nostr !
rlifchitz
0
190
IaC コードを資産へ:AWS CDK 社内ライブラリと横断展開 / aws-summit-japan-2026
gotok365
10
1.6k
Oracle Cloud Infrastructure:2026年6月度サービス・アップデート
oracle4engineer
PRO
0
290
新しいUbuntu/GNOMEが使いたいからXからWaylandへ移行頑張ってるの巻 2026-06-20
nobutomurata
0
160
AWS Security Hub CSPMの成功・失敗体験
cmusudakeisuke
0
540
Featured
See All Featured
Designing Powerful Visuals for Engaging Learning
tmiket
1
420
Skip the Path - Find Your Career Trail
mkilby
1
150
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1k
sira's awesome portfolio website redesign presentation
elsirapls
0
280
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
590
Are puppies a ranking factor?
jonoalderson
1
3.6k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Facilitating Awesome Meetings
lara
57
7k
Accessibility Awareness
sabderemane
1
140
Unsuck your backbone
ammeep
672
58k
4 Signs Your Business is Dying
shpigford
187
22k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
72
40k
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), ドメイン駆動設計 モデリング/実践ガイド