APIͷσʔλͷϚοϐϯάΛ18ഒͨ͘͠potatotips #48@magie_pooh
View Slide
ࣗݾհ౻ాୖຏ@magie_pooh@magiepoohझຯɾಛٕ: ΫϥϑτϏʔϧɾຊञɾϚδοΫɾ࠵
ͱ͋ΔΞϓϦͷ։ൃத• ը໘ભҠ͕͍͕͋Δͳʔͱࢥͬͨ
ͱ͋ΔΞϓϦͷ։ൃத• ը໘ભҠ͕͍͕͋Δͳʔͱࢥͬͨ• Nexus5Xͱ͔Ͱඵ
ͱ͋ΔΞϓϦͷ։ൃத• ը໘ભҠ͕͍͕͋Δͳʔͱࢥͬͨ• Nexus5Xͱ͔Ͱඵ• SO-04G (5.0.2)Ͱը໘ભҠʹ20sec͘Β͍ɾɾ
ঢ়گ• Wi-Fiଓڥ• σʔλJSONܗࣜ• αΠζ1MB• Kotlin + Moshi(=A modern JSON library forAndroid and Java)
ରࡦ
ରࡦ1ɿMoshi͕ѱ͍ͷͰʁ• moshi(moshi-kotlin: SquareJSONύʔα)ϦϑϨΫγϣϯΛ༻͍͍ͯΔͨΊɺίετ͕ߴ͍• KotshiΛ͏• An annotations processor that generates Moshi adaptersfrom immutable Kotlin data classes.• https://github.com/ansman/kotshi
ରࡦ1ɿMoshi͕ѱ͍ͷͰʁ• moshi(moshi-kotlin: SquareJSONύʔα)ϦϑϨΫγϣϯΛ༻͍͍ͯΔͨΊɺίετ͕ߴ͍• KotshiΛ͏• An annotations processor that generates Moshi adaptersfrom immutable Kotlin data classes.• https://github.com/ansman/kotshi=> 20sec -> 12sec
ରࡦ2ɿΦϒδΣΫτੜ͕ଟ͗͢Δ• ྻͷதʹΦϒδΣΫτ͕େྔʹଘࡏ͍ͯͨ͠{“hogeArray”: [{“obj”: {123, 456.2}},…]}
ରࡦ2ɿΦϒδΣΫτੜ͕ଟ͗͢Δ• ྻͷதʹΦϒδΣΫτ͕େྔʹଘࡏ͍ͯͨ͠=> ΦϒδΣΫτ͡Όͳ͘ɺStringܕͷྻͷྻͰදݱ͢Δ{“hogeArray”: [{“obj”: {123, 456.2}},…]}{“hogeArray”: [[“123”, “456.2”],…]}
ରࡦ2ɿΦϒδΣΫτੜ͕ଟ͗͢Δ• ྻͷதʹΦϒδΣΫτ͕େྔʹଘࡏ͍ͯͨ͠=> ΦϒδΣΫτ͡Όͳ͘ɺStringܕͷྻͷྻͰදݱ͢Δ{“hogeArray”: [{“obj”: {123, 456.2}},…]}{“hogeArray”: [[“123”, “456.2”],…]}=> 12sec -> 8.4secʢྻσʔλ͕ͦͦڊେͩͬͨͨΊɺ͔ͳΓ͕ࠩग़ͨʣ
ରࡦ3: APIఆٛΛݟ͢• ྻσʔλΛ̍ͭʹڞ௨ԽͰ͖Δɾɾɾʂ• ॏෳͨ͠ྻσʔλΛ4ͭड͚औ͍ͬͯͨ=> 8.4sec -> 2.9sec
·ͱΊ1• ΄΅Kotshiͷ͓͔͕͛ͩɺ20sec -> 2.9secʹͳͬͨ• େྔͷྻσʔλʹܕΛ͚ͭΔͷΑ͘ͳ͍• ʮͦͷɺਓྨࢥ͍ग़ͨ͠ɻؒͷύϑΥʔϚϯεࠩҟͷڪාΛɻͦΕͰαϙʔτ͠ͳ͚Ε͍͚ͳ͍۶ৱΛɻʯ• SO-04G (5.0.2): 2.9sec• SO-02G (4.4.4): 0.64sec
·ͱΊ2• iOSͰͦ͜·Ͱύʔεʹ͕͔͔࣌ؒͬͯͳ͔ͬͨͷ͕ٙ• ͔ͯ͠͠ݹ͍ͩͱ͕͔͔࣌ؒΔʁ• ը໘ભҠΞχϝʔγϣϯ(Shared Element Transition)͕͋Δͱɺ2.9secͰ͘ײ͡ͳ͍• ͦΕͰɺ2.9sec͔͔Δͷ͕ݏͩͬͨͷͰɺେྔͷྻͷऔಘผAPIʹΓग़ͨ͠ɻʢͦΕͰ1.2sec͘Β͍·ͰॖΊͯ18ഒͷύϑΥʔϚϯεվળୡɾɾʣ