Web APIの現場あるある解決特集〜こうして僕たちのAPIは使いやすくなった〜

Affee225683fef978457e27fbe3ecb67?s=47 endam
November 30, 2016

Web APIの現場あるある解決特集〜こうして僕たちのAPIは使いやすくなった〜

Web APIはサービスに不可欠であり、柔軟で使いやすいWeb APIはシステム全体の品質を高めます。
しかし実際に業務でのWeb API開発は必ず「こういう場合どうしたらいいいんだ?」というケースが発生します。
そういったWeb APIにまつわる現場あるあるを解決します。

Affee225683fef978457e27fbe3ecb67?s=128

endam

November 30, 2016
Tweet

Transcript

  1. 8FC"1*ͷݱ৔͋Δ͋Δղܾಛू ʙ͜͏ͯ͠๻ͨͪͷ"1*͸࢖͍΍͘͢ͳͬͨʙ \BQJ^  *4"0.FFUVQ .BTBZVLJ:PTIJEB

  2. \٢ాক೭!FOEBN^ Ἒ৓ݝग़਎ࡀ ϑϩϯτΤϯυαʔόʔαΠυΤϯδχΞ ݉6*69σβΠφʔݟश͍  લ৬Ͱ͸೥ͷۀ຿ҕୗ։ൃΛܦͯࠓ೥݄ *4"0ʹೖࣾ ೰ΈʮͦΖͦΖҖݫ͕ཉ͍͠ʯ

  3. ݱࡏʮ(PBMPVTʯͱ͍͏ ࣾ಺4/4Λ։ൃ͍ͯ͠·͢

  4. ಥવͰ͕͢ɺ 8FC"1*Ͱ೰Μͩ͜ͱ͕ ͋Δํ͸ͲΕ͙Β͍͍·͔͢ʁ

  5. Ϩεϙϯε͕৑௕ ʹͳ͍ͬͯΔ ͺͬͱݟ͚ͨͩͰԿͷ"1*͔ ෼͔Βͳ͍ ൴ঁ͕ཉ͍͠ "1*ͷ࢓༷͕౷Ұ͞Εͯͳ͍ ΤϥʔΛͲ͏ฦͤ͹ɾɾ

  6. ͦ͏͍ͬͨ8FC"1*ʹ·ͭΘΔ ݱ৔͋Δ͋Δͱ ͦΕΒͷվળ఺Λ͝঺հ͠·͢

  7. έʔεɿϨεϙϯεʹͲ͜·ͰؚΉʁ έʔεɿ3&45ʹͩ͜Θͬͨํ͕ྑ͍ͷʁ έʔεɿը໘ͷදࣔʹඞཁͳσʔλ͸Ͳ͏͢Δʁ έʔεɿΤϥʔ͸Ͳ͏΍ͬͯฦ͢ʁ έʔεɿϖʔδϯά༻ͷ"1*Λ࢖͍΍͍ͨ͘͢͠

  8. έʔεɿϨεϙϯεʹͲ͜·ͰؚΉʁ έʔεɿ3&45ʹͩ͜Θͬͨํ͕ྑ͍ͷʁ έʔεɿը໘ͷදࣔʹඞཁͳσʔλ͸Ͳ͏͢Δʁ έʔεɿΤϥʔ͸Ͳ͏΍ͬͯฦ͢ʁ έʔεɿϖʔδϯά༻ͷ"1*Λ࢖͍΍͍ͨ͘͢͠

  9. ϨεϙϯεʹͲ͜·ͰؚΉʁ έʔε

  10. ͸͍ʂԿͰ͠ΐ͏ʁ ͑ͬɾɾͦΕϑϩϯτଆͰ΍ͬͨํ͕ྑ͍Μ͡Όɾɾ׼ ΓΐɺྃղͰ͢ɺɺ͡Ό͋मਖ਼͓͖ͯ͠·͢Ͷɻɻ ͜ͷ"1*ʹ͍ͭͯͪΐͬͱ͓ئ͍͕͋ΔΜ͚ͩͲɻ ࠓϨεϙϯεͰ߲໨"Λฦͯ͠Δ͡Όͳ͍ʁ Ͱ΋࣮ࡍͷදࣔ͸ϑΥʔϚοτ͠ͳ͖Ό͍͔Μ͔Β ϑΥʔϚοτࡁΈͷ΋ϨεϙϯεʹؚΜͰཉ͍͠ΜͩΑͶɻ ͍΍ɺ"1*Ͱ΍ͬͨํ͕ྑ͍Ͱ͠ΐɻͦ͏͠ͱ͖ͨ·͑ ڧѹ

  11. ࣮ࡍʹ͜Μͳमਖ਼͕͋ͬͨ݅

  12. DSFBUFEɿ ݩσʔλ ˣϑΥʔϚοτͨ͠σʔλΛϨεϙϯεʹ௥Ճʂ DSFBUFE@GPSNBU@ɿʢਫ  ˣͱͲΊʹɾɾ DSFBUFE@GPSNBU@ɿOPX ʮ΋͏΍Ίͨ͛ͯʂ"1*ͷ)1͸Αʂʯ ˣ͞ΒʹϨεϙϯεʹ௥Ճʂ DSFBUFE@GPSNBU@ɿͨͬͨࠓ

    ˣ΋͏͍ͬͪΐϨεϙϯεʹ௥Ճʂ DSFBUFE@GPSNBU@ɿ
  13. /P.PSF ҆қͳϨεϙϯεՃ޻ʂ

  14. w "1*͸ϦΫΤετʹԠͨ͡ඞཁͳϨεϙϯε ͷΈฦ͢͜ͱʹͱͲΊΔ w "1*͔Βड͚औͬͨσʔλΛͲͷΑ͏ʹՃ޻ ͨ͠Γ࢖͏͔͸ར༻ଆ͕ܾΊΔ Ϩεϙϯεͷݪଇ

  15. ϨεϙϯεʹؚΜͰྑ͍έʔε w ϨεϙϯεͷσʔλΛجʹ·ͨ%#Λࢀর͠ͳ͚Ε ͹͍͚ͳ͍ w ෳࡶͳϩδοΫΛ༻͍ͯऔಘɾ൑ఆ͢Δσʔλ

  16. έʔεɿϨεϙϯεʹͲ͜·ͰؚΉʁ έʔεɿ3&45ʹͩ͜Θͬͨํ͕ྑ͍ͷʁ έʔεɿը໘ͷදࣔʹඞཁͳσʔλ͸Ͳ͏͢Δʁ έʔεɿΤϥʔ͸Ͳ͏΍ͬͯฦ͢ʁ έʔεɿϖʔδϯά༻ͷ"1*Λ࢖͍΍͍ͨ͘͢͠

  17. 3&45ʹͩ͜Θͬͨํ͕ ྑ͍ͷʁ έʔε

  18. 63-ɿ<1045>BQJWDPNNFOUT 3FRVFTU1BSBNFUFSɿ \ DPNNFOU@JE  TUBUVTSFQMZ  MBTU@VQEBUFE DPNNFOUzฦ৴͢ΔΑz ^

    3&45GVMͳ"1*ͷ৔߹ ྫίϝϯτฦ৴༻"1* 63-Λݟ͚ͨͩͰ͸Կͷ"1*͔෼͔Βͳ͍ "1*ଆͰ൑ผͰ͖Δ ΞΫγϣϯґଘͷύϥϝʔλ͕͋Δ
  19. վળྫ 63-ͰͲͷΑ͏ͳ"1*͔໌֬ʹ͢Δ ͦΕʹΑͬͯϦΫΤετύϥϝʔλ͕ΑΓγϯϓϧʹ 63-ɿ<1045>BQJWDPNNFOUTSFQMZ 3FRVFTU1BSBNFUFSɿ \ DPNNFOU@JE  TUBUVTSFQMZ 

    MBTU@VQEBUFE DPNNFOUzฦ৴͢ΔΑz ^
  20. <165>BQJWVTFSXJUIESBX վળྫ Θ͟Θ͟ϩάΠϯϢʔβʔ͔Ͳ͏͔Λ νΣοΫ͠ͳ͚Ε͹͍͚ͳ͍ ྫϩάΠϯϢʔβʔؔ࿈"1* <165>BQJWNFXJUIESBX Ϧιʔε*%Λল͍ͯϩάΠϯϢʔβʔؔ࿈"1*Λ໌֬ʹɻ ϩάΠϯϢʔβʔ͔ΛνΣοΫ͢Δඞཁ΋ͳ͘ͳΔ

  21. w γϯϓϧͰ൑Γ΍͍͢"1*Λ৺͕͚Δ w "1*ଆͰ൑ผͰ͖Δσʔλ͸ϦΫΤετύϥ ϝʔλʹؚΊͳ͍ w ΞΫγϣϯຖʹ"1*Λ෼͚Δ͜ͱʹΑͬͯɺ ແବͳόϦσʔγϣϯ΍෼ذ͕ແ͘ͳΔ 3&45ʹͩ͜ΘΓ͗͢ͳ͍

  22. έʔεɿϨεϙϯεʹͲ͜·ͰؚΉʁ έʔεɿ3&45ʹͩ͜Θͬͨํ͕ྑ͍ͷʁ έʔεɿը໘ͷදࣔʹඞཁͳσʔλ͸Ͳ͏͢Δʁ έʔεɿΤϥʔ͸Ͳ͏΍ͬͯฦ͢ʁ έʔεɿϖʔδϯά༻ͷ"1*Λ࢖͍΍͍ͨ͘͢͠

  23. ը໘ͷදࣔʹඞཁͳ σʔλ͸Ͳ͏͢Δʁ έʔε

  24. ը໘දࣔʹඞཁͳσʔλͷ ϒϩοΫ͕෼͔Ε͍ͯΔ هࣄλΠτϧ ʔʔʔʔʔʔʔʔʔʔʔ ʔʔʔʔʔʔʔʔʔʔʔ ʔʔʔʔʔʔʔʔʔʔʔ ʔʔʔʔʔʔʔʔʔʔʔ هࣄ಺༰ ʔʔʔʔʔʔʔʔʔʔʔ ͓͢͢Ίͷهࣄ

    هࣄ هࣄ هࣄ ΧςΰϦ ΧςΰϦ ΧςΰϦ ΧςΰϦ ΧςΰϦ ΧςΰϦ ΧςΰϦ ᶃ ᶄ ᶅ ϒϩοΫ͝ͱʹ"1*ΛΘ͚Δʁ
  25. εΫϦʔϯ"1*ίʔϧ ηʔϒɹɹ"1*ίʔϧ

  26. هࣄλΠτϧ ʔʔʔʔʔʔʔʔʔʔʔ ʔʔʔʔʔʔʔʔʔʔʔ ʔʔʔʔʔʔʔʔʔʔʔ ʔʔʔʔʔʔʔʔʔʔʔ هࣄ಺༰ ʔʔʔʔʔʔʔʔʔʔʔ ͓͢͢Ίͷهࣄ هࣄ هࣄ

    هࣄ ΧςΰϦ ΧςΰϦ ΧςΰϦ ΧςΰϦ ΧςΰϦ ΧςΰϦ ΧςΰϦ ᶃ σʔλͷऔಘ͸ͭͷ ʮը໘දࣔ༻ʯ"1*ʹू໿͢Δ w རศੑ͕ߴ͍ w "1*ϦΫΤετͷܰݮ
  27. Ԡ༻ฤ

  28. 1$Ͱෳ਺ΧϥϜɺ41ͰதԝΧϥϜΛ දࣔ͢ΔϨεϙϯγϒͷ৔߹͸ʁ ࠨΧϥϜ ɹɹӈΧϥϜ தԝΧϥϜ 41Ͱ͸͜ͷΧϥϜͷΈ

  29. ৗʹεΫϦʔϯ"1*ίʔϧ Ͱ͋Δඞཁ͸ແ͍ औಘ͢Δσʔλ͕ଞͱڞ௨͢Δ͔ʹΑͬͯ "1*Λ෼ׂ͢Δɺ΋͘͠͸ ը໘දࣔ༻ͷ"1*ʹ౷߹Λݕ౼

  30. έʔεɿϨεϙϯεʹͲ͜·ͰؚΉʁ έʔεɿ3&45ʹͩ͜Θͬͨํ͕ྑ͍ͷʁ έʔεɿը໘ͷදࣔʹඞཁͳσʔλ͸Ͳ͏͢Δʁ έʔεɿΤϥʔ͸Ͳ͏΍ͬͯฦ͢ʁ έʔεɿϖʔδϯά༻ͷ"1*Λ࢖͍΍͍ͨ͘͢͠

  31. Τϥʔ͸Ͳ͏΍ͬͯ ฦ͢ʁ έʔε

  32. ଞͷ༗໊ͳαʔϏεͷ"1*Λ ࢀߟʹͯ͠ΈΑ͏ ˣ͜ͷهࣄ͕ࢀߟʹͳΓ·͢

  33. \ NFTTBHFσʔλͷݕূʹࣦഊ͠·ͨ͠ɻ  WBMJEBUJPO@FSSPST\ OBNFೖྗඞਢ߲໨Ͱ͢ɻ  TUBSU@EBUFෆਖ਼ͳܗࣜͰ͢ɻ ^ ^ "1*Τϥʔαϯϓϧ

    \NFTTBHFݖݶ͕͋Γ·ͤΜɻ^ όϦσʔγϣϯΤϥʔ όϦσʔγϣϯΤϥʔҎ֎
  34. ࠷௿ݶҙࣝ͢ΔΤϥʔ࣌ͷ)551εςʔλείʔυ ɿෆਖ਼ͳϦΫΤετ ɿೝূʹࣦഊ ɿݖݶ͕ແ͍$43'Τϥʔ ɿϖʔδ͕ݟ͔ͭΒͳ͍ ɿαʔόʔΤϥʔ ɿϝϯςφϯε

  35. έʔεɿϨεϙϯεʹͲ͜·ͰؚΉʁ έʔεɿ3&45ʹͩ͜Θͬͨํ͕ྑ͍ͷʁ έʔεɿը໘ͷදࣔʹඞཁͳσʔλ͸Ͳ͏͢Δʁ έʔεɿΤϥʔ͸Ͳ͏΍ͬͯฦ͢ʁ έʔεɿϖʔδϯά༻ͷ"1*Λ࢖͍΍͍ͨ͘͢͠

  36. ϖʔδϯά༻ͷ"1*Λ ࢖͍΍͍ͨ͘͢͠ έʔε

  37. ϖʔδϯάͱ͸ େྔͷσʔλΛ෼ׂͯ͠Ұ෦෼Λऔಘ͢Δ "1*ʹ͓͍ͯ͸औಘ݅਺ͱऔಘҐஔΛࢦఆ

  38. ΠϯϑΟχοτεΫϩʔϧ౳ͰΑ͘࢖ΘΕΔ σʔλ σʔλ σʔλ ΋ͬͱݟΔ σʔλ σʔλ σʔλ ΋ͬͱݟΔ σʔλ

    σʔλ σʔλ
  39. ͋Γ͕ͪͳ"1* P⒎TFU औಘҐஔ ͱMJNJU औಘ݅਺ Λ ࢦఆͯ͠σʔλͷΈฦ͢ 63-ɿ<(&5>BQJWVTFSTTFBSDI LFZXPSEUFTU P⒎TFUMJNJU

    3FTQPOTFɿ \ EBUB< \JE OBNF5PNɾɾɾ^  \JE OBNF+FSSZɾɾɾ^ > ^
  40. ࣍ͷσʔλΛऔಘ͢Δࡍɺར༻ଆ͕ 63-Λ૊Έཱͯͳ͚Ε͹ͳΒͳ͍ɾɾ FOE@QPJOUɿBQJWVTFSTTFBSDI LFZXPSEɿUFTU P⒎TFUɿ લͷP⒎TFU  MJNJU BQJWVTFSTTFBSDI LFZXPSEUFTUP⒎TFUMJNJU

  41. ࠓ͔ΒσϞ΍Γ·͢

  42. 8FC"1*·ͱΊ w "1*ͷϧʔϧΛܾΊɺ४ڌ͢Δ w ར༻ଆʹґଘ͗͢͠ͳ͍ w γϯϓϧͰ෼͔Γ΍͍͢Λ௥ٻ

  43. \ NFTTBHF ͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ ^