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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
suzukiyoshitaka
October 18, 2023
Programming
320
0
Share
AndroidのViewにおける ステートフルとステートレスと状態ホルダーの話/android-view-stateful-stateless-stateholder
下記勉強会イベントで発表した内容です。
https://wantedly.connpass.com/event/297601/
suzukiyoshitaka
October 18, 2023
Other Decks in Programming
See All in Programming
ポーリング処理廃止によるイベント駆動アーキテクチャへの移行
seitarof
3
1.3k
実践ハーネスエンジニアリング #MOSHTech
kajitack
7
5.5k
CS教育のDX AIによる育成の効率化
niftycorp
PRO
0
190
Java 21/25 Virtual Threads 소개
debop
0
320
Linux Kernelの1文字のミスで 権限昇格ができた話
rqda
0
2.2k
AIコードレビューの導入・運用と AI駆動開発における「AI4QA」の取り組みについて
hagevvashi
0
590
Coding at the Speed of Thought: The New Era of Symfony Docker
dunglas
0
4.4k
L’IA au service des devs : Anatomie d'un assistant de Code Review
toham
0
190
GoのDB アクセスにおける 「型安全」と「柔軟性」の両立 - Bob という選択肢
tak848
0
300
AI活用のコスパを最大化する方法
ochtum
0
370
20260320登壇資料
pharct
0
160
Feature Toggle は捨てやすく使おう
gennei
0
410
Featured
See All Featured
Measuring & Analyzing Core Web Vitals
bluesmoon
9
800
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
240
We Are The Robots
honzajavorek
0
210
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
96
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
3.8k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Believing is Seeing
oripsolob
1
100
[SF Ruby Conf 2025] Rails X
palkan
2
910
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
170
Leo the Paperboy
mayatellez
6
1.6k
The World Runs on Bad Software
bkeepers
PRO
72
12k
How STYLIGHT went responsive
nonsquared
100
6k
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