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

Protocol Buffersのスキーマを利用した開発

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.
Avatar for sonatard sonatard
August 31, 2019

Protocol Buffersのスキーマを利用した開発

Avatar for sonatard

sonatard

August 31, 2019
Tweet

More Decks by sonatard

Other Decks in Programming

Transcript

  1. ͦͳଠ @sonatard D Technologies • ωοτϫʔΫɺLinuxαʔόΠϯϑϥ 4೥ • RTOS, Socket,

    TCP/IP, DHCP, DNS࣮૷ 7೥ • GAE/Go 2.5೥ • TypeScript, React 5ϲ݄ • iOS, Swift 2೔ • ΞʔΩςΫνϟɺઃܭ • MVCܥ • Clean Architecture • ϦϑΝΫλϦϯά • OOP, SOLIDݪଇ • ৽͍͠ύϥμΠϜΛษڧͯ͠ɺγεςϜ΍ ίʔυΛγϯϓϧʹ͢Δ͜ͱ͕޷͖ • ࠷ۙͷϒʔϜ͸GraphQLͱRx(Swift)
  2. • ͸ ͡ Ί ʹ • . p r o

    t o ϑ Ν Π ϧ ͷ ύ ʔ ε ͱ ར ༻ • Ԡ ༻ ฤ • p r o t o ϑ Ν Π ϧ Λ ύ ʔ ε ͠ ͯ ͍ Δ π ʔ ϧ • · ͱ Ί
  3. 4 ͸͡Ίʹ w ۙ೥(31$ͷීٴͱͱ΋ʹ1SPUPDPM#V⒎FST΋ଟ͘ͷػձͰར༻͞ΕΔ Α͏ʹͳΓ·ͨ͠ɻ w 1SPUPDPM#V⒎FST͸(31$Ͱར༻͞ΕΔγϦΞϥΠθʔγϣϯπʔϧͱ ͯ͠ར༻Ͱ͖Δ͜ͱͱͱ΋ʹɺεΩʔϚͱͯ͠ͷར༻Ձ஋΋ߴ͘༗༻ Ͱ͢ɻ w

    ࢲͱͯ͠͸+40/4DIFNF΍0QFO"1*ʹൺ΂ͯɺͱͯ΋ಡΈ΍͍͢ ϑΥʔϚοτͩͱࢥ͍·͢ w ·ͨύʔε͔ͯ͠Βͷपล։ൃ؀ڥ΋੔͍ͬͯΔͨΊɺεΩʔϚΛ ύʔεͯࣗ͠෼ͨͪͷͨΊͷπʔϧΛ։ൃ͢Δ͜ͱͰɺ೔ৗͷ։ൃۀ ຿Λվળ͢Δ͜ͱ͕ͱͯ΋͠΍͍͢Ͱ͢
  4. 6 1SPUPDPM#V⒎FSTͱ͸ w 1SPUPDPM#V⒎FST͸ɺߏ଄ԽσʔλΛγϦΞϥΠζ͢ΔͨΊͷॊೈͰ ޮ཰తͳࣗಈԽϝΧχζϜɻ w ߏ଄Խσʔλ w *OUFSGBDF%FpOJUJPOMBOHVBHF *%-

    ʹΑΓఆٛ͢Δɻ w γϦΞϥΠζ w ެࣜͰఏڙ͞Ε͍ͯΔπʔϧɺ*%-Ͱఆٛͨͨ͠͠σʔλߏ଄͔ Βίʔυੜ੒Λߦ͏ɻ w ੜ੒͞ΕͨίʔυΛݩʹެࣜϥΠϒϥϦΛ༻͍ͯγϦΞϥΠζɺ σγϦΞϥΠζ͢Δɻ w ༷ʑͳݴޠʹରԠ͍ͯ͠Δ w $ $ %BSU (P +BWB 1ZUIPO
  5. 9 ओͳར༻ྫ w (31$ w QSPUPDŠHP@PVUQMVHJOTHSQDQSPUPVTFSQSPUP w ੜ੒͞ΕΔίʔυ w ࣮૷͢Δίʔυ

    w ੜ੒͞ΕͨΠϯλʔϑΣʔεʹ͋Θ࣮ͤͯ૷Λ༻ҙ͢Δͱɺ SFRVFTUͷγϦΞϥΠζΛࣗಈͰͨ͠ޙɺ࣮૷ͨ͠ϝιουΛ࣮ߦ ͯ͘͠ΕΔ
  6. 11 1SPUPDPM#V⒎FSTͷޡղ w (31$ͱҰॹʹ࢖Θͳ͚Ε͹͍͚ͳ͍ w ❌ w 1SPUPDPM#V⒎FST͸ɺ(31$͔Βಠཱͨ͠࢓༷ͱπʔϧͰ͋Δ w ⭕

    w ʮεΩʔϚఆٛ͸͍͚ͨ͠Ͳ)551ͱҟͳΔͱ͜Ζ͕͋ΔͷͰ(31$ ͷ࠾༻͕೉͍͠ʯ w ❌ w εΩʔϚఆٛΛͯ͠ɺ)551ͷ#PEZʹ1SPUPDPM#V⒎FSTΛ৐ͤͯૹΔ ͜ͱ͕Ͱ͖Δ w ߋʹεΩʔϚͱͯ͠͸QSPUPϑΝΠϧΛ࢖͍ɺ)551ͷ#PEZʹ+40/Λ ৐ͤͯૹΔ͜ͱ΋Ͱ͖Δ w ͭ·Γ+40/εΩʔϚͷ୅ସͱͯ͠࢖͏͜ͱ΋Մೳ
  7. 13 )551Ͱͷ1SPUPDPM#V⒎FSTͷར༻+40/ΛૹΔ w ઌ΄ͲͷQSPUPͱ΄΅ಉ౳ʹ+40/΋γϦΞϥΠζͰ͖Δ w +40/ͱͯ͠γϦΞϥΠζ͢Δίʔυ w ௨ৗͷKTPOύοέʔδͰ͸ͳ͘ɺKTPOQCύοέʔδΛར༻͢Δ w +40/ͱ1SPUPDPM#V⒎FSTͷ૬ޓม׵͸࢓༷ͱͯ͠ఆΊΒΕ͍ͯΔͨ

    Ίɺͦͷ࢓༷ʹଇ࣮ͬͨ૷ͱͳ͍ͬͯΔ w IUUQTEFWFMPQFSTHPPHMFDPNQSPUPDPMCV⒎FSTEPDT QSPUPKTPO ࣮૷ͨ͠ϝιουΛ࣮ߦ KTPOQCͰσγϦΞϥΠζ KTPOQCͰγϦΞϥΠζͯ͠ૹ৴
  8. 15 (31$ͱಉ༷ʹ)551 +40/PSQSPUP ϓϥάΠϯΛ࡞Ε͹ྑ͍ ωοτϫʔΫ )551Ͱૹ৴͞ΕͨσʔλΛ ߏ଄ମʹϚοϐϯά ؔ਺࣮ߦ ΫϥΠΞϯτ ։ൃऀ͸௨৴ϓϩτίϧʹґଘͨ͠

    ίʔυΛॻ͔ͳ͍ͰࡁΉ QSPUPDͷ IUUQϓϥάΠϯ QSPUPϑΝΠϧ εΩʔϚ αʔό ։ൃ؀ڥ ಡΈࠐΈ σϓϩΠ $POUFOU5ZQFʹΑͬͯ QSPUPͱKTPO੾Γସ͑ΔͳͲ΋Մೳ
  9. • ͸ ͡ Ί ʹ • . p r o

    t o ϑ Ν Π ϧ ͷ ύ ʔ ε ͱ ར ༻ • Ԡ ༻ ฤ • p r o t o ϑ Ν Π ϧ Λ ύ ʔ ε ͠ ͯ ͍ Δ π ʔ ϧ • · ͱ Ί
  10. 30 QSPUPDΛར༻ͯ͠ύʔεͯ͠ಠࣗͷπʔϧΛ࡞੒͢Δ w ͱͷҧ͍͸ϓϥάΠϯͱ࣮ͯ͠૷͠ͳ͍ͱ͍͏͜ͱͰ͢ w ͪ͜ΒͩͱQMVHJOʹൺ΂࣮ͯ૷͕୯७Ͱ͢ w ·ͨಠࣗͷίϚϯυϥΠϯπʔϧͱͯ͠࡞੒ՄೳͰ͢ w QCQBSTFS1BSTF'JMF͕ߦͳ͍ͬͯΔ͜ͱ͸ɺQSPUPDίϚϯυΛ࣮ߦ͠

    ͯඪ४ग़ྗʹύʔεͨ݁͠ՌΛग़ྗͯ͠ɺQMVHJOͱಉ͡ܗࣜͷܕʹ VONBSTIBM͍ͯ͠·͢ w QSPUPDŠEFTDSJQUPS@TFU@PVUEFWTUEPVUͰඪ४ग़ྗͰ͖Δ w QCQBSTFS͸ɺHJUIVCʹஔ͍͓͖ͯ·ͨ͠ w IUUQTHJUIVCDPNTPOBUBSEQCQBSTFS
  11. • ͸ ͡ Ί ʹ • . p r o

    t o ϑ Ν Π ϧ ͷ ύ ʔ ε ͱ ར ༻ • Ԡ ༻ ฤ • p r o t o ϑ Ν Π ϧ Λ ύ ʔ ε ͠ ͯ ͍ Δ π ʔ ϧ • · ͱ Ί
  12. 44 Ԡ༻ฤ w QSPUPͷύʔεΛ͔ͯͦ͜͠Β)551ΫϥΠΞϯτΛੜ੒͠·͕ͨ͠ɺ ࣮͸QSPUP͔Β)551ͷม׵ʹ͸࢓༷͕ࡦఆ͞Ε͓ͯΓɺઌ΄Ͳͷ࣮૷ ͸ͦͷ࢓༷ʹଇ͍ͬͯΔΘ͚Ͱ͸͋Γ·ͤΜɻ w ࣾ಺πʔϧͰಛఆ༻్ʹ࢖͏ͷʹ͸े෼Ͱ͕͢ɺ֎෦πʔϧͱ͠ ͯެ։͢ΔͳΒۃྗ࢓༷ʹै͏΂͖Ͱ͢ w

    HPPHMFBQJ)UUQ3VMF w (31$ͱ)551ϝιουͷม׵͸ɺ(PPHMF͕نఆ͍ͯ͠Δ w ͜Ε͸༗໊ͳHSQDHBUFXBZͰ΋ར༻͍ͯ͠Δ࢓༷ w IUUQTDMPVEHPPHMFDPNFOEQPJOUTEPDTHSQDTFSWJDFDPOpH SFGFSFODFSQDHPPHMFBQJIUUQSVMF w ͜ͷ࢓༷ʹਖ਼֬ʹै͏ͱ޻਺͕େ෯ʹ૿Ճ͠·͢
  13. 46 Ԡ༻ฤHPPHMFBQJ)UUQ3VMF w HPPHMFBQJ)UUQ3VMF͸ɺ1SPUPDPM#V⒎FSTͷPQUJPOͱ͍͏࢓༷ʹجͮ ͖ఆٛ͞Ε͍ͯ·͢ɻ w ͜ͷPQUJPOͷ࢓༷΋QSPUPϑΝΠϧͰఆٛ͞Ε͓ͯΓɺͦͷQSPUP͔Β ੜ੒͞ΕͨίʔυΛར༻͢Δ͜ͱͰύʔε͕ՄೳʹͳΓ·͢ɻ w ఆٛ͞ΕͨQSPUPϑΝΠϧ͸ҎԼʹଘࡏ͠·͢

    w IUUQTHJUIVCDPNHPPHMFBQJTHPPHMFBQJTCMPCNBTUFS HPPHMFBQJBOOPUBUJPOTQSPUP w QSPUPϑΝΠϧ͔Βੜ੒͞Εͨ(Pͷιʔείʔυ͸ҎԼʹଘࡏ͠·͢ w IUUQHPPHMFHPMBOHPSHHFOQSPUPHPPHMFBQJTBQJBOOPUBUJPOT
  14. 52 Ԡ༻ฤHPPHMFBQJ)UUQ3VMF w ޻਺͕େ෯ʹ૿͑Δͱݴ͏ׂʹࢥͬͨΑΓେมͰ͸ͳ͔ͬͨ  w )UUQ3VMFͷ࢓༷͸͜Ε͚ͩͰ͸ͳ͍ w ͜ΜͳPQUJPO΋ॻ͚ͯ͠·͏ʜ w

    ະରԠͳ࢓༷͸υΩϡϝϯτʹهࡌ͠·͠ΐ͏ ͭͷ31$ʹෳ਺ͷ)551ϦΫΤετ CPEZͷํΛϦΫΤετͷ ಛఆͷϑΟʔϧυʹ௚઀Ϛοϐϯά ͦͷଞʹ΋ύεύϥϝʔλɺ ΫΤϦʔετϦϯάͳͲ
  15. 54 Ԡ༻ฤ w QSPUP͔Β1PTUNBOͷKTPOͷϦΫΤετύϥϝʔλΛੜ੒͢Δ w ؆୯ʹͰ͖ͦ͏ͰɺͰ͖ͳ͍ύλʔϯ w ՝୊ w (Pͷ$SFBUF6TFS3FRVTUߏ଄ମ͕͋Ε͹ɺ+40/͸ੜ੒Ͱ͖Δ

    w ύʔεͨ࣌͠఺Ͱ͸(Pͷߏ଄ମͱͯ͠$SFBUF6TFS3FRVFTU͸ੜ੒ ͞Ε͍ͯͳ͍ɻී௨͸ҎԼͷϑϩʔ͕ඞཁʹͳΔ w ύʔεɺ(PͷϑΝΠϧग़ྗɺग़ྗͨ͠ϑΝΠϧͷϏϧυ͢Δ w ͭ·Γύʔεͨ͠ஈ֊Ͱ͸ɺ+40/Λ࡞Δ͜ͱ͸೉͍͠
  16. • ͸ ͡ Ί ʹ • . p r o

    t o ϑ Ν Π ϧ ͷ ύ ʔ ε ͱ ར ༻ • Ԡ ༻ ฤ • p r o t o ϑ Ν Π ϧ Λ ύ ʔ ε ͠ ͯ ͍ Δ π ʔ ϧ • · ͱ Ί
  17. 59 1SPUPDPM#V⒎FSTΛύʔε͍ͯ͠Δπʔϧ঺հ w HSQDHBUFXBZIUUQTHJUIVCDPNHSQDFDPTZTUFNHSQDHBUFXBZCZZVHVJ͞Μ w HPPHMFBQJ)UUQ3VMFΛ࢓༷௨Γʹύʔε͢Δؾ֓͋Δํ͸ࢀߟʹͳΔ w FWBOTIUUQTHJUIVCDPNLUSFWBOTCZLUS͞Μ w (31$DMJFOU

    w $-*Ϟʔυͱ3&1-Ϟʔυ͕͋Δɺ3&1-ϞʔυͰ͸ಈతʹิ׬͕ޮ͘ w KIVNQQSPUPSFqFDUΛ࠾༻ w QSPUPDHFOHPIUUQIUUQTHJUIVCDPNOBNFUBLFQSPUPDHFOHPIUUQCZOBNFUBLF ͞Μ w (31$ͱಉ͡ίʔυࣗಈੜ੒Λ)551Ͱ΋࣮ݱ͢ΔQSPUPDϓϥάΠϯ w $POUFOU5ZQFʹ͋Θͤͯ+40/PS1SPUP͔൑ఆͯ͠σγϦΞϥΠζ͢Δ w IUUQTHJUIVCDPNQTFVEPNVUPQSPUPLJUΛ࠾༻ w QSPUPUPQPTUNBOIUUQTHJUIVCDPNTPOBUBSEQSPUPUPQPTUNBOCZTPOBUBSE w QSPUP͔ΒQPTUNBOͷઃఆΛɺJNQPSUՄೳͳKTPOܗࣜͰग़ྗ͢Δ w KIVNQQSPUPSFqFDUΛ࠾༻
  18. • ͸ ͡ Ί ʹ • . p r o

    t o ϑ Ν Π ϧ ͷ ύ ʔ ε ͱ ར ༻ • Ԡ ༻ ฤ • p r o t o ϑ Ν Π ϧ Λ ύ ʔ ε ͠ ͯ ͍ Δ π ʔ ϧ • · ͱ Ί