Slide 1

Slide 1 text

࣍ ੈ ୅ ͷ ඇ ಉ ظ ॲ ཧ ͸ ͜ ͏ ΍ ͬͯ ࢖ ͍ ෼ ͚ Δ ʂ             5 3 :   4 8 * ' 5  1 3 &  5" - , 4       : 6 5"  " # &

Slide 2

Slide 2 text

2 ࣗݾ঺հ Ѩ෦༏ଠ !ZVUBBCF $6/&-803,$0 -5%JO/**("5" J04"OESPJE%FWFMPQFSʜͷ͸ͣ 3FBDU&4Yɾ(PMBOH 1)1FS,BJHJͰ-5͠·͢

Slide 3

Slide 3 text

3 ໨࣍ "HFOEB 3FBDUJWF&YUFOTJPOT͸Կ͕͍͍ͷ͔ ͳͥ๻Β͸BTZODBXBJUΛཉ͕͠Δͷ͔ 1SPNJTFͳͷ͔4USFBNͳͷ͔

Slide 4

Slide 4 text

3FBDUJWF&YUFOTJPOT͸Կ͕͍͍ͷ͔ What is ReactiveExtensions good for …

Slide 5

Slide 5 text

5 Կͬ ͯɺͭ·Γʜ

Slide 6

Slide 6 text

6 ๻Β͸࣌Λࢧ഑͢Δ͜ͱʹ੒ޭͨ͠ɻ

Slide 7

Slide 7 text

7 ΛखʹೖΕͨʁ

Slide 8

Slide 8 text

8

Slide 9

Slide 9 text

9 ๻Β͸࣌Λࢧ഑͢Δ͜ͱΛ੒ޭͨ͠ɻ

Slide 10

Slide 10 text

10 ๻Β͸࣌Λࢧ഑͢Δ͜ͱΛ੒ޭͨ͠ɻ Πϕϯτ΍஋ͷྲྀΕΛ্࣌ؒ࣠Ͱ ετϦʔϜͱͯ͠ѻ͍΍͔ͬͨ͢ɻ

Slide 11

Slide 11 text

11 ؂ࢹՄೳ 0CTFSWBCMF ͳ΋ͷΛ࡞Γʜ ΠϕϯτΛߪಡ 4VCTDSJCF ͢Δͱʜ ੒ޭɾࣦഊ PO/FYU PSPO&SSPS Λڭ͑ͯ͘Εͨ 0CTFSWBCMF ؍࡯ର৅ 0CTFSWFS ؍࡯͢Δ 4VCTDSJCF

Slide 12

Slide 12 text

12 Πϕϯτ΍஋ͷྲྀΕΛ্࣌ؒ࣠Ͱ ετϦʔϜͱͯ͠ѻ͍΍͔ͬͨ͢ɻ ඇಉظॲཧ͕؆୯ʹѻ͍΍͘͢ͳͬͨ

Slide 13

Slide 13 text

13 Πϕϯτ΍஋ͷྲྀΕΛ্࣌ؒ࣠Ͱ ετϦʔϜͱͯ͠ѻ͍΍͔ͬͨ͢ɻ ඇಉظॲཧ͕؆୯ʹѻ͍΍͘͢ͳͬͨ

Slide 14

Slide 14 text

14

Slide 15

Slide 15 text

ͳͥ๻Β͸BTZODBXBJUΛཉ͕͠Δͷ͔ Why do we want “async/await”?

Slide 16

Slide 16 text

16 Πϕϯτ΍஋ͷྲྀΕΛ্࣌ؒ࣠Ͱ ετϦʔϜͱͯ͠ѻ͍΍͔ͬͨ͢ɻ ඇಉظॲཧ͕؆୯ʹѻ͍΍͘͢ͳͬͨ

Slide 17

Slide 17 text

17 Πϕϯτ΍஋ͷྲྀΕΛ্࣌ؒ࣠Ͱ ετϦʔϜͱͯ͠ѻ͍΍͔ͬͨ͢ɻ ඇಉظॲཧ͕؆୯ʹѻ͍΍͘͢ͳͬͨ

Slide 18

Slide 18 text

18 func fetchAdminUser(uid: String) { self.loginGateway .fetchAdminUser(uid: uid) .subscribe( onNext: { [weak self] adminUserEnitites in // do something }).disposed(by: self.disposeBag) } ͜ΕɺಡΉͷʹͲΕ͘Β͍͔͔Δʁ

Slide 19

Slide 19 text

19 func fetchAdminUser(uid: String) async { let entities = await self.loginGateway.fetchAdminUser(uid: uid) } ͜͏ͳΒͲ͏ʁ

Slide 20

Slide 20 text

20 func fetchAdminUser(uid: String) async { let entities = await self.loginGateway.fetchAdminUser(uid: uid) } ͜͏ͳΒͲ͏ʁ

Slide 21

Slide 21 text

21 func fetchAdminUser(uid: String) async { let entities = await self.loginGateway.fetchAdminUser(uid: uid) } ͜͏ͳΒͲ͏ʁ

Slide 22

Slide 22 text

22 3Y͕ඞཁʹͳΔγʔϯ ɾ6*Πϕϯτͷड͚औΓ ɾෳ਺ΠϕϯτͷετϦʔϜ͕ඞཁͳΠϕϯτ ɾσʔλঢ়ଶͷ؂ࢹ %BUB#JOEJOH ɾ୯७ͳ֎෦௨৴ͷSFRVFTUSFTQPOTF ୯ҰඇಉظΠϕϯτ

Slide 23

Slide 23 text

23 3Y͕ඞཁʹͳΔγʔϯ ɾ6*Πϕϯτͷड͚औΓ ɾෳ਺ΠϕϯτͷετϦʔϜ͕ඞཁͳΠϕϯτ ɾσʔλঢ়ଶͷ؂ࢹ %BUB#JOEJOH ɾ୯७ͳ֎෦௨৴ͷSFRVFTUSFTQPOTF ୯ҰඇಉظΠϕϯτ

Slide 24

Slide 24 text

24 3Y͕ඞཁʹͳΔγʔϯ ɾ6*Πϕϯτͷड͚औΓ ɾ୯७ͳ֎෦௨৴ͷSFRVFTUSFTQPOTF ୯ҰඇಉظΠϕϯτ ɾෳ਺ΠϕϯτͷετϦʔϜ͕ඞཁͳΠϕϯτ ɾσʔλঢ়ଶͷ؂ࢹ %BUB#JOEJOH ͜ΕΛ΋ͬͱ͍ܰͨ͘͠ʂ

Slide 25

Slide 25 text

25 3Y͕ඞཁʹͳΔγʔϯ ɾ6*Πϕϯτͷड͚औΓ ɾ୯७ͳ֎෦௨৴ͷSFRVFTUSFTQPOTF ୯ҰඇಉظΠϕϯτ ɾෳ਺ΠϕϯτͷετϦʔϜ͕ඞཁͳΠϕϯτ ɾσʔλঢ়ଶͷ؂ࢹ %BUB#JOEJOH ͜ΕΛ΋ͬͱ͍ܰͨ͘͠ʂ ୯७ͳΠϕϯτʹ·Ͱ3Y͸࢖͍ͨ͘ͳ͍ʂ

Slide 26

Slide 26 text

1SPNJTFͳͷ͔4USFBNͳͷ͔ Do you want “Promise” or “Stream”?

Slide 27

Slide 27 text

27 1SPNJTFͱ͸ ɾʮ୯ҰͷඇಉظΠϕϯτʯΛѻ͏ ɾBTZODGVODUJPOͷ໭Γ஋ ɾBTZODGVODUJPO͕SFUVSOͨ͠ΒQSPNJTF͕SFTPMWF͢Δ ɾBTZODGVODUJPO͕UISPXͨ͠ΒQSPNJTF͕SFKFDU͢Δ ɾBXBJU͸QSPNJTFͷ݁ՌΛ଴ͪɺฦͬͨΒ࠶։͢Δ Ұൠతͳ

Slide 28

Slide 28 text

28 1SPNJTFͰे෼ͳγʔϯ ɾ୯७ͳ"1*ίʔϧ ɾը૾ɾಈըͳͲૢ࡞ͷॏ͍ॲཧ ɾ࣌ݶര஄ ɾෳࡶͳΤϥʔϋϯυϦϯά͕ෆཁ UISPXTOPOUISPXJOHͰ͍͚Ε͹͍͍ ɾฒྻॲཧෆཁ࣌ 'VUVSFͰ͍͚Ε͹͍͍

Slide 29

Slide 29 text

29 ɾ୯ҰඇಉظΠϕϯτ͸1SPNJTFͰྑ͔ͬͨ ɾෳ਺ͷඇಉظॲཧ ΠϕϯτετϦʔϜ ͸3Yͷຊ๬

Slide 30

Slide 30 text

30 ɾ୯ҰඇಉظΠϕϯτ͸1SPNJTFͰྑ͔ͬͨ ɾෳ਺ͷඇಉظॲཧ ΠϕϯτετϦʔϜ ͸3Yͷຊ๬ ཉ͍͠ͷ͸ʮ1SPNJTFͳͷ͔4USFBNͳͷ͔ʯ

Slide 31

Slide 31 text

͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