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

やはり俺のWeb APIは間違えている

やはり俺のWeb APIは間違えている

社内勉強会
クラウド・マイクロサービス勉強会#4の発表資料です。

87e94dd0e8a5f52de58a0e4a0b1a1f3f?s=128

Shinichi Kozake

September 13, 2019
Tweet

Transcript

  1. Awesome Web API Design ੒ޭ͢Δ8FC"1*σβΠϯͱ͸ Ϋϥ΢υɾϚΠΫϩαʔϏεษڧձ

  2. ͱ͍͏࿩͸͠·ͤΜ

  3. 8FC"1*ઃܭͷ ྑॻΛಡΈ·͠ΐ͏ʂ ͋ͱͰ঺հ͠·͢

  4. ຊ೔ͷλΠτϧ

  5. ΍͸ΓԶͷ Web API͸ ·͕͍ͪͬͯΔɻ ͱ͋Δ3&45ͷߟ࡯ه࿥ Ϋϥ΢υɾϚΠΫϩαʔϏεษڧձ

  6. ࣗݾ঺հ 名前 ジョブ スキル こざけ しんいち システムアーキテクト Java 資格 アプリケーションエンジニア

    テクニカルエンジニア(DB) 安全確保支援士
  7. "CPVU3&45

  8. 8IZ3&45 "+"9Λۦ࢖ͨ͠8FC։ൃ εϚʔτϑΥϯͷීٴ खܰʹࢼͤΔ༧ଌ͠΍͍͢

  9. σʔλ࿈ܞ ෼ࢄΦϒδΣΫτ 8FCαʔϏε 8FC"1* +BWB3.*ɾ&+# $03#" 9.-31$ 40"1 3&45 3&45͸͓खܰʂ

  10. 8IBU3&45 3&QSFTFOUBUJPOBM4UBUF5SBOTGFS Ϧιʔεࢦ޲ΞʔΩςΫνϟͷ࣮૷ Ϧιʔεͷঢ়ଶΛදݱͨ͠΋ͷΛసૹ͢Δ͜ͱɻ 3&45ΞʔΩςΫνϟͱ͍͏΋ͷ͸ଘࡏ͠ͳ͍ɻ 3&45͸Ұ࿈ͷઃܭ৚݅ɻ

  11. 8IBU30" ͭͷ֓೦ ͭͷಛੑ Ϧιʔε ໊લ 63* දݱ ϦιʔεؒͷϦϯΫ ΞυϨεՄೳੑ εςʔτϨεੑ

    ઀ଓੑ ౷ҰΠϯλʔϑΣʔε
  12. 8IBU30" (&5VTFSTLP[BLF \ pSTU/BNF৴Ұ  MBTU/BNFখञ  BHF  CPEZ8FJHIU

    ^ )551ϝιου ʹΑΔ౷Ұ*' Ϧιʔεͷ63- Ϧιʔεͷදݱ ɾ+40/ܗࣜ ɾ೔ຊޠ
  13. ͦͷઃܭख๏30"Ͱ͔͢ʁ IUUQTqJDLSQNT;"

  14. Α͋͘Δઃܭख๏ Ϣʔεέʔεਤ

  15. Α͋͘Δઃܭख๏ ΞΫςΟϏςΟਤ

  16. Α͋͘Δઃܭख๏ ը໘ۦಈઃܭ

  17. ͦͷઃܭख๏30"Ͱ͔͢ʁ γεςϜͱར༻ऀͷڥքΛ෼ੳ͠ɺ ιϑτ΢ΣΞͷػೳ୯ҐΛநग़͢Δઃܭख๏ αʔϏεࢦ޲

  18. Ϧιʔεࢦ޲ͱαʔϏεࢦ޲ Ϧιʔεࢦ޲ αʔϏεࢦ޲ ɾϦιʔεΛத৺ʹߟ͑Δ ɾ࣮ߦ͞ΕΔϝιουʢػೳʣ ɹΑΓ΋ϦιʔεʢσʔλϞσϧʣ ɹΛॏࢹ͢Δ ɾϦιʔε͸໊ࢺͰఆٛͰ͖Δ ɹʢྫ͑͹ɺlϏσΦͷϨϯλϧzʣ ɾػೳΛத৺ʹߟ͑Δ

    ɾར༻ऀଆ͔Βݟͨιϑτ΢ΣΞͷ ɹαʔϏεʢػೳʣͷ૊Έ߹Θͤ ɹͰγεςϜߏஙΛ͢Δ ɾαʔϏε͸ಈࢺͰఆٛͰ͖Δ ɹʢྫ͑͹ɺlϏσΦΛϨϯλϧ͢Δzʣ ɾ໊ࢺɺΦϒδΣΫτ໊ɺର৅୯Ґ ɹͰ"1*Λ੔ཧ͢Δ ɾಈࢺɺίϚϯυ໊ɺϝιου໊୯Ґ ɹͰ"1*Λ੔ཧ͢Δ
  19. Ϧιʔεࢦ޲ͱαʔϏεࢦ޲ Ϧιʔεࢦ޲ αʔϏεࢦ޲ $MJFOU 3FTPVSDF $MJFOU 4FSWJDF (&5 1045 165

    %&-&5& */70,& */70,& */70,& */70,& 4FSWJDF 4FSWJDF 4FSWJDF αʔϏε͕8FCʹ͓͚Δ31$ͳΒɺ 3&45͸8FCʹ͓͚Δ%#.4
  20. ͦͷΞϓϦέʔγϣϯ 3&45ʹै͏ඞཁ͋Γ·͔͢ʁ IUUQTqJDLSQNT;"

  21. -46%TʢMBSHFTFUPGVOLOPXOEFWFMPQFSTʣͱ 44,%TʢTNBMMTFUPGLOPXOEFWFMPQFSTʣͱ͍͏֓೦ ͱ͋Δ3&45ͷߟ࡯ ୭͕࢖͏͔Θ͔Βͳ͍-46%T޲͚ͷ"1*͸ɺ͞·͟·ͳϢʔεέʔεΛ૝ఆͯ͠ͳΔ΂͘ ൚༻తʹ͠ͳ͚Ε͹ͳΒͳ͍ 44,%T޲͚ͷ"1*͸ಛఆͷ։ൃऀ΍ͦͷઌʹଘࡏ͢ΔΤϯυϢʔβʹͱͬͯศརͰ࢖͍΍ ͍͢΋ͷʹͳΔ͸ͣ ʮඒ͠͞ʯͷఆٛ͸େ͖͘ҧ͏͸ͣ ʙॻ੶ʮ8FC"1*5IF(PPE1BSUTʯQΑΓҾ༻ʙ

  22. Αʔ͘ߟ͑Αʙࢦ޲͸େࣄͩΑʙ σʔλ࿈ܞํࣜ͸ΞϓϦέʔγϣϯͷछྨʹґଘ͢Δɻ ɾͻͱͭͷΞʔΩςΫνϟʔʹݻࣥ͢Δඞཁੑ͸͋Δ͔ʁ ɾΞϓϦέʔγϣϯಛੑΛجʹΞʔΩςΫνϟͷબ୒Λߦͳ͏΂͖Ͱ͸ʁ ۀ຿ܥΞϓϦέʔγϣϯʹ͓͍ͯ͸ɺ ϦιʔεΑΓ΋αʔϏεʹয఺͕͋ͨΓ΍͍͢ɻ ͱ͋Δ3&45ͷߟ࡯ ͦ΋ͦ΋Ϧιʔεࢦ޲ʹԠͨ͡ઃܭख๏͕࠾ΒΕ͍ͯΔ͔ʁ

  23. ͱ͋Δ3&45ͷߟ࡯ ڞ௨ͷαʔό"1* ΞϓϦέʔγϣ" ޲͚ʹΠϯλʔ ϑΣΠεΛม׵ ΞϓϦέʔγϣ# ޲͚ʹΠϯλʔ ϑΣΠεΛม׵ ΞϓϦέʔγϣ$ ޲͚ʹΠϯλʔ

    ϑΣΠεΛม׵ ΞϓϦέʔγϣ% ޲͚ʹΠϯλʔ ϑΣΠεΛม׵ ΞϓϦέʔγϣ" ΞϓϦέʔγϣ# ΞϓϦέʔγϣ$ ΞϓϦέʔγϣ% αʔό ΫϥΠΞϯτ Φʔέετ Ϩʔγϣϯ૚ ʙॻ੶ʮ8FC"1*5IF(PPE1BSUTʯQΑΓҾ༻ʙ ʰ/FUqJYࣾͰ͸04'"ʢPOFTJ[FpUTBMMʣͷΞϓϩʔνΛ΍Ίɺαʔόʔଆͷ൚༻తͳ "1*ͱΫϥΠΞϯτͷؒʹz$MJFOU"EBQUFS$PEFzΛ࣮ߦ͢Δ૚ΛڬΈɺ͞·͟·ͳͰσό ΠεʹରԠͰ͖ΔΑ͏ʹ͍ͯ͠·͢ɻʱ
  24. ͱ͋Δ3&45ͷߟ࡯ ϏσΦϨϯλϧγεςϜͰߟ͑ͯΈΔ

  25. ·ͱΊ

  26. 3&45ʹै͏͔ͷબ୒͸ɺ ։ൃ͢ΔΞϓϦέʔγϣϯʹͱͬͯ Կ͕࠷ॏཁͰ͋Δ͔ʹΏͩͶΒΕΔɻ ·ͱΊ ৔߹ʹΑͬͯ͸ɺ୯ͳΔٕज़ํࣜͱͯ͠3&45Λ࠾༻͢Δ͚ͩͰ΋͍͍͔΋͠Εͳ͍ɻ ͜Ε͸࠶ར༻ͷߟ͑ํʹ΋ࣅ͍ͯΔؾ͕͢Δɻ ຊ౰ʹͦΕ͸ίετΛ෷ͬͯ࠶ར༻͢Δͷ͔ʁΛߟ͑Δඞཁ͕͋Δɻ

  27. 4JNQMFJTOPU&BTZ ·ͱΊ &BTZ͸ɺ݁ՌΛੜ੒͢ΔͨΊͷ࠷খݶͷ࿑ྗɻ γϯϓϧ͸ɺॏཁͳ΋ͷҎ֎ͷ͢΂ͯΛ࡟আ͢Δ͜ͱɻ

  28. ॻ੶঺հ

  29. αΠτ঺հ $MPVE"1* "1*ઃܭΨΠυ IUUQTDMPVEHPPHMFDPNBQJTEFTJHO IMKB ೥Ҏདྷ(PPHMF಺෦Ͱ࢖༻͞Εɺ$MPVE"1*΍ͦͷଞͷ (PPHMF"1*Λઃܭ͢Δͱ͖ʹ(PPHMF͕ै͏ΨΠυ

  30. αΠτ঺հ 8FC"1*%FTJHO $SBGUJOH*OUFSGBDFTUIBU%FWFMPQFST-PWF IUUQTQBHFTBQJHFFDPNSTBQJHFFJNBHFT BQJEFTJHOFCPPLQEG

  31. ࢀߟʹͨ͠αΠτ ѹ౗తײँ 8FC"1*ͱ͸Կͳͷ͔ Ϧιʔεࢦ޲ΞʔΩςΫνϟ 30" ͱ͸Կͳͷ͔ Ϧιʔεࢦ޲8FCαʔϏεͱΞΫςΟϏςΟʔࢦ޲8FCαʔϏεΛൺֱ͢Δ 40"ͷະདྷ͸3&45͔ 40"1ͱ3&45ͷҧ͍ʹ͍ͭͯΘ͔Γ΍͘͢ڭ͍͚͑ͯͨͩ·ͤΜͰ͠ΐ͏͔ʁ https://qiita.com/NagaokaKenichi/items/df4c8455ab527aeacf02

    https://qiita.com/NagaokaKenichi/items/0f3a55e422d5cc9f1b9c https://www.ibm.com/developerworks/jp/webservices/library/ws-restvsoap/index.html https://teratail.com/questions/34703 https://www.infoq.com/jp/articles/RESTSOAFuture/
  32. ͝੩ௌ ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ ͓ΘΓ