Slide 1

Slide 1 text

TIJCVZBBQL0DU %FCVHHJOH "'FX5IJOHT:PV4IPVME,OPX Jumpei Matsuda @red_fat_daruma

Slide 2

Slide 2 text

2 Jumpei Matsuda @red_fat_daruma Software Architect at DeployGate, Inc. Android App and SDK Development Gradle Plugin Development Development Productivity Engineering Rails App Development and more... .F https://deploygate.com

Slide 3

Slide 3 text

w %SPJE,BJHJͰͷൃද w SFGIUUQTESPJELBJHJKQUJNFUBCMF w ࿩ͨ͜͠ͱ w 1SJOU%FCVHHJOH͚ͩͰઓ͏ͷ͸΍ΊΑ͏ʁ w #SFBLQPJOUTΛྑ͍ײ͡ʹஔ͍͍͚ͯ w %FCVHHFS͸͍͍ͧ %FCVHHJOH"MM:PV/FFEUP,OPX 3

Slide 4

Slide 4 text

w %SPJE,BJHJͰͷൃදͰ࿩͞ͳ͔ͬͨ͜ͱΛ͍͔ͭ͘ w SFGIUUQTESPJELBJHJKQUJNFUBCMF w ݱ஍Ͱ࣭໰Λ໯ͬͨ΋ͷ͔Βͭ w %FBEMPDLͷσόοά w )551ϦΫΤετͷσόοά %FCVHHJOH"MM:PV/FFEUP,OPX 4 "'FX5IJOHT:PV4IPVME,OPX

Slide 5

Slide 5 text

Deadlock ͷσόοά 5

Slide 6

Slide 6 text

w %FCVHHFSΛ͏·͘࢖͏͜ͱͰ%FBEMPDLΛ࠶ݱɾղফͰ͖Δ ͔΋ w FH%FCVHHFSʹΑΔ5ISFBE4VTQFOTJPOΛηϚϑΥ୅ΘΓʹ࢖͏ w ͨͩ͠ɺ%FBEMPDLͷൃੜ͸ط஌Ͱ͋Δͱ͍͏લఏ͕͋Δ w ҙਤ͠ͳ͍%FBEMPDL͕ൃੜͯ͠͠·ͬͨΒ w ͦ΋ͦ΋%FBEMPDL͔Ͳ͏͔Λௐ΂͍ͨͱ͖͸Ͳ͏͢Δ %FBEMPDLͷσόοά ൃදͨ͠಺༰ 6

Slide 7

Slide 7 text

w .BSLMJOFTUPBMMPXJOUFSBDUJPOTGSPN%FCVHHFS w 5PHHMFMJOFCSFBLQPJOUTCZUBQQJOHBHVUUFSPGBOFEJUPS w "UUIFCPUIPGSVOUJNFBOECFGPSFMBVODIJOHUIFBQQ -JOF#SFBLQPJOUT 7 DebuggerΛ࢖͏ࡍ͸ίʔυͷमਖ਼Ͱ͸ͳ͘ɺ breakpointͱݺ͹ΕΔ΋ͷ͕ඞཁͰ͢ ಈը 6෼ࠒ: https://youtu.be/afUzb_QoVKY?t=361

Slide 8

Slide 8 text

w #SFBLQPJOUT w %FCVHHFSٴͼ%FCVHHFSͷػೳΛ༗ޮԽ͢ΔτϦΨʔ w ઃஔ͞Εͨίʔυ ߦFUD Λ௨ա͢ΔλΠϛϯάͰ༗ޮԽͯ͘͠ΕΔ w 㱻ͦͷίʔυΛ௨ա͠ͳ͍ͱࢭΊΒΕͳ͍ w %FBEMPDL͕ى͖ͨͱ͖ʹ#SFBLQPJOUTΛ௨աͤ͞Δɺͱ͸ɾɾɾ w FH6*ૢ࡞͕Ͱ͖ͳ͍ঢ়ଶͰ%FBEMPDL͕ൃੜͨ͠ΒͲ͏͢Δ #SFBLQPJOUTʹΑΔσόοάͷݶք 8

Slide 9

Slide 9 text

Ͱ͖·͢ ͦ͏ɺ*%&"ͷ1BVTF1SPHSBNͳΒͶ 9

Slide 10

Slide 10 text

10 1BVTF1SPHSBNͰ͍ͭͰ΋தஅͰ͖Δ

Slide 11

Slide 11 text

