Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Web API Design

petitviolet
January 11, 2018
8.3k

Web API Design

REST, Activity-oriented, JSON-RPC, gRPC, GraphQL

petitviolet

January 11, 2018
Tweet

More Decks by petitviolet

Transcript

  1. ͦΕͧΕͷઃܭ࢓༷ࢦ਑ࢥ૝ʹ͍ͭͯ w ֓ཁ w งғؾ w Կ͕ΠέͯΔͷ͔ w Կ͕Πέͯͳ͍ͷ͔ w

    ࢖͍Ͳ͜Ζ Λ·ͱΊͯ঺հ͍͖ͯ͠·͢ɻ จࣈଟΊͰ͢" ࿩͢͜ͱ 8
  2. 3&45 w ΈΜͳେ޷͖3&45 w ʮ͜Ε·Ͱʯͷ8FC"1*୅ද w ΞϓϦέʔγϣϯ͕อ༗͢ΔϦιʔεΛ63*Ͱද ݱ͠ɺΫϥΠΞϯτ͸ͦΕʹ໰͍߹ΘͤΔ w ૢ࡞͸.FUIPE

    (&51045165%&-&5&ʜ  w ʮ8FCΒ͍͠ʯઃܭͰɺ63*΍ϔομɺεςʔλ είʔυͳͲͷ)551ͷػೳΛ༻͍ͯϦΫΤετ ϨεϙϯεΛߏங͢Δ 10
  3. 3&45ͷงғؾ w (&5VTFST w *%ͷVTFSΛऔಘ͢Δ w 165VTFSTUPEPT w *%ͷVTFSͷ*%ͷUPEPΛߋ৽͢Δ w

    %&-&5&VTFST w *%ͷVTFSΛ࡟আ͢Δ w "DDFQUBQQMJDBUJPOWOEHJUIVCW KTPO w (JUIVCͷ"1*όʔδϣϯࢦఆ 11
  4. 3&45͸Կ͕Πέͯͳ͍ͷ͔ w 3&45͸͋͘·Ͱઃܭࢥ૝ࢦ਑Ͱ͋Γ࢓༷Ͱ͸ͳ͍ w ਓʹΑͬͯղऍ͕ҟͳͬͯ63*Λܾఆ͢Δͷ͕೉͍͠৔໘΋ଟʑ w ϓϩμΫτ։ൃͩͱɺ"1*ίʔϧճͰछྨͷϦιʔεʹ͔͠ ΞΫηεग़དྷͳ͍ͱޮ཰͕ѱ͍γʔϯ͕ଟ͍ w ΞϓϦέʔγϣϯͷ%PNBJO͡Όͳ͍"1*ઐ༻ϞσϧΛ࡞ͬͯϦιʔ

    εͱͯ͠ѻ͏Α͏ʹ͠ͳ͍ͱ͍͚ͳ͍ w ϓϩϑΟʔϧϖʔδʹදࣔ͢Δ৘ใΛҰׅͰANZQBHFAͱ͔ w ͋Δ͍͸ෳ਺ϦΫΤετʹ·͕ͨΔτϥϯβΫγϣϯ؅ཧ͢Δͱ͔ w ࡢࠓͩͱ#BDLFOEGPS'SPOUFOE #'' Λཱͯͯճආ͢ΔΞʔΩ ςΫνϟ΋͋Δ͕ɺͦ͜·Ͱ΍Δඞཁͷ͋Δ3&45ͬͯخ͍͠Μ ͚ͩͬʁঢ়ଶʹ w #''͸.JDSPTFSWJDFTతͳจ຺ͳͷͰͪΐͬͱζϨͨҙݟ 13
  5. ૢ࡞ࢦ޲͸Կ͕Πέͯͳ͍ͷ͔ w ౷Ұ͞Εͨ࢓༷ɾࢥ૝ɾࢦ਑͕ͳ͍ w νʔϜͰ࿩͠߹ͬͯਐΊΔඞཁ͕͋Δ w 8FCͱͯ͠ελϯμʔυͳੈքͰ͸ͳ͍ w 3&45͔Β୤٫ͨ݁͠Ռ w

    8FCͷػೳ )551ϝιου΍εςʔλείʔυ ΛͲ ͜·Ͱ׆༻͢Δ͔΋೰ΉϙΠϯτ w 3&45͔Β཭ΕΒΕ͍ͯͳ͍ײ΋͋Γɺ΍΍த్൒ ୺͔΋͠Εͳ͍ 19
  6. +40/31$ͷงғؾ ϦΫΤετྫ w 1045KTPOSQD w \KTPOSQD NFUIPEHFU6TFS QBSBNT<> JEIPHF^ ͦΕʹର͢ΔϨεϙϯε͕ҎԼ

    w \KTPOSQD SFTVMU\VTFS\JE OBNF"MJDF^ JEIPHF^ AJEA͸ϦΫΤετʹରԠ͢ΔϨεϙϯεΛࣝผ͢ΔͨΊͷ จࣈྻ·ͨ͸਺஋ͰɺαʔόΫϥΠΞϯτؒͰѲΕ͍ͯΕ ͹ͳΜͰ΋ྑ͍ɻ 23
  7. +40/31$͸Կ͕ΠέͯΔͷ͔ w +40/31$ͱ͍͏࢓༷͕͋Δ w ࢓༷ʹԊͬͯઃܭɾ࣮૷͢Ε͹Α͍ w ࢓༷΋γϯϓϧͳͷͰֶशίετ͸௿͍ w ཱͪҐஔͱͯ͠͸ૢ࡞ࢦ޲"1*ͱ͓͓Αͦಉ͔͡ w

    31$ͳͷͰΑΓ3&45͔Β཭ΕΔ w ର৅ͷϦιʔε΍ߦ͍͍ͨૢ࡞͸ANFUIPEAͱͯ͠ දݱ͢ΔͨΊɺ63-͸͚ͭͩͱͳΓ೰ΈϙΠϯ τ͕ͳ͘ͳΔ 24
  8. H31$͸Կ͕Πέͯͳ͍ͷ͔ w ࢖͑ͳ͍؀ڥ͕͋Δ w ϒϥ΢βɺ("& w HSQDXFCͱ͍͏΋ͷ΋࡞ΒΕ͍ͯΔ w QSPUPCVGͳͨΊɺ+40/ʹ׳Εͨਓؒʹ༏͘͠ͳ͍ w

    αϯϓϧͰϦΫΤετૹΔͷ΋໘౗ͰDVSMͱ͔࢖͑ͳ͍ w +40/ͱH31$ΛϚοϐϯά͢ΔͨΊͷHSQDHBUFXBZͱ ͍͏ͷ΋։ൃ͞Ε͍ͯΔ͕ɺ༨ܭʹखؒ͸͔͔Δ w ࣮ಋೖ͢ΔͳΒ৭ʑߟ͑ͳ͍ͱ͍͚ͳ͍ w ϩάग़ྗͱ͔σόοάͱ͔ೝূΈ͍ͨͳڞ௨ॲཧͳͲ w ඞཁͳ΋ͷ͕·ͩଗ͍͖ͬͯ͸ͳ͍͔΋ 32
  9. (SBQI2-ͷԿ͕ΠέͯΔͷ͔ w ΫϥΠΞϯτओಋͰඞཁ࠷௿ݶͷϦΫΤετͰ͢·ͤΔ͜ͱ͕Մ ೳ w ैདྷͷઃܭͰ͸ແବͳσʔλΛฦ٫ͯ͠͠·Θͳ͍Α͏ʹ"1*Λ޻෉͢ Δඞཁ͕͕͋ͬͨɺ(SBQI2-Ͱ͸ͦͷ޻෉͸ෆཁʹͳΔ w αʔόαΠυ͸ϦιʔεΛҰ௨Γฦ٫Ͱ͖ΔΑ͏ʹ࣮૷͓͚ͯ͠͹ɺ͋ ͱ͸ΫϥΠΞϯτଆͰ޷͖উखग़དྷΔ

    w $234తʹ͓͚Δ2VFSZΛ·͞ʹΫΤϦݴޠͰ͋Δ(SBQI2-ͰΫ ϥΠΞϯτଆʹ੹຿ΛدͤΔ͜ͱ͕Ͱ͖Δͷ΋ඇৗʹڧྗɻ w ϑϨʔϜϫʔΫʹ΋ΑΔ͕ɺ/ ໰୊͕ى͖ͳ͍Α͏ʹ͢ΔͨΊͷ ػߏ͕૊Έࠐ·Ε͍ͯͨΓͯ͠ɺεΫϥονͰ࣮૷͢ΔΑΓ΋҆શ w ෇ଐͷ (SBQIJ2Mͱ͍͏΋ͷ͕ඇৗʹศརͰɺิ׬ͱ͔΋͔ͬ͠ Γ΍ͬͯ͘ΕΔͷͰςετ΋؆୯ʹߦ͑Δ 38
  10. 8FC"1*ͷઃܭࢥ૝ࢦ਑ͷ·ͱΊ w 3&45 w Ұൠతʹ஌ΒΕ͍ͯΔͷͰબఆ͠΍͍͢ w Ұൠతʹ஌ΒΕ͍ͯΔ͚Ͳ೉͍͠ w ૢ࡞ࢦ޲ w

    ֶशίετͰ3&45ͷ͠ΜͲ͔͞Β୤٫Ͱ͖Δ w ؆୯ʹ3&45Λ΍ΊΔઌͱͯ͠͸ୈҰީิ w ಛʹ֎෦޲͚ͱͯ͠͸͔ͬ͜ΘΔ͍ͷ͕ͪΐͬͱ೉఺ w +40/31$ w ֶशίετ͸Θ͔ͣͰ࢓༷ͷ͋Δ31$ܗࣜͳͷͰ͔ͬ͜Α͞͸Ϛγ w ྫ͑͹Τϥʔίʔυͱ͔࢓༷ʹ৐Δ͔Ͳ͏͢Δ͔͸೰ΈͲ͜Ζ w 1"5)ͷ֓೦͕ͳ͘ͳΔͷͰϞχλϦϯάͰࠔΔՄೳੑΞϦ w H31$ w *%-Ͱͷ"1*࢓༷ఆ͔ٛΒͷίʔυੜ੒͕ϝϦοτ w QSPUPCVGͳͷͰύϑΥʔϚϯε͸+40/ΑΓྑ͍ w ࢖͑ͳ͍؀ڥ͕͋ͬͨΓӡ༻໘Ͱ४උ͕ඞཁ w (SBQI2- w ΫϥΠΞϯτଆʹ2VFSZͷ੹຿ΛدͤΒΕΔͷ͕ڧྗ w ֶशίετͷߴ͕͞ݒ೦ 44
  11. બͼํ w ໎ͬͨΒ3&45 w ೰Ήͷ΋෼͔͍ͬͯΔ͕ɺͦΕҎ֎͸៉ྷָͩ͠ w 3&45Ͱ೰Έͨ͘ͳ͍͚Ͳɺۤ࿑ͨ͘͠ͳ͍ w ૢ࡞ࢦ޲PS+40/31$ w

    ϒϥ΢β޲͚ͷΞϓϦ͡Όͳ͍ͳΒH31$ w εϚϗΞϓϦ΋Χόʔग़དྷΔ w "1*࢓༷ॻ͕΄΅ෆཁʹͳΔ w 3FBEܥ͕ෳࡶʹͳΔՄೳੑ͕͋ΔͳΒ(SBQI2- w ΫϥΠΞϯτओಋͰ։ൃͰ͖Δ 45