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
AndroidのViewにおける ステートフルとステートレスと状態ホルダーの話/android...
Search
suzukiyoshitaka
October 18, 2023
Programming
0
290
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
なぜ今、Terraformの本を書いたのか? - 著者陣に聞く!『Terraformではじめる実践IaC』登壇資料
fufuhu
4
420
Infer入門
riru
4
770
リッチエディターを安全に開発・運用するために
unachang113
1
360
コーディングは技術者(エンジニア)の嗜みでして / Learning the System Development Mindset from Rock Lady
mackey0225
2
200
WebAssemblyインタプリタを書く ~Component Modelを添えて~
ruccho
1
520
Scale out your Claude Code ~自社専用Agentで10xする開発プロセス~
yukukotani
8
1.4k
Constant integer division faster than compiler-generated code
herumi
2
410
Amazon Q CLI開発で学んだAIコーディングツールの使い方
licux
3
180
プロダクトという一杯を作る - プロダクトチームが味の責任を持つまでの煮込み奮闘記
hiliteeternal
0
420
대규모 트래픽을 처리하는 프론트 개발자의 전략
maryang
0
120
Dart 参戦!!静的型付き言語界の隠れた実力者
kno3a87
0
170
オホーツクでコミュニティを立ち上げた理由―地方出身プログラマの挑戦 / TechRAMEN 2025 Conference
lemonade_37
1
440
Featured
See All Featured
Build your cross-platform service in a week with App Engine
jlugia
231
18k
4 Signs Your Business is Dying
shpigford
184
22k
RailsConf 2023
tenderlove
30
1.2k
GraphQLとの向き合い方2022年版
quramy
49
14k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
18
1k
Embracing the Ebb and Flow
colly
86
4.8k
Adopting Sorbet at Scale
ufuk
77
9.5k
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
Balancing Empowerment & Direction
lara
1
530
Git: the NoSQL Database
bkeepers
PRO
431
65k
Side Projects
sachag
455
43k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
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