Slide 1

Slide 1 text

˜-:$PSQPSBUJPO -*/&ΞϓϦ։ൃຊ෦ ϝοηϯδϟʔϓϩμΫτΞϓϦ։ൃνʔϜ $IJHJUB ,B[VLJ $PEF#VH'JY$IBMMFOHF ϒʔε४උͷཪଆ BG@ESPJELBJHJ "GUFS%SPJE,BJHJ

Slide 2

Slide 2 text

˜-:$PSQPSBUJPO ˜-:$PSQPSBUJPO $IJHJUB ,B[VLJ !DIJHJDIBO Ϟδϡʔϧ෼ׂͷઓུ΍མͱ݀͠ʹ͍ͭͯ %SPJE,BJHJͰొஃ ͷ༧ఆ͕ίϩφͰΩϟϯηϧʹ %SPJE,BJHJΞϓϦͷྺ࢙͔ΒֶͿ ΞʔΩςΫνϟมભʹ͍ͭͯͱ͍͏಺༰Ͱొஃ "041Λݸਓͷ؀ڥͰϏϧυ͢Δํ๏΍ɺ OBWJHBUJPOCBSͷڍಈʹ͍ͭͯ%SPJE,BJHJͰొஃ -*/&ϠϑʔͷϒʔεԣͷϓϦΫϥΛࡱΔ %SPJE,BJHJ ʹ͸͡ΊͯࢀՃ͢Δ

Slide 3

Slide 3 text

˜-:$PSQPSBUJPO -*/&Ϡϑʔͷϒʔε಺༰ʹ͍ͭͯ %BZ໰໨ͷղઆ %BZ໰໨ͷղઆ ϒʔεΛ४උ͢Δ͏͑Ͱࢲୡ͕ߦͬͨ޻෉ ·ͱΊ "HFOEB

Slide 4

Slide 4 text

˜-:$PSQPSBUJPO -*/&Ϡϑʔͷϒʔε಺༰ʹ͍ͭͯ %BZ໰໨ͷղઆ %BZ໰໨ͷղઆ ϒʔεΛ४උ͢Δ͏͑Ͱࢲୡ͕ߦͬͨ޻෉ ·ͱΊ "HFOEB

Slide 5

Slide 5 text

˜-:$PSQPSBUJPO $PEF#VH'JY$IBMMFOHF -*/&Ϡϑʔͷϒʔε಺༰ʹ͍ͭͯ

Slide 6

Slide 6 text

˜-:$PSQPSBUJPO $PEF#VH'JY$IBMMFOHF -*/&Ϡϑʔͷϒʔε಺༰ʹ͍ͭͯ ϒʔε΁ͷࢀՃऀ ໰୊ʹνϟϨϯδͨ͠ਓ ໿ ਓ

Slide 7

Slide 7 text

˜-:$PSQPSBUJPO $PEF#VH'JY$IBMMFOHF -*/&Ϡϑʔͷϒʔε಺༰ʹ͍ͭͯ ࣮ࡍʹฉ͍ͨ੠ ʮ-*/&Ϡϑʔͱ͍͑͹͜ͷϒʔεاըͩΑͶɻʯ ʮશ໰୊ίϯϓ͍͔ͨ͠Β·ͨདྷ·͢ɻʯ

Slide 8

Slide 8 text

˜-:$PSQPSBUJPO 1PDLFU$PEF #BUUMF $PEF3FWJFX $IBMMFOHF ͜Ε·Ͱͷϒʔεͷྺ࢙ -*/&Ϡϑʔͷϒʔε಺༰ʹ͍ͭͯ $PEF#VH'JY $IBMMFOHF

Slide 9

Slide 9 text

˜-:$PSQPSBUJPO $PEF#VH'JY $IBMMFOHF 1PDLFU$PEF #BUUMF $PEF3FWJFX $IBMMFOHF 1VMM3FRVFTUͱͯ͠࡞੒͞Εͨίʔυʹରͯ͠ɺϨϏϡʔίϝϯτΛ͚ͭΔ -*/&Ϡϑʔͷϒʔε಺༰ʹ͍ͭͯ

Slide 10

Slide 10 text

˜-:$PSQPSBUJPO $PEF3FWJFX $IBMMFOHF $PEF#VH'JY $IBMMFOHF 1PDLFU$PEF #BUUMF ಉ͡ಈ࡞Λ͢Δͭͷ࣮૷ํ๏Λݟൺ΂ͯɺͲͪΒ͕Α͍ͷ͔ٞ࿦͢Δ -*/&Ϡϑʔͷϒʔε಺༰ʹ͍ͭͯ

Slide 11

Slide 11 text

˜-:$PSQPSBUJPO ʁʁʁʁʁʁ -*/&Ϡϑʔͷϒʔε಺༰ʹ͍ͭͯ 1PDLFU$PEF #BUUMF $PEF3FWJFX $IBMMFOHF $PEF#VH'JY $IBMMFOHF

Slide 12

Slide 12 text

˜-:$PSQPSBUJPO ग़୊ऀ͕ߟ͑ͨόά͕ଟؚ͘·Εͨίʔυ͕ܝࣔ͞ΕΔ ϒʔεʹ๚Εͨํ͸όάΛ୳ͯ͠ɺͦͷόάͷ಺༰΍मਖ਼ํ๏Λॻ͍ͯ΋Β͏ όάΛݕ஌͢ΔͨΊͷɺςετ΍ϦϑΝΫλϦϯάͷΞΠσΞΛॻ͍ͯ΋Β͏ -*/&ϠϑʔͷϝϯόʔͱσΟεΧογϣϯ͢Δ ֤೔໰ͣͭɺ%SPJE,BJHJظؒதͰ߹ܭ໰ͷ໰୊Λग़୊͢Δ Ќ Ћ ̏ $PEF#VH'JY$IBMMFOHF -*/&Ϡϑʔͷϒʔε಺༰ʹ͍ͭͯ

Slide 13

Slide 13 text

˜-:$PSQPSBUJPO ΑΓ࣮ફతͳέʔεͱͯ͠࿩͍ͨ͜͠ͱ ༨ஊ#VH'JYΛߦ͏ͱ͖ • όά͕ݟ͔ͭͬͨͱ͖ʹ͸ɺӨڹͷେ͖͞ͱಉ༷ͷ໰୊Λ܁Γฦ͞ͳ͍͜ͱΛߟ͑Δͱྑ͍ • Өڹͷେ͖͞ • όάΛमਖ਼͢Δํ๏ͱͯ͠ɺ2VJDLGJY·ͨ͸ 'VOEBNFOUBMGJYΛߟ͑Δ • 2VJDLGJYͷ৔߹ʹ͸νέοτ؅ཧγεςϜ౳ͰϑΥϩʔΞοϓλεΫΛ࡞Δ͜ͱΛ๨Εͳ͍ • ಉ༷ͷ໰୊Λ܁Γฦ͞ͳ͍ • 6OJU5FTUΛ௥Ճ͢Δ • मਖ਼ͷ13ͱ߹Θͤͯ 5FTUΛ௥Ճ͢Δͷ͕ྑ͍ • ֘౰ͷΫϥεʹ 5FTU͕ͳ͍৔߹ʹ΋௥Ճ͢Δͷ͕ྑ͍ • ৔߹ʹΑͬͯ͸ɺ%FWFMPQFSNBOVBMUFTUDBTF2"5FTUDBTF&&5FTUDBTFʹՃ͑Δ ͜ͱ΋ߟྀ͢Δ • )PUGJYSFMFBTF౳ͷ৔߹ʹ͸ɺ1PTUNPSUFN΋ޮՌత

Slide 14

Slide 14 text

˜-:$PSQPSBUJPO ΑΓ࣮ફతͳέʔεͱͯ͠࿩͍ͨ͜͠ͱ ༨ஊ#VH'JYΛߦ͏ͱ͖ • όά͕ݟ͔ͭͬͨͱ͖ʹ͸ɺӨڹͷେ͖͞ͱಉ༷ͷ໰୊Λ܁Γฦ͞ͳ͍͜ͱΛߟ͑Δͱྑ͍ • Өڹͷେ͖͞ • όάΛमਖ਼͢Δํ๏ͱͯ͠ɺ2VJDLGJY·ͨ͸ 'VOEBNFOUBMGJYΛߟ͑Δ • 2VJDLGJYͷ৔߹ʹ͸νέοτ؅ཧγεςϜ౳ͰϑΥϩʔΞοϓλεΫΛ࡞Δ͜ͱΛ๨Εͳ͍ • ಉ༷ͷ໰୊Λ܁Γฦ͞ͳ͍ • 6OJU5FTUΛ௥Ճ͢Δ • मਖ਼ͷ13ͱ߹Θͤͯ 5FTUΛ௥Ճ͢Δͷ͕ྑ͍ • ֘౰ͷΫϥεʹ 5FTU͕ͳ͍৔߹ʹ΋௥Ճ͢Δͷ͕ྑ͍ • ৔߹ʹΑͬͯ͸ɺ%FWFMPQFSNBOVBMUFTUDBTF2"5FTUDBTF&&5FTUDBTFʹՃ͑Δ ͜ͱ΋ߟྀ͢Δ • )PUGJYSFMFBTF౳ͷ৔߹ʹ͸ɺ1PTUNPSUFN΋ޮՌత $PEF#VH'JY$IBMMFOHFͷίϯηϓτ

Slide 15

Slide 15 text

˜-:$PSQPSBUJPO -*/&Ϡϑʔͷϒʔε಺༰ʹ͍ͭͯ %BZ໰໨ͷղઆ %BZ໰໨ͷղઆ ϒʔεΛ४උ͢Δ͏͑Ͱࢲୡ͕ߦͬͨ޻෉ ·ͱΊ "HFOEB

Slide 16

Slide 16 text

˜-:$PSQPSBUJPO 5IF$PNQMFUF8PSLTPG*ODPSSFDU&MFNFOUT

Slide 17

Slide 17 text

˜-:$PSQPSBUJPO 5IF$PNQMFUF8PSLTPG*ODPSSFDU&MFNFOUT ϦετͷཁૉΛফͯ͠͠·͏ͱΠϯσοΫε͕Ұக͠ͳ͘ͳΔɻ ٯॱͰফ͢ PSusers.filterNot { it.isBlocked } ͱ͢Δ

Slide 18

Slide 18 text

˜-:$PSQPSBUJPO 5IF$PNQMFUF8PSLTPG*ODPSSFDU&MFNFOUT ഑ྻ֎ࢀরΛҾ͖ى͜͢ͷͰɺ.. Ͱ͸ͳ͘ ..< Λ༻͍Δɻ ෆ౳߸ͷ޲͖͕ٯͰɺঢॱιʔτʹͳ͍ͬͯΔɻ ·ͨ͸ɺಛʹཧ༝͕ͳ͍ͷͰ͋Ε͹ඪ४ϥΠϒϥϦͷιʔτؔ਺Λ༻͍Δɻ users.sortByDescending { it.updateTimeMillis }

Slide 19

Slide 19 text

˜-:$PSQPSBUJPO 5IF$PNQMFUF8PSLTPG*ODPSSFDU&MFNFOUT Πϯελϯεͷίϐʔ͕౉͞Ε͍ͯΔɻ ιʔτΛ࣮ߦͯ͠΋ GSJFOETͷத਎͸มԽ͠ͳ͍ɻ

Slide 20

Slide 20 text

˜-:$PSQPSBUJPO 5IF$PNQMFUF8PSLTPG*ODPSSFDU&MFNFOUT showLoadingView()ͱhideLoadingView()ͰғΜͰ͍Δ͕ɺ ్தͰؔ਺͕Ωϟϯηϧ͞Εͨ৔߹ʹɺLoadingView͕࢒Γଓ͚Δ try-finally {} Ͱϥοϓ͢ΔΑ͏ʹ͢Δ

Slide 21

Slide 21 text

˜-:$PSQPSBUJPO 5IF$PNQMFUF8PSLTPG*ODPSSFDU&MFNFOUT શମΛ௨ͯ͠ɺ6OJU5FTUΛॻ͍͍ͯΕ͹ ॲཧ͕ਖ਼࣮͘͠ߦ͞Εͳ͍͜ͱʹؾ͕͚ͭΔʂ ಛʹڥք஋Λ༻͍ΔςετΛҙࣝ͢Δͱྑ͍ɻ

Slide 22

Slide 22 text

˜-:$PSQPSBUJPO -*/&Ϡϑʔͷϒʔε಺༰ʹ͍ͭͯ %BZ໰໨ͷղઆ %BZ໰໨ͷղઆ ϒʔεΛ४උ͢Δ͏͑Ͱࢲୡ͕ߦͬͨ޻෉ ·ͱΊ "HFOEB

Slide 23

Slide 23 text

˜-:$PSQPSBUJPO 0OMZ(FU0OF4IPUBU$PNQPTF

Slide 24

Slide 24 text

˜-:$PSQPSBUJPO 0OMZ(FU0OF4IPUBU$PNQPTF

Slide 25

Slide 25 text

˜-:$PSQPSBUJPO 0OMZ(FU0OF4IPUBU$PNQPTF

Slide 26

Slide 26 text

˜-:$PSQPSBUJPO 0OMZ(FU0OF4IPUBU$PNQPTF pageview ͷϩά͕ recomposition ͷͨͼʹૹ৴͞Ε͍ͯΔɻ ͜ͷέʔεͰ͸ LaunchedEffect(Unit) ͕Α͍ɻ

Slide 27

Slide 27 text

˜-:$PSQPSBUJPO 0OMZ(FU0OF4IPUBU$PNQPTF Observer ͕ഁغ͞Εͣʹ࢒Γଓ͚͍ͯΔͨΊϝϞϦϦʔΫͷՄೳੑ͕͋Δɻ onDispose Ͱ observer Λ remove͢ΔͳͲͷํ๏͕๬·͍͠ɻ

Slide 28

Slide 28 text

˜-:$PSQPSBUJPO 0OMZ(FU0OF4IPUBU$PNQPTF ը໘ճస࣌ʹ TopAppBar ͷঢ়ଶΛอ࣋͠ͳ͍ɻ อ͍࣋ͨ͠৔߹ʹ͸ rememberSavable Λ༻͍Δ͜ͱͰɺ configuration change ࣌ʹ΋஋͕อ࣋͞ΕΔ

Slide 29

Slide 29 text

˜-:$PSQPSBUJPO 0OMZ(FU0OF4IPUBU$PNQPTF શମΛ௨ͯ͠ɺ"1*ͷ࢖͍ํ͸ؒҧ͍ͬͯͳ͍͕ɺ ࢓༷ʹରͯ͠ద੾ʹ࣮૷͍ͯ͠Δ͔͕Θ͔Βͳ͍ঢ়ଶɻ *OTUSVNFOUBM5FTU΍ɺ4DSFFOTIPU5FTUΛ Ͳ͜·Ͱॻ͘΂͖͔͕য఺ʹͳΔɻ

Slide 30

Slide 30 text

˜-:$PSQPSBUJPO -*/&Ϡϑʔ5FDI#MPHΛݟͯͶ IUUQTUFDICMPHMZDPSQDPKQKB ଞ໰୊ʹ͍ͭͯ΋ ࡞໰ऀʹΑΔղઆهࣄΛޙ೔ެ։༧ఆ

Slide 31

Slide 31 text

˜-:$PSQPSBUJPO -*/&Ϡϑʔͷϒʔε಺༰ʹ͍ͭͯ %BZ໰໨ͷղઆ %BZ໰໨ͷղઆ ϒʔεΛ४උ͢Δ͏͑Ͱࢲୡ͕ߦͬͨ޻෉ ·ͱΊ "HFOEB

Slide 32

Slide 32 text

˜-:$PSQPSBUJPO ෳ਺ͷ໰୊ͱελϯϓϥϦʔΧʔυΛ༻ҙ͢Δ͜ͱͰɺଟ͘ͷਓʹ܁Γฦ͠དྷͯ΋Β͑ΔΑ͏ʹ͢Δ ໰Λෳ਺ਓͰ࡞੒͢Δ͜ͱͰɺ༷ʑͳλΠϓͷόά͕ೖΔΑ͏ʹௐ੔ ؆қతͳղઆΛͦͷ৔Ͱ഑Δ͜ͱͰɺղ͚ͨਓ΋ղ͚ͳ͔ͬͨਓʹ΋ೲಘײΛ΋ͬͯ΋Β͏ ϒʔε΁ͷࢀՃΛ௨ͯ͠ɺ-*/&ϠϑʔͷίϯςϯπʹڵຯΛ࣋ͬͯ΋Β͑ΔΑ͏ͳνϥγͷ࡞੒ ͦͷଞઃӦ࣌ͷࡉ͔ͳ޻෉౳ʑʜ ϒʔεΛ४උ͢Δ͏͑Ͱࢲୡ͕ߦͬͨ޻෉

Slide 33

Slide 33 text

˜-:$PSQPSBUJPO ϒʔεΛ४උ͢Δ͏͑Ͱࢲୡ͕ߦͬͨ޻෉ ιϑτ΢ΣΞ ΤϯδχΞ %FW3FM $PQZSJHIU5XJUUFS *ODBOEPUIFSDPOUSJCVUPST (SBQIJDTMJDFOTFEVOEFS$$#: IUUQTDSFBUJWFDPNNPOTPSHMJDFOTFTCZ

Slide 34

Slide 34 text

˜-:$PSQPSBUJPO -*/&Ϡϑʔͷϒʔε಺༰ʹ͍ͭͯ %BZ໰໨ͷղઆ %BZ໰໨ͷղઆ ϒʔεΛ४උ͢Δ͏͑Ͱࢲୡ͕ߦͬͨ޻෉ ·ͱΊ "HFOEB

Slide 35

Slide 35 text

˜-:$PSQPSBUJPO ·ͱΊ • $PEF#VH'JY$IBMMFOHF͸ΑΓ࣮ࡍͷ։ൃͷϑϩʔʹ͍ۙ಺༰͕ίϯηϓτ • શ໰୊ͷΑΓৄࡉͳղઆ͸ޙ೔ -*/&Ϡϑʔ 5FDI#MPHͰܝࡌ༧ఆ • ίʔυ඼࣭޲্ͷςΫχοΫ͸ຖि໦༵ఆظ࿈ࡌ IUUQTUFDICMPHMZDPSQDPKQKBDPEFSFWJFXTFSJFT

Slide 36

Slide 36 text

˜-:$PSQPSBUJPO