$30 off During Our Annual Pro Sale. View Details »

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

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

Masayuki Izumi

October 10, 2020
Tweet

More Decks by Masayuki Izumi

Other Decks in Programming

Transcript

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

    View Slide

  2. ©2020 Wantedly, Inc.
    @izumin5210
    Backend Chapter Lead, Profile Domain
    Wantedly, Inc.
    ‣ #BDLFOEͷ5FDI-FBEతͳ͜ͱΛ͍ͯ͠·͢
    ‣ ੜ࢈ੑΛ্͛Δந৅ɾϑϨʔϜϫʔΫΛݟ͚ͭΔͷ͕޷͖Ͱ͢
    ‣ ࠷ۙͷ͓͖ʹ͍Γύοέʔδ
    ▶HPMBOHPSHYUPPMTHPQBDLBHFTQBDLBHFTUFTU
    HPPHMFHPMBOHPSHQSPUPCVGSFqFDUQSPUPSFqFDU
    HJUIVCDPNWFLUBIHRMQBSTFS
    !UFTUJOHMJCSBSZSFBDUIPPLT

    View Slide

  3. ©2020 Wantedly, Inc.
    ‣ ʮ࢖͍΍͍͢ΠϯλϑΣʔεʯͱ͸ͳʹ͔ɺ࣮ྫ͔ΒֶͿʢߟ͑Δʣ
    ‣ ʮ࢖͍΍͍͢ΠϯλϑΣʔεʯΛ࣮ݱ͢ΔͨΊͷख๏ΛֶͿʢߟ͑Δʣ
    8IBUJTJU

    View Slide

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

    View Slide

  5. ©2020 Wantedly, Inc.
    Ұൠతͳ)551ϦΫΤετ

    ؒҧ͍୳͠ίʔφʔͰ͢

    View Slide

  6. ©2020 Wantedly, Inc.

    View Slide

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

    View Slide

  8. ©2020 Wantedly, Inc.

    View Slide

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

    View Slide

  10. ©2020 Wantedly, Inc.

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  15. ©2020 Wantedly, Inc.
    3FBM8PSME)5513FRVFTU
    ‣ ඞཁͳ࡞ۀ͸࿙Εͯͳ͍͔ʁ
    DPOUFYU$POUFYUΛ఻ൖͤͯ͞ͳ͍ͱɺϝτϦΫε΍τϨʔε͕औΕͳ͘ͳΔ
    4UBUVTDPEF͕YY΍YYͰ΋A IUUQ$MJFOU
    %PA͸ΤϥʔΛฦ͞ͳ͍
    ʜ
    ‣ ҙ֎ͱ᠘͕ଟ͍ʂ
    -JOUͰΧόʔͰ͖Δ΋ͷ΋͋ΔʢFHUJNBLJOCPEZDMPTF TPOBUBSEOPDUYʣ
    lͪΌΜͱz)551ϦΫΤετ͢Δͷ͸೉͍͠

    View Slide

  16. ©2020 Wantedly, Inc.
    AOFUIUUQ$MJFOUA͸ྑ͘ͳ͍ʁ
    ‣ ͦΜͳ͜ͱ͸ͳ͍ʂ
    ϝδϟʔέʔεͰ͋Δʮ+40/ͷԟ෮ʯʹ͸͔ͨ͠ʹ৑௕͔΋͠Εͳ͍
    ҰํͰɺඪ४ϥΠϒϥϦͳͷͰଟ༷ͳχʔζʹରԠͰ͖Δඞཁ͕͋Δ
    )551ͷ௨৴ࣗମ͕੒ޭ͍ͯ͠ΔͷͰYYͰ΋Τϥʔ͡Όͳ͍ͷ΋Θ͔Δ
    ετϦʔϜతͳ΍͔ͭ΋͠Εͳ͍ͷͰ<>CZUFͰ͸ͳ͘JP3FBEFSͳͷ΋Θ͔Δ
    ‣ ΋ͷ͝ͱͷҰଆ໘͚ͩΛݟͯྑ͠ѱ͠Λ൑ఆ͢Δͷ͸μϝ
    ʮͳͥͦ͏ͳ͍ͬͯΔ͔ʯΛߟ͑ͯΈΔͷ͕େ੾
    ίϥϜతͳ࿩

    View Slide

  17. ©2020 Wantedly, Inc.
    ͸͍ʢٳܜʣ

    View Slide

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

    View Slide

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

    View Slide

  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ͱ͸

    View Slide

  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/

    View Slide

  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/

    View Slide

  23. ©2020 Wantedly, Inc.
    ૝૾Ͱ͖·ͨ͠ʁ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  27. ©2020 Wantedly, Inc.
    BYJPT
    ϒϥ΢βɾ/PEFKTͰ࢖͑Δ+4ϥΠϒϥϦ
    ‣ ϦΫΤετͷ౤͛ํ͸໌շ
    )551.FUIPE+4ͷϝιου໊
    YY YYͩͱ&SSPS͕UISPX͞ΕΔ
    ‣ *OUFSDFQUPSͱ͍͏ܗͰϦΫΤετલޙʹ
    հೖͰ͖ΔΑ͏ʹͳ͍ͬͯΔ
    ଞͷݴޠͰͷ)551ΫϥΠΞϯτ

    View Slide

  28. ©2020 Wantedly, Inc.
    'BSBEBZ
    (JU)VCDMJFOUͰ΋ར༻͞ΕΔ3VCZHFN
    ଞͷݴޠͰͷ)551ΫϥΠΞϯτ

    View Slide

  29. ©2020 Wantedly, Inc.
    'BSBEBZ
    (JU)VCDMJFOUͰ΋ར༻͞ΕΔ3VCZHFN
    ‣ ϦΫΤετͷ౤͛ํ͸BYJPTͱ΄΅ಉ͡
    )551.FUIPEϝιου໊
    YY YYͩͱ&SSPS͕UISPX͞ΕΔ
    ‣ .JEEMFXBSFΛ࣮૷ɾએݴ͢Δ͜ͱͰɺ

    ϦΫΤετલޙʹհೖͰ͖Δ
    ଞͷݴޠͰͷ)551ΫϥΠΞϯτ

    View Slide

  30. ©2020 Wantedly, Inc.
    ଞͷݴޠ͔ΒΘ͔Δ͜ͱ

    View Slide

  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-ΛઃఆͰ͖Δ΋ͷ΋ଟ͍
    ଞͷݴޠ͔ΒΘ͔Δ͜ͱ

    View Slide

  32. ©2020 Wantedly, Inc.
    Ͳ͏͍͏΋ͷ͕޷·ΕΔ͔͸Θ͔ͬͨ

    ʢؾ͕͢Δʣ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  44. ©2020 Wantedly, Inc.
    ʮ͍͍ײ͡ͷ)551$MJFOUʯΠϯλϑΣʔεํ਑
    DPOUFYU$POUFYU͕ඞਢҾ਺

    ʢ๨ΕΔ΄͏͕ϜζΧγΠʂʣ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  50. ©2020 Wantedly, Inc.
    ‣ ʮͺͬͱࢥ͍ͭ͘ྫʯͰ΋ҙ֎ͱѱ͘ͳ͍
    ‣ ͨͩɺͲ͏͍͏ܗࣜͰEFTFSJBMJ[F͢Δ͔ͷ

    ʮ֦ுੑʢ&BTZUPFYUFOEʣʯ͸͓೰ΈϙΠϯτ
    ‣ ଞͷ#VJMEFSQBUUFSOͷϥΠϒϥϦʹൺ΂ͯ

    Τϥʔॲཧ͕ճ෼ଟͯ͘չ͍͠ʢʁʣ

    View Slide

  51. ©2020 Wantedly, Inc.
    ͳΜ͔չ͍͠ͷͰ
    ΋͏Ұஈ֊͔ͬ͜Α͘ศརʹͰ͖ͳ͍͔

    View Slide

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

    View Slide

  53. ©2020 Wantedly, Inc.
    ݁Ռ

    View Slide

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

    View Slide

  55. ©2020 Wantedly, Inc.

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  59. ©2020 Wantedly, Inc.
    ݁Ռ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  63. ©2020 Wantedly, Inc.
    HJUIVCDPNJ[VNJOIYݱࡏͷܗ
    ‣ ❓&BTZUPMFBSO
    ‣ ❓&BTZUPVTF FWFOXJUIPVUEPDVNFOUBUJPO
    ‣ ✅)BSEUPNJTVTF
    ‣ ❓&BTZUPSFBEBOENBJOUBJODPEFUIBUVTFTJU
    ‣ ✅&BTZUPFYUFOE
    ‣ ❓"QQSPQSJBUFUPBVEJFODF
    ‣ .JTVTF͸͔ͳΓݮΔͷͰ͸ʁ
    ΫϥΠΞϯτ͕ԿΛฦ͔͕ࣗ͢໌
    ΫϥΠΞϯτڞ௨ͷৼΔ෣͍ΛࢦఆͰ͖Δ
    YYYY΋ΤϥʔʹͳΔ
    ‣ &BTZUPMFBSOVTF͸Ͳ͏ͩΖ͏ʁ
    $POEJUJPOBM3FTQPOTF)BOEMFSͷ

    ྑ͍υΩϡϝϯτɾ&YBNQMFΛఏڙͰ͖Δ͔

    View Slide

  64. ©2020 Wantedly, Inc.
    ଞͷ࣮ݱํ๏͸ʁ

    View Slide

  65. ©2020 Wantedly, Inc.
    "1*εΩʔϚ͔Βͷίʔυੜ੒
    ‣ 0QFO"1* 4XBHHFS
    ͔Β)551ΫϥΠΞϯτͷίʔυΛੜ੒͢Δͱ͍͏Ξϓϩʔν
    HJUIVCDPNHPTXBHHFSHPTXBHHFS
    ‣ TUSVDUΛड͚औΓTUSVDUΛฦؔ͢਺͕ੜ·ΕΔͷͰɺར༻·Ͱͷোน͸গͳ͍
    ‣ εΩʔϚʢ࢓༷ॻʣ͔ΒίʔυΛੜ੒͢ΔͷͰNJTVTF΋ى͖ͮΒ͍
    εΩʔϚۦಈ։ൃɺྑͦ͞͏ʹݟ͑Δ
    ଞͷlྑ͍ΠϯλϑΣʔεz࣮ݱख๏

    View Slide

  66. ©2020 Wantedly, Inc.
    ͳͥ4XBHHFSΛ࠾༻͠ͳ͔͔ͬͨ
    ‣ ࣾ಺ͷ৽ن"1*͸͢΂ͯ1SPUPCVG*%-ͰεΩʔϚ͕هड़͞Ε͍ͯͨ
    ίϨࣗମ͸ʢΞϊςʔγϣϯΛॻ͚͹ʣ0QFO"1*ͷTQFDʹม׵Ͱ͖Δ
    ‣ ͜ͷ1SPUPCVG*%-ͷར༻͸1SPUPCVGͱ͍͏γϦΞϥΠθʔγϣϯͷͨΊͰ͸ͳ͘ɺ

    H31$ಋೖʹ޲͚ͨεΩʔϚۦಈ։ൃH31$TFSWFSͷٕज़ݕূͱ͍͏ଆ໘͕ڧ͔ͬͨ
    ଞͷlྑ͍ΠϯλϑΣʔεz࣮ݱख๏

    View Slide

  67. ©2020 Wantedly, Inc.
    ޙ೔ᩀ
    HJUIVCDPNJ[VNJOIY͸ࣾ಺)551$MJFOUΛஔ͖׵͑ͨͷ͔ʁʂ

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  71. ©2020 Wantedly, Inc.
    ݁࿦
    H31$͸ਆ

    View Slide

  72. ©2020 Wantedly, Inc.
    ͓ΘΓ

    View Slide

  73. ©2020 Wantedly, Inc.
    ͓ΘΓ

    View Slide

  74. ©2020 Wantedly, Inc.
    ͳͥH31$͸lྑ͍z͔
    ‣ ໌շͳ*%-ʹΑΔεΩʔϚఆٛ
    ‣ Α͋͘ΔϓϩάϥϛϯάݴޠͬΆ͍4ZOUBYͰ
    ಡΉͱ͖ͷෛՙ͕௿͍
    ‣ ʮΠϯσϯτϛεͬͯҙਤ͠ͳ͍εΩʔϚʹʯ
    Έ͍ͨͳ:".-͋Δ͋Δࣄނ͸ى͖ͳ͍
    ‣ ʮಠࣗݴޠʯ͸σϝϦοτͱ΋ݴ͑Δ͕ɺ

    1SPUPCVG*%-͸े෼޿͘࢖ΘΕ͍ͯΔ͸ͣ
    lྑ͍ΠϯλϑΣʔεzͱ͍͏ࢹ఺ͰͷH31$

    View Slide

  75. ©2020 Wantedly, Inc.
    ͳͥH31$͸lྑ͍z͔
    ‣ ੜ੒͞ΕΔΠϯλϑΣʔεͷlྑ͞z
    ‣ ΋͸΍ؒҧ͑Α͏͕ʢ͋·Γʣͳ͍
    ‣ Τϥʔॲཧ΋H31$ͱ͍͏ʮϑϨʔϜϫʔΫʯͷϨϕϧͰߟ͑ΒΕ͍ͯΔ
    lྑ͍ΠϯλϑΣʔεzͱ͍͏ࢹ఺ͰͷH31$

    View Slide

  76. ©2020 Wantedly, Inc.
    ͪΌΜͱͨ݁͠࿦
    ‣ l$IBSBDUFSJTUJDPGB(PPE"1*zͱଞݴޠͷ)551ΫϥΠΞϯτ͔Βɺ

    ࢖͍΍͍͢)551ΫϥΠΞϯτʢ+40/"1*ΫϥΠΞϯτʣͷܗΛ໛ࡧͨ͠
    ‣ Α͋͘Δʮ࢖͍΍͍͢)551ΫϥΠΞϯτʯΛຬͨ͢Α͏ɺ(PͰ)551ΫϥΠΞϯτΛ࣮૷ͨ͠
    3FBMXPSMEBQQMJDBUJPOͰར༻Ͱ͖ΔΑ͏ɺ)BSEUPNJTVTF&BTZUPFYUFOEʹؾΛ࢖ͬͯΈͨ
    HJUIVCDPNJ[VNJOIY
    ‣ ݴޠɾϑϨʔϜϫʔΫɾϓϩτίϧ໰Θͣɺʮྑ͍ΠϯλϑΣʔεʯͷΤοηϯε͸ಉ͡

    ΞϯςφΛ޿͘ுͬͯٵऩ͍͚ͯ͠Δͱڧ͍෢ثʹͳΔ
    ‣ H31$ʢྑ͍εΩʔϚఆٛݴޠͱɺ͔ͦ͜Βੜ੒͞ΕΔྑ͍ΠϯλϑΣʔεͷίʔυʣ͸ਆ

    View Slide