Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
DroidKaigi 2018 App Architecture
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
takahirom
February 27, 2018
Programming
2.6k
14
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
DroidKaigi 2018 App Architecture
takahirom
February 27, 2018
More Decks by takahirom
See All by takahirom
AIエージェントで 変わるAndroid開発環境
takahirom
3
1k
AndroidアプリのAI実装をAndroidifyで学ぶ ー Google公式サンプルによる体験と実装 ー
takahirom
0
170
AIエージェントによるテストフレームワーク Arbigent
takahirom
0
1.2k
Google の LLM ライブラリ を Android アプリで 使うには?
takahirom
1
2.2k
Robolectric Native Graphics and Roborazzi
takahirom
1
2.4k
Androidアプリで安定して動作させ継続的に開発するために設計の原則を利用して開発した話
takahirom
3
1.5k
Android Tools & Performance
takahirom
1
1.3k
Jetpack Compose State Practices
takahirom
1
1.5k
Inside Jetpack Compose
takahirom
1
1.1k
Other Decks in Programming
See All in Programming
見えないものを探る要求要件定義に必要な基本的思考 / invisible-requirement-thinking
minodriven
15
8.8k
設計次第でAIコードの読む量は減らせる / designing-for-code-reading
minodriven
35
17k
Compiling a real-world CLI tool to native with Static Hermes
tmikov2023
0
130
[Dev Group Paris Octobre 26] Agentforce, SIforce, Claudeforce, Slackbot… on s'y retrouve ?
nabondance
0
120
AIで開発が速くなった先で、開発チームは何を目指すか
shihochan
1
1.8k
Long Living Tokens, Die, Die, Die! (or: The One Ring is Banned in Modern)
sylph01
0
370
Python Lambdaにおけるテストしやすい設計とAI支援の活用 / Designing Testable Python Lambda Functions with AI
kitano_yuichi
1
200
dotNET_vulnclicker_intro.pdf
deka_morita
0
150
あなたの await、OS まで届いてる? strace で覗く JavaScript の非同期
hasutosasaki
1
1.5k
[2026-10-14](C)Re:ゼロから始める異世界生活〜始まりの終わりと終わりの始まり〜
tosite
0
160
Agentic Software Factoryに、すごく賢いIF文を。 / super smart IF statement into the Agentic Software Factory.
rkaga
8
2.4k
AI時代のシニアエンジニアとは
yosuke_furukawa
PRO
11
8.3k
Featured
See All Featured
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
270
Visualization
eitanlees
153
17k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
2
410
The agentic SEO stack - context over prompts
schlessera
0
980
Speed Design
sergeychernyshev
33
2.2k
Ethics towards AI in product and experience design
skipperchong
2
440
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Tell your own story through comics
letsgokoyo
1
1.1k
Context Engineering - Making Every Token Count
addyosmani
9
1.2k
BBQ
matthewcrist
90
10k
Documentation Writing (for coders)
carmenintech
77
5.6k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
580
Transcript
%SPJE,BJHJ"QQ "SDIJUFDUVSF UBLBIJSPN
˖ UBLBIJSPN !OFX@SVOOBCMF ˖ 劤せכ嬁「䃨峔 ׄױַמ ˖ "OESPJEָ㥨ֹדׅկ
˖ "CFNB57ך"OESPJE،فٔ⡲גְתׅկ ˖ %SPJE,BJHJⰕ䒭،فٔךٔ٦ت٦׃ת׃կ ⟃♳ךفؙٕٔؒأزָ֮הֲ׀ְׂת׃! 荈ⴓחאְג
鏣鎘ך鑧
%SPJE,BJHJ،فٔך鏣鎘
%SPJE,BJHJⰕ䒭،فٔהכ ˖ %SPJE,BJHJכؒٝآص،ָ⚺䕵ך"OESPJEؕٝؿ؋ٖٝأ דׅկךؕٝؿ؋ٖٝأךⰕ䒭،فٔדׅկ ˖ %SPJE,BJHJכ"OESPJE䪮遭䞔㜠ךⰟ剣ה؝ىُص؛٦ءّ ٝ湡涸חծ䎃剢傈 加 ծ傈 ꆃ
ך傈⪵ׁ ת׃կ
None
˖ إحءّٝ ˖ إحءֶّٝ孡חⰅ⳿勻 ˖ إحءّٝ䱱ׇ ˖ ؿ؍٦سغحؙ鷏 ˖ ֶ濼ׇ
˖ 㖑㔳 ˖ أهٝ؟٦邌爙 ˖ זוזו %SPJE,BJHJ،فٔך堣腉
˖ זץֻֻׁך➂ָ鋅גꟼג嚂׃״ֲחׅ ˖ זָ罋חדֹךחׅ %SPJE,BJHJ،فٔך؞٦ٕ
˖ ,PUMJO ˖ "SDIJUFDUVSF$PNQPOFOUT⢪ֲ ˖ %SPJE,BJHJך،فٔזךדծ剑倜䪮遭װٓ؎ـٓٔכ ⢪ְְ קר寸תגְֿה
罋ח׃،٦ؗذؙثٍ
.77. IUUQTHJUIVCDPN%SPJE,BJHJDPOGFSFODFBQQ״
˖ 䎃ך%SPJE,BJHJ،فٔזוָ⢽חזկ .77. IUUQTHJUIVCDPN%SPJE,BJHJDPOGFSFODFBQQ״
˖ 䎃ך%SPJE,BJHJ،فٔזוָ⢽חזկ ˖ %BUB#JOEJOHⵃ欽ׅկ .77. IUUQTHJUIVCDPN%SPJE,BJHJDPOGFSFODFBQQ״
˖ 䎃ך%SPJE,BJHJ،فٔזוָ⢽חזկ ˖ %BUB#JOEJOHⵃ欽ׅկ ˖ 7JFX.PEFMַ4FTTJPOT3FQPTJUPSZOE"MM ׃ח 遤גծًٝغ㢌侧%BUB#JOEJOHדغ؎ٝسׅ .77. IUUQTHJUIVCDPN%SPJE,BJHJDPOGFSFODFBQQ״
˖ 䎃ך%SPJE,BJHJ،فٔזוָ⢽חזկ ˖ %BUB#JOEJOHⵃ欽ׅկ ˖ 7JFX.PEFMַ4FTTJPOT3FQPTJUPSZOE"MM ׃ח 遤גծًٝغ㢌侧%BUB#JOEJOHדغ؎ٝسׅ ˖ ㉏겗挿
.77. IUUQTHJUIVCDPN%SPJE,BJHJDPOGFSFODFBQQ״
˖ 䎃ך%SPJE,BJHJ،فٔזוָ⢽חזկ ˖ %BUB#JOEJOHⵃ欽ׅկ ˖ 7JFX.PEFMַ4FTTJPOT3FQPTJUPSZOE"MM ׃ח 遤גծًٝغ㢌侧%BUB#JOEJOHדغ؎ٝسׅ ˖ ㉏겗挿
˖ Ⰻֻずׄד㉏겗כזְָծ"SDIJUFDUVSF $PNQPOFOUTװ,PUMJOָוֲ䕦갟ַׅ罋ִ ְկ .77. IUUQTHJUIVCDPN%SPJE,BJHJDPOGFSFODFBQQ״
˖ 䎃ך%SPJE,BJHJ،فٔזוָ⢽חזկ ˖ %BUB#JOEJOHⵃ欽ׅկ ˖ 7JFX.PEFMַ4FTTJPOT3FQPTJUPSZOE"MM ׃ח 遤גծًٝغ㢌侧%BUB#JOEJOHדغ؎ٝسׅ ˖ ㉏겗挿
˖ Ⰻֻずׄד㉏겗כזְָծ"SDIJUFDUVSF $PNQPOFOUTװ,PUMJOָוֲ䕦갟ַׅ罋ִ ְկ .77. ̔%BUB#JOEJOHכ⢪גְְֹ IUUQTHJUIVCDPN%SPJE,BJHJDPOGFSFODFBQQ״
$MFBO"SDIJUFDUVSF IUUQTHJUIVCDPNBOESPJE"OESPJE$MFBO"SDIJUFDUVSF״
˖ EPNBJOךהֿׯהⴓֽגծ ך鿇ⴓחؽآطأٗآحָؙ剅ֽ $MFBO"SDIJUFDUVSF IUUQTHJUIVCDPNBOESPJE"OESPJE$MFBO"SDIJUFDUVSF״
˖ EPNBJOךהֿׯהⴓֽגծ ך鿇ⴓחؽآطأٗآحָؙ剅ֽ ˖ זח⢪גְ孡ָׅկ $MFBO"SDIJUFDUVSF IUUQTHJUIVCDPNBOESPJE"OESPJE$MFBO"SDIJUFDUVSF״
˖ EPNBJOךהֿׯהⴓֽגծ ך鿇ⴓחؽآطأٗآحָؙ剅ֽ ˖ זח⢪גְ孡ָׅկ ˖ ㉏겗挿 $MFBO"SDIJUFDUVSF IUUQTHJUIVCDPNBOESPJE"OESPJE$MFBO"SDIJUFDUVSF״
˖ EPNBJOךהֿׯהⴓֽגծ ך鿇ⴓחؽآطأٗآحָؙ剅ֽ ˖ זח⢪גְ孡ָׅկ ˖ ㉏겗挿 ˖ %SPJE,BJHJך鋉垷ח׃גכ麓ⶱד֮孡ָׅ $MFBO"SDIJUFDUVSF
IUUQTHJUIVCDPNBOESPJE"OESPJE$MFBO"SDIJUFDUVSF״
˖ EPNBJOךהֿׯהⴓֽגծ ך鿇ⴓחؽآطأٗآحָؙ剅ֽ ˖ זח⢪גְ孡ָׅկ ˖ ㉏겗挿 ˖ %SPJE,BJHJך鋉垷ח׃גכ麓ⶱד֮孡ָׅ ˖
孡鯪חכ؝ٝزٔؽُ٦ءّٝדֹזְ孡ָׅ $MFBO"SDIJUFDUVSF IUUQTHJUIVCDPNBOESPJE"OESPJE$MFBO"SDIJUFDUVSF״
˖ EPNBJOךהֿׯהⴓֽגծ ך鿇ⴓחؽآطأٗآحָؙ剅ֽ ˖ זח⢪גְ孡ָׅկ ˖ ㉏겗挿 ˖ %SPJE,BJHJך鋉垷ח׃גכ麓ⶱד֮孡ָׅ ˖
孡鯪חכ؝ٝزٔؽُ٦ءّٝדֹזְ孡ָׅ ˖ 罋ִ倯《Ⰵךכְְ孡ָׅ $MFBO"SDIJUFDUVSF IUUQTHJUIVCDPNBOESPJE"OESPJE$MFBO"SDIJUFDUVSF״
˖ EPNBJOךהֿׯהⴓֽגծ ך鿇ⴓחؽآطأٗآحָؙ剅ֽ ˖ זח⢪גְ孡ָׅկ ˖ ㉏겗挿 ˖ %SPJE,BJHJך鋉垷ח׃גכ麓ⶱד֮孡ָׅ ˖
孡鯪חכ؝ٝزٔؽُ٦ءّٝדֹזְ孡ָׅ ˖ 罋ִ倯《Ⰵךכְְ孡ָׅ $MFBO"SDIJUFDUVSF "1*זוךٖأهٝأךתת⢪׆ وحؾؚٝ׃ג،فٔⰻדכ ְֹז&OUJUZ⢪ְְ ̔ IUUQTHJUIVCDPNBOESPJE"OESPJE$MFBO"SDIJUFDUVSF״
'MVY IUUQTHJUIVCDPNGBDFCPPLVY״
˖ וֿחזח剅ַֻծⳢ椚ך鷄ְװׁׅזוהגⴓַװְׅկ ⦐➂涸ח 'MVY IUUQTHJUIVCDPNGBDFCPPLVY״
˖ וֿחזח剅ַֻծⳢ椚ך鷄ְװׁׅזוהגⴓַװְׅկ ⦐➂涸ח ˖ Ⰻ涸ח《Ⰵה ˑזץֻֻׁך➂ָ鋅גꟼג嚂׃״ֲח˒הְֲ䠐 ַ鎉ֲה䒦爡⟃㢩ד֮ת鋅ַֽזְךד植朐כ⿑׃ְ 'MVY IUUQTHJUIVCDPNGBDFCPPLVY״
˖ וֿחזח剅ַֻծⳢ椚ך鷄ְװׁׅזוהגⴓַװְׅկ ⦐➂涸ח ˖ Ⰻ涸ח《Ⰵה ˑזץֻֻׁך➂ָ鋅גꟼג嚂׃״ֲח˒הְֲ䠐 ַ鎉ֲה䒦爡⟃㢩ד֮ת鋅ַֽזְךד植朐כ⿑׃ְ 'MVY 倯ぢךر٦ةך崧כ《Ⰵגְְֹ ̔
IUUQTHJUIVCDPNGBDFCPPLVY״
3FEVY
˖ 3FEVY荈⡤כׯהٍؗحث،حفדֹגְזְ 3FEVY
˖ 3FEVY荈⡤כׯהٍؗحث،حفדֹגְזְ ˖ ˑ.BOBHJOH4UBUFXJUI3Y+BWBCZ+BLF8IBSUPO˒דַז 铡僇ָ֮կ 3FEVY
˖ 3FEVY荈⡤כׯהٍؗحث،حفדֹגְזְ ˖ ˑ.BOBHJOH4UBUFXJUI3Y+BWBCZ+BLF8IBSUPO˒דַז 铡僇ָ֮կ ˖ 㹋鄲鑐ָ䮲䫓կկ 3FEVY
˖ 3FEVY荈⡤כׯהٍؗحث،حفדֹגְזְ ˖ ˑ.BOBHJOH4UBUFXJUI3Y+BWBCZ+BLF8IBSUPO˒דַז 铡僇ָ֮կ ˖ 㹋鄲鑐ָ䮲䫓կկ 3FEVY @CheckResult fun
<T> Observable<T>.toResult(schedulerProvider: SchedulerProvider): Observable<Result<T>> { return compose { item -> item .map { Result.success(it) } .onErrorReturn { e -> Result.failure(e.message ?: "unknown", e) } .observeOn(schedulerProvider.ui()) .startWith(Result.inProgress()) } } ̔3FTVMUך⡲倯כ罋חזֲ
"SDIJUFDUVSF$PNQPOFOU IUUQTEFWFMPQFSBOESPJEDPNUPQJDMJCSBSJFTBSDIJUFDUVSFHVJEFIUNM״
˖ ٓ؎ؿ؟؎ؙٕꟼ鸬ך➬穈ָⰅծ ٓ؎ؿ؟؎ؙٕ֮ת䠐陎ׇ׆ח 㹋鄲דֹ "SDIJUFDUVSF$PNQPOFOU IUUQTEFWFMPQFSBOESPJEDPNUPQJDMJCSBSJFTBSDIJUFDUVSFHVJEFIUNM״
˖ ٓ؎ؿ؟؎ؙٕꟼ鸬ך➬穈ָⰅծ ٓ؎ؿ؟؎ؙٕ֮ת䠐陎ׇ׆ח 㹋鄲דֹ ˖ 3PPN㉏겗זֻ⢪ֲִ "SDIJUFDUVSF$PNQPOFOU IUUQTEFWFMPQFSBOESPJEDPNUPQJDMJCSBSJFTBSDIJUFDUVSFHVJEFIUNM״
˖ ٓ؎ؿ؟؎ؙٕꟼ鸬ך➬穈ָⰅծ ٓ؎ؿ؟؎ؙٕ֮ת䠐陎ׇ׆ח 㹋鄲דֹ ˖ 3PPN㉏겗זֻ⢪ֲִ ˖ ㉏겗挿 "SDIJUFDUVSF$PNQPOFOU IUUQTEFWFMPQFSBOESPJEDPNUPQJDMJCSBSJFTBSDIJUFDUVSFHVJEFIUNM״
˖ ٓ؎ؿ؟؎ؙٕꟼ鸬ך➬穈ָⰅծ ٓ؎ؿ؟؎ؙٕ֮ת䠐陎ׇ׆ח 㹋鄲דֹ ˖ 3PPN㉏겗זֻ⢪ֲִ ˖ ㉏겗挿 ˖ -JWF%BUBדכ-JWF%BUBず㡦穈さׇ
3Y+BWBדְֲ[JQך״ֲז⹛⡲ָ㣐㢌 "SDIJUFDUVSF$PNQPOFOU IUUQTEFWFMPQFSBOESPJEDPNUPQJDMJCSBSJFTBSDIJUFDUVSFHVJEFIUNM״
˖ ٓ؎ؿ؟؎ؙٕꟼ鸬ך➬穈ָⰅծ ٓ؎ؿ؟؎ؙٕ֮ת䠐陎ׇ׆ח 㹋鄲דֹ ˖ 3PPN㉏겗זֻ⢪ֲִ ˖ ㉏겗挿 ˖ -JWF%BUBדכ-JWF%BUBず㡦穈さׇ
3Y+BWBדְֲ[JQך״ֲז⹛⡲ָ㣐㢌 "SDIJUFDUVSF$PNQPOFOU ̔7JFX.PEFM -JWF%BUB 3PPNכⵃ欽ָׅ3Y+BWB⢘欽 IUUQTEFWFMPQFSBOESPJEDPNUPQJDMJCSBSJFTBSDIJUFDUVSFHVJEFIUNM״
罋ִ،٦ؗذؙثٍ
罋ִ،٦ؗذؙثٍ
罋ִ،٦ؗذؙثٍ ˖ 㛇劤涸ח"SDIJUFDUVSF$PNQPOFOUTך 鏣鎘ك٦أח ˖ 䗳銲ה䙼ֲך酡㸣׃גְֻ䕎
(SPVQJFך %BUB#JOEJOH؟ه٦زⵃ欽
.BQQFS⢪גծ "1*זו✲䞔ָ،فٔⰻח Ⰵ鴥תזְ״ֲח
倯ぢדر٦ة Ⳣ椚 "DUJWJUZ ̕ 7JFX.PEFMך.FUIPE ̕ 3FQPTJUPSZ ̕ 7JFX.PEFMך-JWF%BUB
̕ "DUJWJUZ
0CTFSWBCMFUP3FTVMUד㢌䳔׃ג 3FTVMUחׅ
ꬊず劍Ⳣ椚כ3Y+BWBך 0CTFSWBCMF'MPXBCMF
،٦ؗذؙثٍٖؽُ٦ך 僥
"1*ך/VMMBCMFⳢ椚ׅהֿ כׇֹׁ /VMMBCMF.BQQFSדכׇֹׁ״ֲח׃ת׃կ
-JWF%BUBך.VUBCJMJUZך盖椚 "DUJWJUZ'SBHNFOUַ-JWF%BUBךWBMVFְׄזְ״ֲחׅ class SearchViewModel @Inject ...{ private val mutableResult =
MutableLiveData<Result<SearchResult>>() val result: LiveData<Result<SearchResult>> = mutableResult ... mutableResult.value = it
،٦ؗذؙثٍٖؽُ٦ך僥 ˖ 7JFX.PEFMךًاحسせך鋉 ˖ GBWPSJUF4FTTJPO 4FTTJPO PO'BWPSJUF$MJDL 4FTTJPO 7JFX.PEFMכ7JFXך؎كٝز「ֽ《גծוֲַׅⴻ倖ׅ䕎ח
㢌刿
ֿך،٦ؗذؙثٍך 葺ַ䨽
.BQQFSָ葺ַ
.BQQFSָ葺ַ "1*ךٖأهٝأ ˖ "1*ךإحءّٝךر٦ةכ أؾ٦ؕ٦*%ֽ䭯גְ״ֲז朐䡾 ֿ،فٔח崧ׅה ְזהֿד4QFBLFS嗚稊ׅ䗳銲ָ⳿גֹ TFTTJPOTQFBLFSTד أؾ٦ؕ٦♧鋮ח ،ؙإأדֹ״ֲח׃
.BQQFSָ葺ַ ˖ ،فٔך⚥דכ/VMMBCMF 䠐陎׃זֻג葺ֻז ˖ ♧鿇劤䔲חזְ〳腉䚍ָ ֮ךכOVMMⰅ
.BQQFSָ葺ַ ˖ 㛇劤涸ח鋅湡 1SFTFOUBUJPO鿇ⴓ חꟼׅ13װ何⥜ָ㢳ַךדծ 7JFXワָ笺뜧חדֹגծ嚂ח涪דֹגְשַ ˖ .PEFMחⳢ椚㺔ׇֿהדծ⡂״ֲזⳢ椚ֻׁך㜥䨽ד剅ַזֻג״ַ class Session(
open val id: String, open val dayNumber: Int, open val startTime: Date, open val endTime: Date ) { ... val isOnGoing: Boolean get() = System.currentTimeMillis() in startTime.time..endTime.time
ر٦ة 倯ぢד崧ׇ״ֲח׃
ر٦ة 倯ぢד崧ׇ״ֲח׃
ر٦ة 倯ぢד崧ׇ״ֲח׃ ˖ -JWF%BUB穗歋׃גծ 7JFXך朐䡾ך㢌刿崧ׅ״ֲח׃
ر٦ة 倯ぢד崧ׇ״ֲח׃ ˖ -JWF%BUB穗歋׃גծ 7JFXך朐䡾ך㢌刿崧ׅ״ֲח׃ ˖ 'MVY،٦ؗذؙثٍךًٔحز֮ 玎䏝「ֽ״ֲחז
ر٦ة 倯ぢד崧ׇ״ֲח׃ ˖ -JWF%BUB穗歋׃גծ 7JFXך朐䡾ך㢌刿崧ׅ״ֲח׃ ˖ 'MVY،٦ؗذؙثٍךًٔحز֮ 玎䏝「ֽ״ֲחז ˖ 7JFXך朐䡾盖椚-JWF%BUBח⟣ׇ
ر٦ة 倯ぢד崧ׇ״ֲח׃ ˖ -JWF%BUB穗歋׃גծ 7JFXך朐䡾ך㢌刿崧ׅ״ֲח׃ ˖ 'MVY،٦ؗذؙثٍךًٔحز֮ 玎䏝「ֽ״ֲחז ˖ 7JFXך朐䡾盖椚-JWF%BUBח⟣ׇ
˖ 䕵ⶴָⴓַװְׅזו
ر٦ة 倯ぢד崧ׇ״ֲח׃ ˖ -JWF%BUB穗歋׃גծ 7JFXך朐䡾ך㢌刿崧ׅ״ֲח׃ ˖ 'MVY،٦ؗذؙثٍךًٔحز֮ 玎䏝「ֽ״ֲחז ˖ 7JFXך朐䡾盖椚-JWF%BUBח⟣ׇ
˖ 䕵ⶴָⴓַװְׅזו ˖ %#ח"1*ַر٦ةⰅגծ %#ךر٦ةַ邌爙ֿׅהדծ ر٦ةך崧ָⴓַװַׅ
ֿך،٦ؗذؙثٍך 䝤ַ䨽ծ㉏겗חז䨽
倯ぢׄׯזֻג؝٦سָ剅ֽג׃ תֲ
倯ぢׄׯזֻג؝٦سָ剅ֽג׃ תֲ 倯ぢהְגְָծ7JFX.PEFMך ًاحسⰻד -JWF%BUBⰻךEBUBָ鋅ג׃תֲկ ֿ׃澓ח⽃倯ぢדזֻז ؝٦سָ铣חֻֻזגְֲֹ
倯ぢׄׯזֻג؝٦سָ剅ֽג׃ תֲ 㹋ꥷחٖؽُ٦ד鎉ֲֿהחזג؝٦ر؍ؚٝד䠐陎ׅ䗳銲ָ֮ (࣮ͨͩࡍʹʹͳΔ΄Ͳͷେ͖͞Ͱͳ͔ͬͨͷͰ ࣮ࡍʹʹͳΒͳ͍मਖ਼Ͱͨ͠)
7JFX.PEFM-JGFDZDMF0CTFSWFSח ׅ䗳銲ָזַ 3&"%.&״
7JFX.PEFM-JGFDZDMF0CTFSWFSח ׅ䗳銲ָזַ ˖ 7JFX.PEFM-JGFDZDMF0CTFSWFSחׅך כؕح؝؎؎ֽו䗳銲זְַ 3&"%.&״
7JFX.PEFM-JGFDZDMF0CTFSWFSח ׅ䗳銲ָזַ ˖ 7JFX.PEFM-JGFDZDMF0CTFSWFSחׅך כؕح؝؎؎ֽו䗳銲זְַ ˖ ̔醱侧ך'SBHNFOUדⰟ剣׃ծ "DUJWJUZה'SBHNFOUדⰟ剣׃׃儗 ח Ⰻ鿇涫ꐮׅךַծוךٓ؎ؿ؟؎ؙٕ
ךًاحسַⴓַזְկ 3&"%.&״
7JFX.PEFM-JGFDZDMF0CTFSWFSח ׅ䗳銲ָזַ ˖ 7JFX.PEFM-JGFDZDMF0CTFSWFSחׅך כؕح؝؎؎ֽו䗳銲זְַ ˖ ̔醱侧ך'SBHNFOUדⰟ剣׃ծ "DUJWJUZה'SBHNFOUדⰟ剣׃׃儗 ח Ⰻ鿇涫ꐮׅךַծוךٓ؎ؿ؟؎ؙٕ
ךًاحسַⴓַזְկ ˖ ࣮ࡍͦΜͳʹ͍ͬͯͳͯ͘ɺזח 㹱ָֽ֮דכזַָ搀䠐䠬 3&"%.&״
7JFXワךⳢ椚ָ醱꧟חזגֹג ٖؽُ٦穠圓鳞ַ
7JFXワךⳢ椚ָ醱꧟חזגֹג ٖؽُ٦穠圓鳞ַ ˖ 4DSPMMד嗚稊׃*TTVFה13ֽד⦐
7JFXワךⳢ椚ָ醱꧟חזגֹג ٖؽُ٦穠圓鳞ַ ˖ 4DSPMMד嗚稊׃*TTVFה13ֽד⦐ ˖ ⾱㔓כةـךⴖ剏ִזו7JFX.PEFM穗歋דכזֻծ 7JFXך؎كٝزַ湫䱸乼⡲׃גְַַ
7JFXワךⳢ椚ָ醱꧟חזגֹג ٖؽُ٦穠圓鳞ַ ˖ 4DSPMMד嗚稊׃*TTVFה13ֽד⦐ ˖ ⾱㔓כةـךⴖ剏ִזו7JFX.PEFM穗歋דכזֻծ 7JFXך؎كٝزַ湫䱸乼⡲׃גְַַ ˖ ̔湫׃倯ך؎ً٦آה׃גכ鋵ך'SBHNFOUװ"DUJWJUZך7JFX.PEFM鋅גأؙٗ٦ ٕזוד湫ֲׇ
7JFXワךⳢ椚ָ醱꧟חזגֹג ٖؽُ٦穠圓鳞ַ ˖ 4DSPMMד嗚稊׃*TTVFה13ֽד⦐ ˖ ⾱㔓כةـךⴖ剏ִזו7JFX.PEFM穗歋דכזֻծ 7JFXך؎كٝزַ湫䱸乼⡲׃גְַַ ˖ ̔湫׃倯ך؎ً٦آה׃גכ鋵ך'SBHNFOUװ"DUJWJUZך7JFX.PEFM鋅גأؙٗ٦ ٕזוד湫ֲׇ
˖ ̔תכ'MVYד朐䡾盖椚׃זהַדַֹ
7JFX.PEFMⰻדծוֿתד3Y+BWBד וֿתד-JWF%BUBד剅ַֻ㉏겗 ˖ ずؙׄٓأⰻח֮גծ㞮歲ָ切僳דծודוךְּ剅ַֻךهٔ ء٦ָזַկ ˖ 㛇劤涸חכ3Y+BWBךקֲָさ䧭הַ䖤䠐זכ׆זךדծח㺔ׇגְ ְָֹծ-JWF%BUBָ埆חְה⢪ְֻזגֻ val sessions:
LiveData<Result<List<Session>>> by lazy { repository.sessions .toResult(schedulerProvider) .toLiveData() } val isLoading: LiveData<Boolean> by lazy { sessions.map { it.inProgress } } ... ֿ̔刿倜ה朐䡾䭯אהָֿⴽղזծזהַזַ
%SPJE,BJHJك٦أח ،فٔ⡲ה׃
%SPJE,BJHJ،فٔזח醱꧟
%SPJE,BJHJ،فٔזח醱꧟ ˖ 知⽃חׅחإحءّٝ邌爙⟃㢩ך堣腉搀ֻ׃ 遤ꤐ׃TJNQMJGZـٓٝث欽䠐׃ךדծ ك٦أחְׄגה葺ְַ
TJNQMJGZـٓٝث⯋ח 鯪ֻ'MVY晛⡲ג
(SPVQJF4FDUJPO "DUJWJUZ'SBHNFOU ""$7JFX.PEFM 3FQPTJUPSZ 0CTFSWBCMF'MPXBCMF4FTTJPO -JWF%BUB3FTVMU NFUIPEDBMM-JGFDZDMF0CTFSWFS -JTU4FTTJPO*UFN .FUIPET -JWF%BUB
-JWF%BUB -JWF%BUB QPTU
"DUJPO$SFBUPS (SPVQJF4FDUJPO "DUJWJUZ'SBHNFOU 4UPSF ""$7JFX.PEFM 3FQPTJUPSZ 0CTFSWBCMF'MPXBCMF4FTTJPO -JWF%BUB3FTVMU -JTU4FTTJPO*UFN -JWF%BUB
-JWF%BUB -JWF%BUB %JTQBDIFS SYSFMBZ
TJNQMJGZـٓٝثַ 'MVY晛鯪ֻ⡲ג /&8 ˖ "CFNB57"OESPJEך'MVY،٦ؗذؙثٍ ׳ה罋ח׃גծ ""$《Ⰵך ˖ TJNQMJGZVYـٓٝثח֮תׅկ ˖
IUUQTHJUIVCDPN%SPJE,BJHJ DPOGFSFODFBQQDPNQBSF TJNQMJGZTJNQMJGZVY
TJNQMJGZـٓٝثַ 'MVY晛鯪ֻ⡲ג /&8
TJNQMJGZـٓٝثַ 'MVY晛鯪ֻ⡲ג /&8 ˖ "DUJPO$SFBUPS4UPSFכ 3Y3FMBZ⢪&WFOU#VT ˖ 4UPSFדכ-JWF%BUB䭯א ˖ 4UPSFכ7JFX.PEFMךהֹ֮לծ
4JOHMFUPOךהֹ֮
תה
תה ˖ "SDIJUFDUVSF$PNQPOFOUTك٦أדְז،٦ؗذؙثٍ罋ח׃ת׃կ
תה ˖ "SDIJUFDUVSF$PNQPOFOUTك٦أדְז،٦ؗذؙثٍ罋ח׃ת׃կ ˖ ׃罋ח،فٔ⡲גֻׁזծTJNQMJGZـٓٝثַ⡲גהְְַ ׃תׇկ ְֲֲֿ儗וֲׅלְְג䙼NBTUFSـٓٝثחְְ֮כ׆կ
תה ˖ "SDIJUFDUVSF$PNQPOFOUTك٦أדְז،٦ؗذؙثٍ罋ח׃ת׃կ ˖ ׃罋ח،فٔ⡲גֻׁזծTJNQMJGZـٓٝثַ⡲גהְְַ ׃תׇկ ְֲֲֿ儗וֲׅלְְג䙼NBTUFSـٓٝثחְְ֮כ׆կ ˖ 'MVYח莆ָ֮לծTJNQMJGZVYـٓٝثַ⡲גךְְַ׃תׇ կ
ְֲֲֿ儗וֲׅלְְג䙼"CFNB57ך؝٦س鋅לⴓַך דծ"CFNB57פ ⴓַ眔㔲ד֮ל兛鸐חֶ瘶ִ׃תׅկ
תה ˖ "SDIJUFDUVSF$PNQPOFOUTك٦أדְז،٦ؗذؙثٍ罋ח׃ת׃կ ˖ ׃罋ח،فٔ⡲גֻׁזծTJNQMJGZـٓٝثַ⡲גהְְַ ׃תׇկ ְֲֲֿ儗וֲׅלְְג䙼NBTUFSـٓٝثחְְ֮כ׆կ ˖ 'MVYח莆ָ֮לծTJNQMJGZVYـٓٝثַ⡲גךְְַ׃תׇ կ
ְֲֲֿ儗וֲׅלְְג䙼"CFNB57ך؝٦س鋅לⴓַך דծ"CFNB57פ ⴓַ眔㔲ד֮ל兛鸐חֶ瘶ִ׃תׅկ ˖ ֿך罋ִ倯ד⡲הה葺ֻזזוⰟ剣ְֽה㴍׃ְדׅɻ
ָ֮הֲ׀ְׂת׃