HTTP クライアントを作ろうとして学ぶ、使いやすいインタフェース / #GoCon_Sendai 2020

HTTP クライアントを作ろうとして学ぶ、使いやすいインタフェース / #GoCon_Sendai 2020

9eed44f137609e6ce3b6f1e14f80b9e1?s=128

Masayuki Izumi

October 10, 2020
Tweet

Transcript

  1. ©2020 Wantedly, Inc. )551ΫϥΠΞϯτΛ࡞Ζ͏ͱֶͯ͠Ϳɺ ࢖͍΍͍͢ΠϯλϑΣʔεz Go Conference ’20 in Autumn

    SENDAI Oct 10, 2020 - @izumin5210
  2. ©2020 Wantedly, Inc. @izumin5210 Backend Chapter Lead, Profile Domain Wantedly,

    Inc. ‣ #BDLFOEͷ5FDI-FBEతͳ͜ͱΛ͍ͯ͠·͢ ‣ ੜ࢈ੑΛ্͛Δந৅ɾϑϨʔϜϫʔΫΛݟ͚ͭΔͷ͕޷͖Ͱ͢ ‣ ࠷ۙͷ͓͖ʹ͍Γύοέʔδ  ▶HPMBOHPSHYUPPMTHPQBDLBHFTQBDLBHFTUFTU  HPPHMFHPMBOHPSHQSPUPCVGSFqFDUQSPUPSFqFDU  HJUIVCDPNWFLUBIHRMQBSTFS  !UFTUJOHMJCSBSZSFBDUIPPLT
  3. ©2020 Wantedly, Inc. ‣ ʮ࢖͍΍͍͢ΠϯλϑΣʔεʯͱ͸ͳʹ͔ɺ࣮ྫ͔ΒֶͿʢߟ͑Δʣ ‣ ʮ࢖͍΍͍͢ΠϯλϑΣʔεʯΛ࣮ݱ͢ΔͨΊͷख๏ΛֶͿʢߟ͑Δʣ 8IBUJTJU

  4. ©2020 Wantedly, Inc. ͳͥਓ͸)551ΫϥΠΞϯτΛ࡞Γͨ͘ͳΔͷ͔

  5. ©2020 Wantedly, Inc. Ұൠతͳ)551ϦΫΤετ ؒҧ͍୳͠ίʔφʔͰ͢

  6. ©2020 Wantedly, Inc.

  7. ©2020 Wantedly, Inc. ݱ࣮ੈքͷΞϓϦέʔγϣϯͰ͸ɺ ΩϟϯηϧɾλΠϜΞ΢τΛͪΌΜͱѻ͏ͨΊʹ DPOUFYU$POUFYUΛ఻ൖ͢΂͖

  8. ©2020 Wantedly, Inc.

  9. ©2020 Wantedly, Inc. ݱ࣮ੈքͷΞϓϦέʔγϣϯͰ͸ɺ .FUSJDT ϩάͳͲ͍ΖΜͳ΋ͷΛऩूͨ͘͠ͳΔ

  10. ©2020 Wantedly, Inc.

  11. ©2020 Wantedly, Inc. ͜͏͍͏ͷ΋๨Ε͕ͪ

  12. ©2020 Wantedly, Inc. ‣ 0CTFSWBCJMJUZͷͨΊͷϑοΫ  .FUSJDT -PHT 5SBDFT ʜ

     ΞΫηεϩά ‣ ద੾ͳʓʓઓུͷӅṭ  Ωϟογϡ ϦτϥΠ λΠϜΞ΢τ ʜ lͪΌΜͱz)551ϦΫΤετ͢Δͷ͸೉͍͠ 1SPEVDUJPO3FBEJOFTTͷ؍఺ ‣ ڞ௨ϩδοΫͷ࣮૷  "VUI/ "VUI; ʜ ‣ ࢖͍΍͍͢"1*  ৑௕ͳهड़͕ݮΒͤΔ  ͍Ζ͍Ζ๨Εͳ͍  ʜ lศརϥΠϒϥϦzͱͯ͠ͷ؍఺
  13. ©2020 Wantedly, Inc. ‣ 0CTFSWBCJMJUZͷͨΊͷϑοΫ  .FUSJDT -PHT 5SBDFT ʜ

     ΞΫηεϩά ‣ ద੾ͳʓʓઓུͷӅṭ  Ωϟογϡ ϦτϥΠ λΠϜΞ΢τ ʜ lͪΌΜͱz)551ϦΫΤετ͢Δͷ͸೉͍͠ 1SPEVDUJPO3FBEJOFTTͷ؍఺ ‣ ڞ௨ϩδοΫͷ࣮૷  "VUI/ "VUI; ʜ ‣ ࢖͍΍͍͢"1*  ৑௕ͳهड़͕ݮΒͤΔ  ͍Ζ͍Ζ๨Εͳ͍  ʜ lศརϥΠϒϥϦzͱͯ͠ͷ؍఺ ʮ࠷ڧͷ IUUQ$MJFOUίϯετϥΫλʯͰ ղܾ͢Δ΋ͷ΋ଟ͍
  14. ©2020 Wantedly, Inc. ‣ 0CTFSWBCJMJUZͷͨΊͷϑοΫ  .FUSJDT -PHT 5SBDFT ʜ

     ΞΫηεϩά ‣ ద੾ͳʓʓઓུͷӅṭ  Ωϟογϡ ϦτϥΠ λΠϜΞ΢τ ʜ lͪΌΜͱz)551ϦΫΤετ͢Δͷ͸೉͍͠ 1SPEVDUJPO3FBEJOFTTͷ؍఺ ‣ ڞ௨ϩδοΫͷ࣮૷  "VUI/ "VUI; ʜ ‣ ࢖͍΍͍͢"1*  ৑௕ͳهड़͕ݮΒͤΔ  ͍Ζ͍Ζ๨Εͳ͍  ʜ lศརϥΠϒϥϦzͱͯ͠ͷ؍఺ ͜ͷลͷʮࣄނΓ΍͢͞ʯ͸ʁ -JOUͰղܾͰ͖Δ΋ͷ΋͋Δ͕ʜ ʢFHUJNBLJOCPEZDMPTF TPOBUBSEOPDUYʣ
  15. ©2020 Wantedly, Inc. 3FBM8PSME)5513FRVFTU ‣ ඞཁͳ࡞ۀ͸࿙Εͯͳ͍͔ʁ  DPOUFYU$POUFYUΛ఻ൖͤͯ͞ͳ͍ͱɺϝτϦΫε΍τϨʔε͕औΕͳ͘ͳΔ  4UBUVTDPEF͕YY΍YYͰ΋A

    IUUQ$MJFOU %PA͸ΤϥʔΛฦ͞ͳ͍  ʜ ‣ ҙ֎ͱ᠘͕ଟ͍ʂ  -JOUͰΧόʔͰ͖Δ΋ͷ΋͋ΔʢFHUJNBLJOCPEZDMPTF TPOBUBSEOPDUYʣ lͪΌΜͱz)551ϦΫΤετ͢Δͷ͸೉͍͠
  16. ©2020 Wantedly, Inc. AOFUIUUQ$MJFOUA͸ྑ͘ͳ͍ʁ ‣ ͦΜͳ͜ͱ͸ͳ͍ʂ  ϝδϟʔέʔεͰ͋Δʮ+40/ͷԟ෮ʯʹ͸͔ͨ͠ʹ৑௕͔΋͠Εͳ͍  ҰํͰɺඪ४ϥΠϒϥϦͳͷͰଟ༷ͳχʔζʹରԠͰ͖Δඞཁ͕͋Δ

     )551ͷ௨৴ࣗମ͕੒ޭ͍ͯ͠ΔͷͰYYͰ΋Τϥʔ͡Όͳ͍ͷ΋Θ͔Δ  ετϦʔϜతͳ΍͔ͭ΋͠Εͳ͍ͷͰ<>CZUFͰ͸ͳ͘JP3FBEFSͳͷ΋Θ͔Δ ‣ ΋ͷ͝ͱͷҰଆ໘͚ͩΛݟͯྑ͠ѱ͠Λ൑ఆ͢Δͷ͸μϝ  ʮͳͥͦ͏ͳ͍ͬͯΔ͔ʯΛߟ͑ͯΈΔͷ͕େ੾ ίϥϜతͳ࿩
  17. ©2020 Wantedly, Inc. ͸͍ʢٳܜʣ

  18. ©2020 Wantedly, Inc. +40/"1*Λୟ͘)551ΫϥΠΞϯτ ʹɺର৅ΛߜΓ·͢ 8FCΞϓϦέʔγϣϯ԰͞Μʹͱͬͯͷϝδϟʔέʔε

  19. ©2020 Wantedly, Inc. ʮྑ͍ΠϯλϑΣʔεʯ ʹ͢ΔͨΊʹ͸ʁ

  20. ©2020 Wantedly, Inc. APIs should be easy to use and

    hard to misuse. Joshua Bloch: Bumper-Sticker API Design* * https://www.infoq.com/articles/API-Design-Joshua-Bloch/ lྑ͍ΠϯλϑΣʔεzͱ͸
  21. ©2020 Wantedly, Inc. $IBSBDUFSJTUJDTPGB(PPE"1* ‣ &BTZUPMFBSO ‣ &BTZUPVTF FWFOXJUIPVUEPDVNFOUBUJPO ‣

    )BSEUPNJTVTF ‣ &BTZUPSFBEBOENBJOUBJODPEFUIBUVTFTJU ‣ &BTZUPFYUFOE ‣ "QQSPQSJBUFUPBVEJFODF lྑ͍ΠϯλϑΣʔεzͱ͸ * “How to design a good API and why it matters” ͔ΒҾ༻ https://research.google/pubs/pub32713/
  22. ©2020 Wantedly, Inc. ‣ &BTZUPMFBSO&BTZUPVTF FWFOXJUIPVUEPDVNFOUBUJPO  ࢖͍ํΛ༰қʹֶ΂Δ  υΩϡϝϯτΛಡ·ͳͯ͘΋ɺʢิ׬ީิɾΠϯλϑΣʔεΛݟΕ͹ʣͰ࢖͑Δ

    ‣ )BSEUPNJTVTF  FHʮDPOUFYU$POUFYU౉͠๨ΕʯʮIUUQTUBUVTνΣοΫ͠๨Εʯ͕ى͖ͳ͍Α͏ͳ࢓૊Έɾ*' ‣ &BTZUPFYUFOE  FHʮʓʓͷͨΊͷϑοΫΛ࢓ࠐΉʯΈ͍ͨͳͷ͕༰қʹ࢓ࠐΊΔΑ͏ͳ &BTZUPVTF)BSEUPNJTVTFͳ)551ΫϥΠΞϯτ * “How to design a good API and why it matters” ͔ΒҾ༻ https://research.google/pubs/pub32713/
  23. ©2020 Wantedly, Inc. ૝૾Ͱ͖·ͨ͠ʁ

  24. ©2020 Wantedly, Inc. ଞͷݴޠͰͲ͏ͳ͍ͬͯΔ͔Λ ࢀߟʹͯ͠ΈΔ

  25. ©2020 Wantedly, Inc. BYJPT ϒϥ΢βɾ/PEFKTͰ࢖͑Δ+4ϥΠϒϥϦ ଞͷݴޠͰͷ)551ΫϥΠΞϯτ

  26. ©2020 Wantedly, Inc. BYJPT ϒϥ΢βɾ/PEFKTͰ࢖͑Δ+4ϥΠϒϥϦ ‣ ϦΫΤετͷ౤͛ํ͸໌շ  )551.FUIPE+4ͷϝιου໊ 

    YY YYͩͱ&SSPS͕UISPX͞ΕΔ ଞͷݴޠͰͷ)551ΫϥΠΞϯτ
  27. ©2020 Wantedly, Inc. BYJPT ϒϥ΢βɾ/PEFKTͰ࢖͑Δ+4ϥΠϒϥϦ ‣ ϦΫΤετͷ౤͛ํ͸໌շ  )551.FUIPE+4ͷϝιου໊ 

    YY YYͩͱ&SSPS͕UISPX͞ΕΔ ‣ *OUFSDFQUPSͱ͍͏ܗͰϦΫΤετલޙʹ հೖͰ͖ΔΑ͏ʹͳ͍ͬͯΔ ଞͷݴޠͰͷ)551ΫϥΠΞϯτ
  28. ©2020 Wantedly, Inc. 'BSBEBZ (JU)VCDMJFOUͰ΋ར༻͞ΕΔ3VCZHFN ଞͷݴޠͰͷ)551ΫϥΠΞϯτ

  29. ©2020 Wantedly, Inc. 'BSBEBZ (JU)VCDMJFOUͰ΋ར༻͞ΕΔ3VCZHFN ‣ ϦΫΤετͷ౤͛ํ͸BYJPTͱ΄΅ಉ͡  )551.FUIPEϝιου໊ 

    YY YYͩͱ&SSPS͕UISPX͞ΕΔ ‣ .JEEMFXBSFΛ࣮૷ɾએݴ͢Δ͜ͱͰɺ
 ϦΫΤετલޙʹհೖͰ͖Δ ଞͷݴޠͰͷ)551ΫϥΠΞϯτ
  30. ©2020 Wantedly, Inc. ଞͷݴޠ͔ΒΘ͔Δ͜ͱ

  31. ©2020 Wantedly, Inc. ‣ )551.FUIPE໊͕ͦͷ··ϝιου໊ʹͳͬͯΔέʔε͕ଟ͍  ʮ)551$MJFOUΠϯελϯεͷϝιουʯύλʔϯʢ'BSBEBZ BYJPTʣ  ʮ3FRVFTUΦϒδΣΫτͷCVJMEFSQBUUFSOʯύλʔϯʢ0L)UUQ

    3FRVFTUTʣ ‣ YY YYͷॲཧํ਑͸େ͖̎͘௨Γ  Τϥʔʹ͢ΔBYJPT 'BSBEBZʢWҎ߱ʣ  AJT4VDDFTTAͱ͔APLAΈ͍ͨͳϝιου0L)UUQ 'BSBEBZʢ;Δ͍΍ͭʣ ‣ ϦΫΤετͷલޙʹॲཧΛڬΊΔΑ͏ʹͳ͍ͬͯΔʢ*OUFSDFQUPS .JEEMFXBSFʣ ‣ #BTF63-ΛઃఆͰ͖Δ΋ͷ΋ଟ͍ ଞͷݴޠ͔ΒΘ͔Δ͜ͱ
  32. ©2020 Wantedly, Inc. Ͳ͏͍͏΋ͷ͕޷·ΕΔ͔͸Θ͔ͬͨ
 ʢؾ͕͢Δʣ

  33. ©2020 Wantedly, Inc. Ͳ͏(PͷΠϯλϑΣʔεʹམͱ͠ɺ ࣮૷͍ͯ͘͠ʁ

  34. ©2020 Wantedly, Inc. HJUIVCDPNJ[VNJOIYͷྫ ࣾ಺Ͱ࢖ͬͯͨ)551DMJFOUΛϦϓϨʔεͰ͖ͳ͍͔ͳʙͬͯ࡞ͬͯΈͨ

  35. ©2020 Wantedly, Inc. *OUFSDFQUPSͷ࣮ݱ .JEEMFXBSFͱݺ͹ΕͨΓ΋͢ΔɺϦΫΤετલޙ΁ͷϑοΫػߏ

  36. ©2020 Wantedly, Inc. )551ΫϥΠΞϯτͷ*OUFSDFQUPS3PVOE5SJQQFS ࣮͸ඪ४Ͱͦ͏͍͏͜ͱ͕࣮ݱͰ͖Δػߏ͕͋ΔAOFUIUUQ3PVOE5SJQQFSA

  37. ©2020 Wantedly, Inc. )551ΫϥΠΞϯτͷ*OUFSDFQUPS3PVOE5SJQQFS )551TFSWFSͷϛυϧ΢ΣΞύλʔϯʢAOFUIUUQ)BOEMFSAʣͱಉ͡Α͏ͳ࡞Γํ

  38. ©2020 Wantedly, Inc. ੈͷதͷIUUQ3PVOE5SJQQFS ੈͷதͰ΋ී௨ʹ࢖ΘΕ͍ͯΔ HPEPDPSHHPMBOHPSHYPBVUI HPPQFODFOTVTJPQMVHJOPDIUUQ

  39. ©2020 Wantedly, Inc. 'VODUJPOBM0QUJPO1BUUFSO ͜ͷઌ3PVOU5SJQQFSҎ֎΋ࢦఆͨ͘͠ͳΔ͸ͣͳͷͰɺ'VODUJPOBM0QUJPO1BUUFSOʹ

  40. ©2020 Wantedly, Inc. ΫϥΠΞϯτͷΠϯλϑΣʔε ೔ৗͰίʔυΛॻ͍͍ͯͯɺ΋ͬͱ΋৮ΕΔ෦෼ɻख৮Γ͕େࣄɻ

  41. ©2020 Wantedly, Inc. طଘͷ)551ΫϥΠΞϯτͷΠϯλϑΣʔε #VJMEFSQBUUFSOͩͱऴ୺ͷϝιουݺͼग़͕͠ඞཁʹͳΓ ͦΕΛ֮͑Δͷ͕ϜζΧγΠͱ͍͏ҹ৅Λ͍࣋ͬͯΔʢ޷Έͷ໰୊͔΋ʣ 3FRVFTUCVJMEFSQBUUFSOΛΑ͘ݟ͔͚Δؾ͕͢Δ

  42. ©2020 Wantedly, Inc. ʮ͍͍ײ͡ͷ)551$MJFOUʯΠϯλϑΣʔεํ਑

  43. ©2020 Wantedly, Inc. ʮ͍͍ײ͡ͷ)551$MJFOUʯΠϯλϑΣʔεํ਑ )551.FUIPE໊ͱҰக͢Δϝιου໊ ʢϝιου໊͕ͪΌΜͱิ׬Ͱग़͖ͯͯศརʂʣ

  44. ©2020 Wantedly, Inc. ʮ͍͍ײ͡ͷ)551$MJFOUʯΠϯλϑΣʔεํ਑ DPOUFYU$POUFYU͕ඞਢҾ਺
 ʢ๨ΕΔ΄͏͕ϜζΧγΠʂʣ

  45. ©2020 Wantedly, Inc. ໰୊͸͔͜͜Β

  46. ©2020 Wantedly, Inc. (FOFSJDTܕύϥϝλతͳ΋ͷ͕ͳ͍(PͰ ϨεϙϯεɾΤϥʔΛͲ͏औΓग़͔͢

  47. ©2020 Wantedly, Inc. ͺͬͱࢥ͍ͭ͘ྫʢਖ਼ৗܥʣ ѱ͘͸ͳ͍͕ɺ+40/Ҏ֎ͷํʹϚοϐϯά͍ͨ͠ͱ͖ʹͲ͏͢Δ͔͸՝୊ <>CZUFT΍JP3FBEFSͷऔΓग़͠ޱ͸ผͰඞཁ

  48. ©2020 Wantedly, Inc. ͺͬͱࢥ͍ͭ͘ྫʢҟৗܥʣ YY YYͳͲͷΤϥʔϨεϙϯε͕ฦͬͯ͘ΔܥͰ͸ɺ#PEZΛݟ͍ͨ͜ͱ͸ී௨ʹ͋Δ ͨͩɺ͜͜ͰͲ͏͍͏*'Λఏڙ͢Δ͔͸೰·͍͠

  49. ©2020 Wantedly, Inc. ͺͬͱࢥ͍ͭ͘ྫʢҟৗܥʣ YY YYͳͲͷΤϥʔϨεϙϯε͕ฦͬͯ͘ΔܥͰ͸ɺ#PEZΛݟ͍ͨ͜ͱ͸ී௨ʹ͋Δ ͨͩɺ͜͜ͰͲ͏͍͏*'Λఏڙ͢Δ͔͸೰·͍͠ "QJ&SSPS΋3FTQPOTFJOUFSGBDFʢ4UBUVT͕औΕͨΓ3FTQPOTFCPEZΛॲཧͰ͖ͨΓ͢ΔʣΛ ࣮૷ͯ͠͠·͑͹͍͍͔΋͠Εͳ͍ ʢ͋ͱ͔Βࢥ͍͍ͭͯεϥΠυʹ଍͞Ε·ͨ͠ʣ

  50. ©2020 Wantedly, Inc. ‣ ʮͺͬͱࢥ͍ͭ͘ྫʯͰ΋ҙ֎ͱѱ͘ͳ͍ ‣ ͨͩɺͲ͏͍͏ܗࣜͰEFTFSJBMJ[F͢Δ͔ͷ
 ʮ֦ுੑʢ&BTZUPFYUFOEʣʯ͸͓೰ΈϙΠϯτ ‣ ଞͷ#VJMEFSQBUUFSOͷϥΠϒϥϦʹൺ΂ͯ


    Τϥʔॲཧ͕ճ෼ଟͯ͘չ͍͠ʢʁʣ
  51. ©2020 Wantedly, Inc. ͳΜ͔չ͍͠ͷͰ ΋͏Ұஈ֊͔ͬ͜Α͘ศརʹͰ͖ͳ͍͔

  52. ©2020 Wantedly, Inc. HJUIVCDPNHPSFTUZSFTUZͷΤϥʔϋϯυϦϯά ͜Ε͕ώϯτʹͳΔͷͰ͸ʁ ҰํͰɺͭͷΤϥʔܕ͔͠౉ͤͳ͍ͱ͜Ζ͸վળͰ͖Δͱ͍͍ͷ͔΋ʁ ΤϥʔͷVONBSTIBMઌΛࢦఆͰ͖Δ

  53. ©2020 Wantedly, Inc. ݁Ռ

  54. ©2020 Wantedly, Inc. ͜͏ͳΓ·ͨ͠ ʢ͋·Γʹָ͘͠ͳͬͪΌͬͯɺԿΛͲ͏ߟ͑ͯ͜͏ͳ͔ͬͨ͸๨Εͨʜʣ ʢύλʔϯϚον͕ೖͬͨ3VCZ͕΋͏͙͢ग़Δͧʂ͘Β͍ͷ࣌ظʹॻ͍ͯͨͷͰɺ͔ͦ͜Βண૝ಘͨʁʣ

  55. ©2020 Wantedly, Inc.

  56. ©2020 Wantedly, Inc. ϦΫΤετϝιου΋0QUJPOΛड͚ΒΕΔΑ͏ʹ ʢಛఆͷ"1*͚ͩԿΒ͔ͷઓུ͕ҧ͏͜ͱ͸͋Γ͏ΔͷͰɺ͜ͷมߋࣗମʹ߹ཧੑ͸͋Δʣ

  57. ©2020 Wantedly, Inc. 3FTQPOTF)BOEMFSͱ͍͏֓೦Λಋೖͨ͠ จࣈ௨Γ3FTQPOTFʢΤϥʔؚΉʣΛड͚ͯղऍͨ͠ΓɺผͷΤϥʔʹม׵ͨ͠Γ͢ΔϨΠϠ

  58. ©2020 Wantedly, Inc. $POEJUJPOBM3FTQPOTF)BOEMFSͱ͍͏֓೦Λಋೖͨ͠ 3FTQPOTF)BOEMFSͷൃՐ৚݅Λࢦఆ͢ΔͨΊͷΠϯλϑΣʔε ʮYYͷͱ͖͸<> 6TFSʹVONBSTIBMʯʮYY YYͷͱ͖͸FSSPSʹม׵ʯͱ͍ͬͨ ॊೈͳϋϯυϦϯάΛࢦఆͰ͖Δ ίϨࣗମ͸IY0QUJPOʹͳ͍ͬͯΔ

  59. ©2020 Wantedly, Inc. ݁Ռ

  60. ©2020 Wantedly, Inc. HJUIVCDPNJ[VNJOIYݱࡏͷܗ

  61. ©2020 Wantedly, Inc. HJUIVCDPNJ[VNJOIYݱࡏͷܗ ‣ ❓&BTZUPMFBSO ‣ ❓&BTZUPVTF FWFOXJUIPVUEPDVNFOUBUJPO ‣

    ❓)BSEUPNJTVTF ‣ ❓&BTZUPSFBEBOENBJOUBJODPEFUIBUVTFTJU ‣ ❓&BTZUPFYUFOE ‣ ❓"QQSPQSJBUFUPBVEJFODF
  62. ©2020 Wantedly, Inc. HJUIVCDPNJ[VNJOIYݱࡏͷܗ ‣ ❓&BTZUPMFBSO ‣ ❓&BTZUPVTF FWFOXJUIPVUEPDVNFOUBUJPO ‣

    ✅)BSEUPNJTVTF ‣ ❓&BTZUPSFBEBOENBJOUBJODPEFUIBUVTFTJU ‣ ✅&BTZUPFYUFOE ‣ ❓"QQSPQSJBUFUPBVEJFODF
  63. ©2020 Wantedly, Inc. HJUIVCDPNJ[VNJOIYݱࡏͷܗ ‣ ❓&BTZUPMFBSO ‣ ❓&BTZUPVTF FWFOXJUIPVUEPDVNFOUBUJPO ‣

    ✅)BSEUPNJTVTF ‣ ❓&BTZUPSFBEBOENBJOUBJODPEFUIBUVTFTJU ‣ ✅&BTZUPFYUFOE ‣ ❓"QQSPQSJBUFUPBVEJFODF ‣ .JTVTF͸͔ͳΓݮΔͷͰ͸ʁ  ΫϥΠΞϯτ͕ԿΛฦ͔͕ࣗ͢໌  ΫϥΠΞϯτڞ௨ͷৼΔ෣͍ΛࢦఆͰ͖Δ  YYYY΋ΤϥʔʹͳΔ ‣ &BTZUPMFBSOVTF͸Ͳ͏ͩΖ͏ʁ  $POEJUJPOBM3FTQPOTF)BOEMFSͷ
 ྑ͍υΩϡϝϯτɾ&YBNQMFΛఏڙͰ͖Δ͔
  64. ©2020 Wantedly, Inc. ଞͷ࣮ݱํ๏͸ʁ

  65. ©2020 Wantedly, Inc. "1*εΩʔϚ͔Βͷίʔυੜ੒ ‣ 0QFO"1* 4XBHHFS ͔Β)551ΫϥΠΞϯτͷίʔυΛੜ੒͢Δͱ͍͏Ξϓϩʔν  HJUIVCDPNHPTXBHHFSHPTXBHHFS

    ‣ TUSVDUΛड͚औΓTUSVDUΛฦؔ͢਺͕ੜ·ΕΔͷͰɺར༻·Ͱͷোน͸গͳ͍ ‣ εΩʔϚʢ࢓༷ॻʣ͔ΒίʔυΛੜ੒͢ΔͷͰNJTVTF΋ى͖ͮΒ͍ εΩʔϚۦಈ։ൃɺྑͦ͞͏ʹݟ͑Δ ଞͷlྑ͍ΠϯλϑΣʔεz࣮ݱख๏
  66. ©2020 Wantedly, Inc. ͳͥ4XBHHFSΛ࠾༻͠ͳ͔͔ͬͨ ‣ ࣾ಺ͷ৽ن"1*͸͢΂ͯ1SPUPCVG*%-ͰεΩʔϚ͕هड़͞Ε͍ͯͨ  ίϨࣗମ͸ʢΞϊςʔγϣϯΛॻ͚͹ʣ0QFO"1*ͷTQFDʹม׵Ͱ͖Δ ‣ ͜ͷ1SPUPCVG*%-ͷར༻͸1SPUPCVGͱ͍͏γϦΞϥΠθʔγϣϯͷͨΊͰ͸ͳ͘ɺ


    H31$ಋೖʹ޲͚ͨεΩʔϚۦಈ։ൃ H31$TFSWFSͷٕज़ݕূͱ͍͏ଆ໘͕ڧ͔ͬͨ ଞͷlྑ͍ΠϯλϑΣʔεz࣮ݱख๏
  67. ©2020 Wantedly, Inc. ޙ೔ᩀ HJUIVCDPNJ[VNJOIY͸ࣾ಺)551$MJFOUΛஔ͖׵͑ͨͷ͔ʁʂ

  68. ©2020 Wantedly, Inc. Real World Migration from HTTP to gRPC

    in Ruby #grpcconf https://speakerdeck.com/south37/real-world-migration-from-http-to-grpc-in-ruby-number-grpcconf
  69. ©2020 Wantedly, Inc. ॕH31$׬શຊ൪౤ೖ Real World Migration from HTTP to

    gRPC in Ruby #grpcconf https://speakerdeck.com/south37/real-world-migration-from-http-to-grpc-in-ruby-number-grpcconf
  70. ©2020 Wantedly, Inc. ৽نʹॻ͔ΕΔ"1*͸͢΂ͯH31$ʹ ʢ)551ΫϥΠΞϯτͷग़൪͕ΊͬͪΌݮͬͨʣ Real World Migration from HTTP

    to gRPC in Ruby #grpcconf https://speakerdeck.com/south37/real-world-migration-from-http-to-grpc-in-ruby-number-grpcconf
  71. ©2020 Wantedly, Inc. ݁࿦ H31$͸ਆ

  72. ©2020 Wantedly, Inc. ͓ΘΓ

  73. ©2020 Wantedly, Inc. ͓ΘΓ

  74. ©2020 Wantedly, Inc. ͳͥH31$͸lྑ͍z͔ ‣ ໌շͳ*%-ʹΑΔεΩʔϚఆٛ ‣ Α͋͘ΔϓϩάϥϛϯάݴޠͬΆ͍4ZOUBYͰ ಡΉͱ͖ͷෛՙ͕௿͍ ‣

    ʮΠϯσϯτϛεͬͯҙਤ͠ͳ͍εΩʔϚʹʯ Έ͍ͨͳ:".-͋Δ͋Δࣄނ͸ى͖ͳ͍ ‣ ʮಠࣗݴޠʯ͸σϝϦοτͱ΋ݴ͑Δ͕ɺ
 1SPUPCVG*%-͸े෼޿͘࢖ΘΕ͍ͯΔ͸ͣ lྑ͍ΠϯλϑΣʔεzͱ͍͏ࢹ఺ͰͷH31$
  75. ©2020 Wantedly, Inc. ͳͥH31$͸lྑ͍z͔ ‣ ੜ੒͞ΕΔΠϯλϑΣʔεͷlྑ͞z ‣ ΋͸΍ؒҧ͑Α͏͕ʢ͋·Γʣͳ͍ ‣ Τϥʔॲཧ΋H31$ͱ͍͏ʮϑϨʔϜϫʔΫʯͷϨϕϧͰߟ͑ΒΕ͍ͯΔ

    lྑ͍ΠϯλϑΣʔεzͱ͍͏ࢹ఺ͰͷH31$
  76. ©2020 Wantedly, Inc. ͪΌΜͱͨ݁͠࿦ ‣ l$IBSBDUFSJTUJDPGB(PPE"1*zͱଞݴޠͷ)551ΫϥΠΞϯτ͔Βɺ
 ࢖͍΍͍͢)551ΫϥΠΞϯτʢ+40/"1*ΫϥΠΞϯτʣͷܗΛ໛ࡧͨ͠ ‣ Α͋͘Δʮ࢖͍΍͍͢)551ΫϥΠΞϯτʯΛຬͨ͢Α͏ɺ(PͰ)551ΫϥΠΞϯτΛ࣮૷ͨ͠ 

    3FBMXPSMEBQQMJDBUJPOͰར༻Ͱ͖ΔΑ͏ɺ)BSEUPNJTVTF&BTZUPFYUFOEʹؾΛ࢖ͬͯΈͨ  HJUIVCDPNJ[VNJOIY ‣ ݴޠɾϑϨʔϜϫʔΫɾϓϩτίϧ໰Θͣɺʮྑ͍ΠϯλϑΣʔεʯͷΤοηϯε͸ಉ͡
 ΞϯςφΛ޿͘ுͬͯٵऩ͍͚ͯ͠Δͱڧ͍෢ثʹͳΔ ‣ H31$ʢྑ͍εΩʔϚఆٛݴޠͱɺ͔ͦ͜Βੜ੒͞ΕΔྑ͍ΠϯλϑΣʔεͷίʔυʣ͸ਆ