w 1BVTF1SPHSBNͰ͍ͭͰ΋֤εϨουΛ؍࡯Ͱ͖Δ w %FBEMPDL͕ൃੜ͍ͯ͠Δɺ%FBEMPDL͔ͱࢥͬͨΒҧͬͨFUD͕Θ͔Δ w ͱ͸͍͑ɺ௨ৗ࣌͸ຆͲग़൪͕ͳ͍ͷͰɺؤு͓͍͍֮ͬͯ͑ͯͯͩ͘͞ w .BJO-PPQFS͕*EMFঢ়ଶͰࢭΊͯ΋ɾɾɾ w Ұํɺ.BJO5ISFBE͕࢓ࣄΛ͗͢͠Δͱ"/3ʹͳΔ͠ɾɾɾ w 4UFQ0WFSͳͲ΋͜ͷঢ়ଶͩͱ࢖͍෺ʹͳΒͳ͍͠ɾɾɾ ೚ҙͷλΠϛϯάͰ %FCVHHFSΛར༻Ͱ͖Δͱ͍͏͜ͱ͸ɾɾɾ 11

Slide 12

Slide 12 text

HTTPϦΫΤετͷσόοά 12

Slide 13

Slide 13 text

w ੩తͳ4UVCºཁίʔυมߋ w ͦ΋ͦ΋ϦΫΤετΛݺ͹ͣɺ4UVCΛฦ͢ w ௨৴ϥΠϒϥϦͷ࢓૊Έͷ্Ͱվม͢Δ w ੩తͳ4UVCºίʔυมߋෆཁ w /FUXPSL*OTQFDUPS w ಈతͳ4UVCºཁίʔυมߋ ޮ཰ԽͷͨΊ w %FCVHHFS ୅දతͳΞϓϦ૚Ͱͷհೖํ๏ 13

Slide 14

Slide 14 text

όοΫΤϯυ Android ΞϓϦ OS ௨৴࣌ͷ֓ཁ 14 ϦΫΤετ/ Ϩεϙϯε ར༻ίʔυ LB ௨৴ ϥΠϒϥϦ ΞϓϦ ϦΫΤετૹ৴ Ϩεϙϯεड৴

Slide 15

Slide 15 text

όοΫΤϯυ Android ΞϓϦ OS 15 ϦΫΤετ/ Ϩεϙϯε ར༻ίʔυ LB ௨৴ ϥΠϒϥϦ ΞϓϦ ϦΫΤετૹ৴ Ϩεϙϯεड৴ Debugger Network Inspector Proxyαʔόʔ Πϯϑϥ/όοΫΤϯυ ௨৴࣌ͷ֓ཁओͳΧόʔൣғ

Slide 16

Slide 16 text

Proxyαʔόʔ Πϯϑϥ/όοΫΤϯυ όοΫΤϯυ Android ΞϓϦ OS "OESPJE4UVEJPඪ४Ͱ͸͜ͷൣғͷΈ 16 ϦΫΤετ/ Ϩεϙϯε ར༻ίʔυ LB ௨৴ ϥΠϒϥϦ ΞϓϦ ϦΫΤετૹ৴ Ϩεϙϯεड৴ Debugger Network Inspector

Slide 17

Slide 17 text

0L)UUQͰͷྫ/FUXPSL*OTQFDUPS 17 ը૾: https://square.github.io/okhttp/features/interceptors/ ΑΓҾ༻ ࣗ࡞App InterceptorͰ ॻ͖׵͑ͨ݁ՌΛݟΕΔ ࣗ࡞NW InterceptorͰ ॻ͖׵͑ͨ݁ՌΛݟΕͳ͍ Cache ͳͲ͸ಈ͘

Slide 18

Slide 18 text

0L)UUQͰͷྫ%FCVHHFS 18 ը૾: https://square.github.io/okhttp/features/interceptors/ ΑΓҾ༻ ཧ࿦తʹ͸ Debugger Ͱ ޷͖উखͰ͖Δ ҰํɺOkHttpͷਂ͍ཧղ͕ඞཁ + ॻ͖׵͑ʹࡍ͠ɺ Debugger UI ͷݶք ϦΫΤετઌΛςεταʔόʔʹ มߋ͢Δఔ౓ʹཹΊΔ΂͖

Slide 19

Slide 19 text

w %FCVHHFS͸ͦ͜·Ͱ޲͍ͯͳ͍ w ϦΫΤετपΓͷॲཧΛ௥͏PSςεταʔόʔʹ੾Γସ͑͸ಘҙ w ͦΕҎ্͸΍Βͳ͍΄͏͕͍͍ w Ұൠతʹ͸/FUXPSL*OTQFDUPS͕Α͍ w ෳࡶɾେྔͷஔ͖׵͑ϧʔϧͷ؅ཧ͸ਓؒͷೳྗґଘ w ͠ΜͲ͞Λײͨ͡Β$IBSMFTͳͲͷ1SPYZΛબ୒ࢶʹͨ͠΄͏͕͍͍ ͭ·Γɺ)551ϦΫΤετͷσόοά͸ 19

Slide 20

Slide 20 text

%FCVHHJOH "'FX5IJOHT:PV4IPVME,OPX Jumpei Matsuda @red_fat_daruma