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
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
880
AndroidアプリのAI実装をAndroidifyで学ぶ ー Google公式サンプルによる体験と実装 ー
takahirom
0
160
AIエージェントによるテストフレームワーク Arbigent
takahirom
0
1.1k
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
XP祭りでしか伝わらないフリップネタ #xpjug
murabayashi
0
150
Jetpack Compose メカニズム
skydoves
0
420
標準パッケージに uuid が追加された 背景から見る Go らしい意思決定 / go_127_uuid_decision
convto
5
7.1k
Webの地図
yosuke_furukawa
PRO
6
4.5k
モジュールの視点からSwiftを読み解く #iosdc
s_shimotori
0
170
cdk deploy JawsSonic #MARATHONしながらAWSリソースをデプロイしてみよう
akihisaikeda
2
130
Starting & Sustaining Code-Based E2E Testing for Non-Coding QA Teams( #jasstniigata )
teyamagu
PRO
1
190
LL言語やWebフレームワークのPostgreSQL対応 〜DBの機能がユーザーに届くまで〜
kentaroutakeda
1
150
技術的負債を組織課題として解く-増えすぎたマイクロサービスとの戦い-
reimaru
1
1.8k
AWS Step Functions 大規模並列の壁を越える / jaws-sonic-2026-niigata-step-functions
kasacchiful
PRO
1
460
Java 27新機能 / Java 27 new features
kishida
2
140
【DroidKaigi 2026】「アクセシビリティを利用するとき、 アクセシビリティもまたこちらを利用している」 〜マルウェアによる攻撃と防衛について〜
halunoyo
0
460
Featured
See All Featured
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
590
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
410
The Cost Of JavaScript in 2023
addyosmani
55
10k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
580
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.8k
How to Talk to Developers About Accessibility
jct
2
550
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.6k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
280
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
200
Everyday Curiosity
cassininazir
0
320
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
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פ ⴓַ眔㔲ד֮ל兛鸐חֶ瘶ִ׃תׅկ ˖ ֿך罋ִ倯ד⡲הה葺ֻזזוⰟ剣ְֽה㴍׃ְדׅɻ
ָ֮הֲ׀ְׂת׃