Slide 1

Slide 1 text

Chucker Ͱ GraphQL ͷ௨৴ϩάΛݟ΍ͨ͘͢͠

Slide 2

Slide 2 text

͜͏͍͏ऀͰ͢ • Ryo Nitami (a.k.a tummy) • Mobile App Engineer @ CyberAgent, Inc. • SHISHAMO ͱ͍͏όϯυΛṆѪͯ͠·͢ • ϥΠϒʹΑ͘ߦ͖·͢ɻࠓ೥ͷࢀઓ਺͕ 60 ऑʹ ͳΔ༧ఆɻ

Slide 3

Slide 3 text

tl;dr • issue: https://github.com/ChuckerTeam/chucker/issues/69 • pull request: https://github.com/ChuckerTeam/chucker/pull/70

Slide 4

Slide 4 text

Chucker ͱ͸ʁ • OkHttp ͷ௨৴ϩάΛऔͬͯҰཡͰදࣔͯ͘͠ΕΔπʔϧ • jgilfelt/chuck ͕͢Ͱʹ͋Δ͕ɺ2 ೥Ҏ্ߋ৽͞Ε͍ͯͳ͍ͷͰ fork ͞ΕɺผϦ ϙδτϦͰߋ৽͞Ε࢝Ίͨ

Slide 5

Slide 5 text

Chucker ͷ͍͍ͱ͜Ζ • OkHttp 4 ରԠࡁΈ • Ϩεϙϯεͷதʹը૾͕͋Δ৔߹ɺͪΌΜͱදࣔͯ͘͠ΕΔ ʢόΠφϦܗࣜʹͳ Βͳ͍ʣ • ςΩεταʔνͨ͠ͱ͖ʹҾ͔͔ͬͬͨจࣈྻ͕ ϋΠϥΠτ͞ΕΔ Α͏ʹͳͬͨ

Slide 6

Slide 6 text

Chucker ͷ͍·͍ͪͩͬ ͨͱ͜Ζ • GraphQL ͷ௨৴ϩά͕͢΂ͯ 200 POST / ʹͳΔ •ͳͥ͜͏ͳΔͷ͔ʁ

Slide 7

Slide 7 text

GraphQL ͸ ୯ҰΤϯυϙΠϯτ͕ਪ঑ ͞Ε͍ͯΔ1 1 https://graphql.org/learn/serving-over-http/#uris-routes

Slide 8

Slide 8 text

ϓϧϦΫΛ౤͛Δ͜ͱʹͨ͠

Slide 9

Slide 9 text

·ͣ issue Ͱ૬ஊ • ࣮૷ํ๏ͷೝࣝΛ͢Γ߹ΘͤΔͨΊɺissue Ͱ૬ஊ • ݁Ռɺ ΤϯυϙΠϯτͷදه͸࢒ͭͭ͠ɺoperationName ͱ GraphQL ͷΞΠί ϯΛදࣔ͢Δܗࣜ Ͱܾఆ • operationName : Ϩεϙϯεϔομʔʹ͋ΓɺͦΕΛ࢖͏͜ͱͰͲͷϦιʔε Λࢀর͔ͨ͠൑அͰ͖Δ2 2 https://graphql.org/learn/queries/#operation-name

Slide 10

Slide 10 text

࣮૷ • طଘͷαϯϓϧΞϓϦͰ Retrofit ͕࢖ΘΕ͍ͯͨͷͰ retrofit-graphql Ͱ࣮૷ • ϨϏϡʔΛ͓ئ͍ͨ͠Β Change Request ͕ val request = QueryContainerBuilder().putVariable("first", 10) with(SampleApiService.getGraphQLInstance(getClient(this))) { getAllFilms(request.apply { setOperationName("AllFilms") }).enqueue(cb) getAllPeople(request.apply { setOperationName("AllPeople") }).enqueue(cb) getAllPlanets(request.apply { setOperationName("AllPlanets") }).enqueue(cb) getAllSpacies(request.apply { setOperationName("AllSpacies") }).enqueue(cb) getAllStarships(request.apply { setOperationName("AllStarships") }).enqueue(cb) getAllVehicles(request.apply { setOperationName("AllVehicles") }).enqueue(cb) }

Slide 11

Slide 11 text

࣮૷Ͱࢦఠ͞Εͨͱ͜Ζ • ͳΔ΂͘αʔυύʔςΟͷϥΠϒϥϦೖΕͳ͍ • ϥΠϒϥϦ͸ ݴޠ࢓༷ʹґଘ͢Δ΂͖ • retrofit-graphql ࡟আ • ఆٛͨ͠ .graphql ϑΝΠϧΛ΋ͱʹ࢖͏ΫΤϦΛࢦఆ͍͕ͯͨ͠ɺϦΫΤετΛ ૹΔ͚ͩͩͬͨΒඞཁͳ͍ʢϥΠϒϥϦͰ࢖༻͍ͯͨ͠ʣ • json Λ࡞ͬͯ POST ͯ͠΋ಉ݁͡ՌʹͳΔ • .graphql ϑΝΠϧΛ͢΂ͯ࡟আͯ͠ɺPOST ༻ͷ JSON Λผʹఆٛͯ͠࢖༻

Slide 12

Slide 12 text

͜͏ͳΓ·ͨ͠ ·ͩमਖ਼தͰ͕͢ɺ3.1.0 Ͱ͜͏ͳΔ༧ఆͰ͢ɻ

Slide 13

Slide 13 text

·ͱΊ • Chucker ʹ GraphQL ͷ௨৴ϩάΛݟ΍͘͢͢Δ PR Λૹͬͨ3 • ଞݴޠͰศརͦ͏ͳπʔϧ͕͋Ε͹ɺϞόΠϧଆʹͲΜͲΜҠ২͍͖͍ͯͨ͠ • Facebook ੡͔ͩΒ͔ɺJavaScript ͋ͨΓͷίϛϡχςΟ͕׆ൃ • ྫɿQuipper ͞Μͷσόοάπʔϧ4 4 https://quipper.hatenablog.com/entry/2019/08/13/making-tool-to-debug-graphql-client 3 https://github.com/ChuckerTeam/chucker/pull/70