Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
AndroidのViewにおける ステートフルとステートレスと状態ホルダーの話/android...
Search
suzukiyoshitaka
October 18, 2023
Programming
0
310
AndroidのViewにおける ステートフルとステートレスと状態ホルダーの話/android-view-stateful-stateless-stateholder
下記勉強会イベントで発表した内容です。
https://wantedly.connpass.com/event/297601/
suzukiyoshitaka
October 18, 2023
Tweet
Share
Other Decks in Programming
See All in Programming
Cap'n Webについて
yusukebe
0
130
SwiftUIで本格音ゲー実装してみた
hypebeans
0
370
著者と進める!『AIと個人開発したくなったらまずCursorで要件定義だ!』
yasunacoffee
0
140
DSPy Meetup Tokyo #1 - はじめてのDSPy
masahiro_nishimi
1
170
30分でDoctrineの仕組みと使い方を完全にマスターする / phpconkagawa 2025 Doctrine
ttskch
4
870
Microservices rules: What good looks like
cer
PRO
0
1.4k
Giselleで作るAI QAアシスタント 〜 Pull Requestレビューに継続的QAを
codenote
0
190
Context is King? 〜Verifiability時代とコンテキスト設計 / Beyond "Context is King"
rkaga
9
1.2k
AIの誤りが許されない業務システムにおいて“信頼されるAI” を目指す / building-trusted-ai-systems
yuya4
6
3.6k
マスタデータ問題、マイクロサービスでどう解くか
kts
0
100
tsgolintはいかにしてtypescript-goの非公開APIを呼び出しているのか
syumai
6
2.2k
テストやOSS開発に役立つSetup PHP Action
matsuo_atsushi
0
160
Featured
See All Featured
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Bash Introduction
62gerente
615
210k
Mobile First: as difficult as doing things right
swwweet
225
10k
Thoughts on Productivity
jonyablonski
73
5k
We Have a Design System, Now What?
morganepeng
54
7.9k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Site-Speed That Sticks
csswizardry
13
1k
Being A Developer After 40
akosma
91
590k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
10
730
Art, The Web, and Tiny UX
lynnandtonic
303
21k
YesSQL, Process and Tooling at Scale
rocio
174
15k
GitHub's CSS Performance
jonrohan
1032
470k
Transcript
We are the future. www.team-lab.com チームラボ株式会社 teamLab inc. AndroidのViewにおける ステートフルとステートレスと
状態ホルダーの話
We are the future. www.team-lab.com チームラボ株式会社 teamLab inc. 自己紹介 鈴木善陽(スズキ
ヨシタカ) チームラボ所属 Androidエンジニア4年目 Fitbit Charge 6 買いました
We are the future. www.team-lab.com チームラボ株式会社 teamLab inc. 1. 発端
2. ステートフルって? a. ステートフルの特徴 3. ステートレスって? a. ステートレスの特徴 4. どちらを選択するべき? 5. まとめ 目次
We are the future. www.team-lab.com チームラボ株式会社 teamLab inc. • UIの状態はViewModelで持つべきだと漠然と思っていた🤔
• Android Viewではあまり意識しなかったけど、Composeだと rememberやrememberSaveableといった概念が登場した ステートレスやステートフル、 状態ホルダーについて良く知りたくなった💡 発端
We are the future. www.team-lab.com チームラボ株式会社 teamLab inc. ステートフルって?
We are the future. www.team-lab.com チームラボ株式会社 teamLab inc. • ViewがUI状態を持っていること
ステートフルって?
We are the future. www.team-lab.com チームラボ株式会社 teamLab inc. ステートフルって? •
呼び出し側
We are the future. www.team-lab.com チームラボ株式会社 teamLab inc. • メリット
◦ 呼び出し側はViewの状態を考慮しなくて良い ▪ 値を渡したり、渡されなくて良いので、スッキリかける • デメリット ◦ テストしづらい ▪ Composable内でロジックがある場合、 ViewModelのUnitTestではカバーできない ◦ ビジネスロジックから制御できない ステートフルの特徴
We are the future. www.team-lab.com チームラボ株式会社 teamLab inc. ステートレスって?
We are the future. www.team-lab.com チームラボ株式会社 teamLab inc. • ViewがUI状態を持っていないこと
ステートレスって?
We are the future. www.team-lab.com チームラボ株式会社 teamLab inc. • 呼び出し側
ステートレスって?
We are the future. www.team-lab.com チームラボ株式会社 teamLab inc. • ViewModel
ステートレスって?
We are the future. www.team-lab.com チームラボ株式会社 teamLab inc. • メリット
◦ UIとロジックの関心が分離できる ◦ ビジネスロジックから制御ができる ◦ UIを再利用しやすい • デメリット ◦ コードが複雑になる ▪ ビジネスロジックから UIの間でデータのやりとりがコードに現れる ステートレスの特徴
We are the future. www.team-lab.com チームラボ株式会社 teamLab inc. どちらを選択すべき?
We are the future. www.team-lab.com チームラボ株式会社 teamLab inc. 公式資料を読んでみる どちらを選択すべき?
We are the future. www.team-lab.com チームラボ株式会社 teamLab inc. どちらを選択すべき? •
ビジネスロジックから制御する必要のない部分はステートフル ◦ 例:スクロール状態 ◦ 例:Expand、Collapseの動作 • ビジネスロジックから制御する必要がある部分はステートレス ◦ 例:TextFieldへ入力した値に対するバリデーション ◦ 例:Horizontal PagerとTab Rowで、APIの返却によって選択タブを制御 状況に応じてハイブリッドに組み合わせる
We are the future. www.team-lab.com チームラボ株式会社 teamLab inc. 参考:https://developer.android.com/topic/architecture/ui-layer/stateholders?hl=ja#choose-viewmodel どちらを選択すべき?
「最終的には、消費される場所に最も近い 状態ホルダーを使用して UI 状態を生成す る必要があります。」 by 公式
We are the future. www.team-lab.com チームラボ株式会社 teamLab inc. 実際にコードで見てみる どちらを選択すべき?
We are the future. www.team-lab.com チームラボ株式会社 teamLab inc. どちらを選択すべき?
We are the future. www.team-lab.com チームラボ株式会社 teamLab inc. 参考:https://developer.android.com/topic/architecture/ui-layer/stateholders?hl=ja#choose-viewmodel イベント
状態 状態ホルダーまで遠い どちらを選択すべき?
We are the future. www.team-lab.com チームラボ株式会社 teamLab inc. どちらを選択すべき?
We are the future. www.team-lab.com チームラボ株式会社 teamLab inc. 参考:https://developer.android.com/topic/architecture/ui-layer/stateholders?hl=ja#choose-viewmodel イベント
状態 状態ホルダーまで近い どちらを選択すべき?
We are the future. www.team-lab.com チームラボ株式会社 teamLab inc. どちらを選択すべき? •
今回のサンプルの場合だと... ◦ バリデーションなど、ビジネスロジックを通してから UI状態を決定したい →ステートレス ◦ ビジネスロジックを通す必要がない、 ただ入力状態を表示するだけで良い →ステートフル
We are the future. www.team-lab.com チームラボ株式会社 teamLab inc. まとめ できるだけ状態ホルダーまでの道のりは短くしつつ、
ステートレスとステートフルを使い分ける or 組み合わせる
We are the future. www.team-lab.com チームラボ株式会社 teamLab inc. EOF