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

giftee Product Book 2024

giftee Product Book 2024

株式会社ギフティのProduct Book 2024年版です。
2024年5月に開催された、RubyKaigi 2024にあわせて制作しスポンサーブースでも配布しました。
2023年のRubyKaigi 2023の際に制作したものに新たなコンテンツを追加しています。
特に「ギフティプロダクトエコシステム」を見ていただき、人・企業・街の間にさまざまな縁を育むサービスを提供するために多くのプロダクトが連携して価値提供していることを知っていただきたいです。
今回も、企画から執筆まで社内のエンジニアたちで制作しました。プロダクトづくりへの想いが伝わると嬉しいです。

giftee tech division

May 28, 2024
Tweet

Transcript

  1. Vision: ࢲ͕͍ͨͪͨ͜͠ͱ Mission: ࢲ͕ͨͪΊ͟͢͜ͱ e ΪϑτΛ࣠ͱͯ͠ɺਓɺاۀɺ֗ͷؒʹɺ ͞·͟·ͳԑΛҭΉαʔϏεΛఏڙ͢Δɻ ΩϞνͷ॥ ؀Λଅ ਐ͢Δ͜ͱͰɺ

    ΑΓΑ͍ؔ ܎Ͱͭͳ͕ͬͨࣾ ձΛͭ͘Δɻ eΪϑτΛૹ৴ ଃΓओ͕ΦϯϥΠϯߪೖ͠ૹ෇͢Δ डऔओ͕঎඼ͱަ׵͢Δ ଃΓओ डऔओ ۙ͘ͷళฮ ·ͨ͸ECαΠτ νέοτΛఏࣔ ର৅঎඼ͱަ׵ [http://giftee.co/r/f aPGfbJ] ͷΑ͏ͳ จࣈྻͰϢχʔΫͳURLͱͯ͠ੜ੒͞Ε·͢ͷͰɺ ϝʔϧ΍SNSͰ؆୯ʹૹ৴Ͱ͖·͢ eΪϑτͱ͸ ΪϑςΟ͕໨ࢦ͢ੈք ҿ৯ɾখചళฮͳͲͰ঎඼΍αʔϏεͱަ׵͢Δ͜ͱ͕Ͱ͖ΔɺσδλϧͷΪϑτνέοτͰ͢ɻ ΪϑςΟͷྺ࢙ ୭͔ͱͭͳ͕Δ͜ͱ͕ɺ͔ͬ͢Γखܰʹͳͬͨࠓɺ ୯ʹͭͳ͕Δ͚ͩͰͳ͘ɺ৺͋Δͭͳ͕Γ͕ٻΊΒΕ͍ͯΔΑ͏ʹࢥ͍·͢ɻ ͔͠͠ݱ࣮ͷࣾձ͸ɺ߹ཧੑ΍ޮ཰Λॏࢹ͗ͯ͢͠υϥΠͳؔ܎ʹͳΓ͕ͪɻ ΩϞνΛಧ͚ͨΓɺड͚औͬͨΓɺผͷਓʹ෼͚ͨΓɺ ͦΜͳਓؒతͳ݁ͼ͖ͭ͸ɺΉ͠Ζݮ͍ͬͯΔͷ͔΋͠Ε·ͤΜɻ ΪϑςΟ͸ɺeΪϑτΛ͸͡Ίͱ͢ΔαʔϏεΛఏڙ͢Δ͜ͱͰɺ ਓ΍اۀɺ֗ͳͲͷɺ͍ΖΜͳԑΛҭΈ͍ͨɻ ੈͷதʹͦ͏͍͏ɺԹ౓ײͷ͋Δͭͳ͕Γ͕૿͑Ε͹ɺ ;ͱͨ͠ΩϞν΋ɺදʹग़΍͘͢ͳΔɻ ΍͕ͯͦΕ͸εϜʔζʹ॥؀͠͸͡Ίɺ ΑΓΑ͍ؔ܎Ͱͭͳ͕ΔࣾձΛͭͬͯ͘͘ΕΔ͸ͣɻ ͦ͏৴ͯ͡ɺࢲͨͪ͸લ΁ͱਐΈ·͢ɻ ΩϞν͕॥؀͢Δࣾձ΁ גࣜձࣾΪϑςΟઃཱ gifteeαʔϏε։࢝ ๏ਓ޲͚αʔϏεఏڙ։࢝ ࣏ࣗମ޲͚αʔϏεఏڙ։࢝ giftee ձһ਺ 100 ສਓಥഁ ւ֎޲͚αʔϏεఏڙ։࢝ giftee BoxαʔϏε։࢝ giftee ձһ਺ 200 ສਓಥഁ ΪϑςΟ͸ɺe ΪϑτΛ༻͍ͯؾܰʹ೔ࠒͷؾ ࣋ͪΛ఻͑ΔCtoCΧδϡΞϧΪϑταʔϏε ʮgifteeʯ ͷఏڙ͔Βελʔτ͠ɺ๏ਓ޲͚ɺ ࣏ࣗମ޲͚ɺւ֎ͱࣄۀྖҬΛঃʑʹ֦େ͠ ͖ͯ·ͨ͠ɻ eΪϑτͷϦʔσΟϯάΧϯύχʔͱͯ͠ɺੈͷ தͷਓ͕೔ࠒͷؾ࣋ͪΛ఻͑Δखஈͱͯ͠ؾ ܰʹΪϑτΛଃΓ͋͏श׳΍จԽͷ૑ग़ʹऔ Γ૊ΈɺΑΓଟ͘ͷํʹར༻͞ΕΔΪϑταʔ Ϗεͷఏڙͱͦͷॆ࣮ʹ௅ઓ͍ͯ͠·͢ɻ Product Book P.3 RubyKaigi2024 P.2
  2. ͯ͠ΪϑτΛੜ੒Ͱ͖ΔΑ͏ʹͳ͍ͬͯ·͢ɻ͜ͷߏ੒ʹΑͬ ͯ৽͍͠Ϊϑτମݧͷ௥ՃΛ༰қͱ͢Δ֦ுੑΛ୲อͯ͠ ͍·͢ɻΪϑτ෇ՃՁ஋ྖҬʹ͸ɺe Ϊϑτʹ෇Ճ͢ΔΪϑτ Χʔυͷػೳ΍ɺϙΠϯτͷத͔Β޷͖ͳΪϑτʹަ׵Ͱ͖Δ giftee Boxɺ঎඼͕બ΂ΔλΠϓͷબ୒ܕΪϑτͳͲɺe Ϊ ϑτʹ༷ʑͳ෇ՃՁ஋ΛՃ͑ΔػೳΛఏڙ͢ΔϓϩμΫτ͕ ͋Γ·͢ɻ͜͜Ͱ΋ɺ৽ͨͳ෇ՃՁ஋Λॊೈʹ௥ՃͰ͖ΔΑ͏

    ੹຿͝ͱʹϓϩμΫτΛ෼͚ɺޮ཰తʹ઀ଓͰ͖ΔΑ͏ʹ͢Δ ͨΊϓϩΩγͷ໾ׂΛ࣋ͭϓϩμΫτΛ഑ஔ͍ͯ͠·͢ɻ eΪϑτͷྲྀ௨ྖҬͰ͸ɺݸਓ޲͚ɺ ࣏ࣗମ޲͚ɺ๏ਓ޲͚ͷ ֤ྖҬʹෳ਺ͷϓϩμΫτ͕͋Γɺ༷ʑͳαʔϏε͕ఏڙ͞ Ε͍ͯ·͢ɻ ͦͷଞɺड͚औͬͨΪϑτΛอଘͰ͖Δ gift Wallet ΍ɺϓ ϥοτϑΥʔϜશମʹԣஅతʹػೳఏڙ͢Δڞ௨ج൫ͳͲ͕ ͋Γɺ͜ΕΒͷଟ͘ͷγεςϜʹΑͬͯ෯޿༷͘ʑͳՁ஋ͷఏ ڙΛ࣮ݱ͍ͯ͠·͢ɻ ΪϑςΟ ϓϩμΫτΤίγεςϜ e G i f t S to re g i f te e ݸਓ޲͚ྲྀ௨ྖҬ ϙΠϯτϓϩάϥϜγεςϜ giftee PointBase ෱ ར ް ੜγεςϜ giftee Benefit ର ໘ ഑ ෍γεςϜ giftee Direct ΦϯϥΠϯ഑ ෍γεςϜ giftee Port ந બγεςϜ giftee CampaignPlatform ๏ਓ޲͚ྲྀ௨ྖҬ e ֗ Ϊϑτɾཱྀ ઌ ೲ ੫ ࣏ࣗମ޲͚ྲྀ௨ྖҬ g i f t Wa l l e t ͦͷଞΤϯυϢʔβʔ޲͚ྖҬ Τϯυ Ϣʔβʔ B to C B to E G to C C to C اۀϚʔέ ୲౰ऀ খച ྲྀ௨ ϙΠϯτ αʔϏε ϝʔΧʔ ମݧ ஍ํ࣏ࣗମ ੓෎ Ҋ ݅ ؅ ཧ toB جװγεςϜ DW H ࡒ ຿ ձ ܭ γεςϜ ൚ ༻ ೝ ূ ج ൫ ڞ௨ج൫ e ΪϑτϓϥοτϑΥʔϜ ഑ ૹ ܕ e Ϊϑτ e ֗ Ϊϑτ e tc ΦϯϥΠϯར ༻ ܕ e Ϊϑτ ళ ฮ ड͚औΓܕ e Ϊϑτ Ϊϑτੜ੒ྖҬ ίϯςϯπ ू ໿ ϓϩΩγ ௲Γ݊ e tc બ ୒ ܕ Ϊϑτ g i f te e B ox ΪϑτΧʔυ Ϊϑτ෇ՃՁ஋ྖҬ e Ϊϑτ ൃ ߦ ϓϩΩγ eΪϑτ΍ ϙΠϯτ ͰಘΛ͍ͨ͠ ͓ੈ࿩ʹͳͬͨ͋ͷਓʹ eΪϑτΛଃΓ͍ͨ eΪϑτΛΠϯηϯ ςΟϒʹͯ͠ɺ Ωϟ ϯϖʔϯΛ௿ίε τͰ࣮ࢪ͍ͨ͠ ஍ํʹདྷͯ΋Β͍͍ͨɻ ;Δ͞ͱೲ੫ͯ͠΋Β͍ ͍ͨ ൢചνϟωϧΛ૿΍ͨ͠ ͍ɻΪϑτΛଃΔ࣌ͷબ ୒ࢶʹೖΕͯ΋Β͍͍ͨ ΪϑςΟͰ͸ࣄۀશମΛe ΪϑτϓϥοτϑΥʔϜ ͱදݱͯ͠ ͍·͢ɻe Ϊϑτͷੜ੒͔Βྲྀ௨ɺར༻·ͰͷҰ࿈ͷମݧ͸ ༷ʑͳϓϩμΫτ͕࿈ܞ͢Δ͜ͱʹΑ࣮ͬͯݱ͞Ε͍ͯ·͢ɻ Ϊϑτੜ੒ྖҬ͸ɺe ΪϑτͷൃߦͱΪϑτͷར༻࣌ͷফࠐ ʢΪϑτར༻࣌ͷೝূॲཧʣ Λ୲͏ྖҬͰ͢ɻe Ϊϑτʹ͸ళ ฮར༻ܕɺΦϯϥΠϯܕɺ഑ૹܕɺe ֗ΪϑτͳͲ͕͋Γɺͦ ΕͧΕϢʔβʔମݧ΍ۀ຿ϓϩηεɺεςʔΫϗϧμʔ͕ҟ ͳΔͨΊผʑͷγεςϜͱͯ͠ߏங͍ͯ͠·͢ɻෳ਺͋ΔΪϑ τίϯςϯπΛޮ཰తʹར༻͢ΔͨΊͷج൫ͱͯ͠ίϯςϯ πू໿ϓϩΩγ͕͋ΓɺଞͷྖҬ͔Β͸͜ͷϓϩΩγΛܦ༝ Product Book P.5 RubyKaigi2024 P.4
  3. g i f t e e ͸ΦϯϥΠϯͰ ख ܰ ʹΪϑτΛଃ

    ΕΔ αʔϏεɻ ʮ͋Γ͕ͱ͏ʯ ʮ͓ΊͰͱ͏ʯ ʮ͓͔ͭΕ ͞·ʯͳͲͷΩϞνʹఴ͙͑ͯ͢ʹଃΕΔΧδϡ ΞϧΪϑτΛऔΓଗ͍͑ͯ·͢ɻϝʔϧ΍ LINEɺ Twitter ͳͲΛհ͠ɺ௚઀ձ͑ͳ͍૬ख΍ɺॅॴ Λ஌Βͳ͍૬खʹ΋ؾܰʹଃΔ͜ͱ͕Ͱ͖·͢ɻ gifte ͸ C2C ͷϓϩμΫτͳͷͰɺΪϑτΛड͚औ Δଆ͚ͩͰͳ͘ଃΔଆͷϢʔβʔମݧʹ΋ϑΥʔΧ εͯ͠ߟ͑Δ͜ͱΛେࣄʹ͍ͯ͠·͢ɻ ݸਓ޲͚αʔϏεͰ͸ɺ Ϣʔβʔ͕ԿΛٻΊ͍ͯΔ ͷ͔ɺਖ਼ղ͕෼͔ΓͮΒ͍෦෼΋͋Γ·͢ɻ·ͨػ ೳ։ൃʹ͋ͨͬͯ͸ɺϢʔβʔ͔ΒಘΒΕΔϑΟʔ υόοΫ͚ͩͰͳ͘ɺજࡏతͳχʔζΛԾఆ࣮ͯ͠ ૷͢Δ͜ͱ΋͋ΔͷͰɺͦΕ͕ඞͣ͠΋ਖ਼ղͰ͸ͳ ͍ͱ͍͏͜ͱ΋͋Γ·͢ɻ͜ͷͨΊػೳΛ࡞ͬͯϦ Ϧʔε͢Δ͚ͩͰͳ͘ɺϢʔβʔʹྑ͍ମݧΛఏڙ Ͱ͖͍ͯΔͷ͔Λ೺Ѳ͢ΔͨΊɺৗʹޮՌଌఆ͢Δ ͜ͱΛେࣄʹ͍ͯ͠·͢ɻͦͷଞʹ΋ɺTwitter ্ ͰͷϢʔβʔͷ౤ߘ΍ΞϓϦͷϨϏϡʔɺϝʔϧͰ ͷΞϯέʔτ౳ͰϢʔβʔͷ੠ΛूΊɺମݧͷվ ળʹ׆͔͍ͯ͠·͢ɻ ௚઀Ϣʔβʔͷํ͔ΒಛఆͷػೳͷχʔζΛฉ͘͜ͱ͕Ͱ͖ΔΘ͚ Ͱ͸ͳ͍ͷͰɺϢʔβʔͷମݧΛԾઆ͔Βߟ͑Δࣄ͕ଟ͘ɺ૝૾ྗ Λಇ͔ͤΔ༨஍͕͘͢͝େ͖͍ͷ͸ָ͍͠ͱ͜ΖͰ͢ͶɻϢʔβʔಛ ੑͷཧղ͕ਂ·Γɺͦͷ্Ͱ૝ఆ͕ϑΟοτͨ͠ͱ͖͸ຊ౰ʹ໘ന͍ Ͱ͢͠ɺ τϥΠΞϯυΤϥʔΛ܁Γฦͯ͠ճ౴Λ୳͠ʹߦ͘໘ന͕͞ ͋Γ·͢ɻ ·ͨɺ஌Γ߹͍͕࢖͍ͬͯΔͷΛݟͨΓฉ͍ͨΓ͢Δͱخ͍͠Ͱ͢ Ͷɻࣗ෼ͷ஌Βͳ͍ͱ͜ΖͰ࢖ΘΕ͍ͯ ͯɺΪϑτΛଃΓ߹͏ͱ͍͏୭΋ଛ͠ͳ ͍ମݧΛࣗ෼ͨͪͷ࡞ͬͨ΋ͷͰੜΈग़ ͍ͯ͠Δ͜ͱ͕ײ͡ΒΕΔͱɺͱͯ΋΍Γ ͕͍Λײ͡·͢ɻ ࠓޙͷ՝୊ͱͯ͠͸ɺ঎඼·Ͱͷಈઢ΍αδΣετΛ޻෉͢Δ͜ͱ͕ ڍ͛ΒΕ·͢ɻ೥ʑ঎඼ͷϥΠϯφοϓ͕ॆ࣮͍ͯͯ͠ɻͦΕࣗମ͸ ͱͯ΋ྑ͍͜ͱͳͷͰ͕͢ɺϢʔβʔ͕΋ͬͱ͍ΖΜͳ঎඼ʹ৮ΕΒ ΕΔΑ͏ʹɺվળ͍͖͍ͯͨ͠ͱࢥ͍ͬͯ·͢ɻ ٕज़બఆͷ൑அࡐྉΛจষͱͯ͠࢒ͨ͢ΊʹɺADRʢΞʔ ΩςΫνϟ ɾσγδϣϯɾ Ϩίʔυʣ Λಋೖ͍ͯ͠·͢ɻϦϙδ τϦ಺ʹADRΛ࢒͢͜ͱͰ ʮͳͥ͜ͷ࢓༷ʹͳ͍ͬͯΔͷ͔ʯ ʮҰݟ A ͷ΄͏͕ྑͦ͞͏͕ͩ B ʹ͍ͯ͠Δཧ༝ʯͳͲɺ൑ அͷཤྺ͕࢒Γɺޙ͔ΒδϣΠϯͨ͠ΤϯδχΞʹ΋ҙࢥܾ ఆͷܦҢ͕ڞ༗Ͱ͖ΔΑ͏ʹͳ͍ͬͯ·͢ɻADR ͸ɺকདྷత ʹ͜ΕΛೖΕͨ΄͏͕͍͍ͷͰ͸ʁͱ͍͏த௕ظతͳࢹ఺ʹ ཱͬͨٞ࿦΍൑அʹ΋໾ཱͪ·͢ɻ ADRͷλΠτϧʹ͸࡞੒೔࣌ΛೖΕ͍ͯ·͢ɻADR͸ͦͷ࣌ ఺ͷஅ໘ͱͯ͠࢒͢͜ͱΛ໨తͱͯ͠ΔͨΊͰ͢ɻ αʔϏε͕ܧଓ͢ΔݶΓϓϩμΫτ͕׬੒͢Δ͜ͱ͸͋Γ· ͤΜɻ͜Ε͸υΩϡϝϯτʹ΋ݴ͑Δ͜ͱͰ͢ɻ׬શͳ৘ใྔ ͷυΩϡϝϯτΛ࡞੒ɾҡ࣋͢ΔͷͰ͸ͳ͘ɺٕज़తͳ൑அͷ ཤྺΛ࢒͢͜ͱͰɺকདྷతʹՁ஋ͷ͋Δ৘ใͱ͢Δ͜ͱ͕Ͱ ͖·͢ɻ ADRʹΑΔٕज़తͳ൑அͷه࿥ giftee ͸૑ۀ͔࣌Β͋ΔϓϩμΫτͰɺؔ܎͢ΔεςʔΫϗ ϧμ΋ଟ͘։ൃςʔϚ΋ଟذʹΘͨΓ·͢ɻ͜ͷͨΊɺ։ൃ νʔϜ͕ݱࡏԿʹऔΓ૊ΜͰ͍ͯ͜ͷઌͲ͜ʹ޲͔͍ͬͯ͘ ͷ͔ΛλΠϜϦʔʹ೺ѲͰ͖Δಁ໌ੑ͕ٻΊΒΕ·͢ɻ νʔϜͷ։ൃ଎౓ɺ ϦϦʔε·Ͱͷ࢒ετʔϦʔϙΠϯτΛશ һ͕೺ѲͰ͖ΔΑ͏ʹͯ͠ɺৗʹνʔϜͷ ʮݱࡏ஍ʯ ͕෼͔Δ Α͏ʹ͍ͯ͠·͢ɻ ͜ͷಁ໌ੑʹΑͬͯɺλεΫ΁ͷޮՌతͳΞϓϩʔνํ๏΍ ༏ઌ౓͕ਖ਼͘͠ݕ౼Ͱ͖ΔΑ͏ʹͳΓ·͢ɻ ·ͨɺ ։ൃͷਐߦதʹൃੜٕͨ͠ज़తͳ໰୊ɺ ։ൃϓϩηε ɾ λεΫґଘੑʹؔ͢Δ໰୊౳Λϝϯόʔ಺Ͱ૬ஊ͠΍͍͢Α ͏ͳؔ܎ͮ͘ΓΛҙ͍ࣝͯ͠·͢ɻ νʔϜͷݱࡏ஍ʹϑΥʔΧε Engineering Inside Ϣʔβʔͷମݧͱ޲͖߹͏ϑΟʔυόοΫϧʔϓ ઓ ུ ܭ ը ΠςϨʔγϣϯ M TG ϦϦʔε ܭ ଌɾ෼ ੳ ։ ൃ #com_feedback Twitter ͓໰͍߹Θͤ ΞϓϦϨϏϡʔ ϑΟʔυόοΫ ٕज़ελοΫ ΪϑτͷλΠϓ ΤϯδχΞ I-NO ։ൃݴޠ ŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋ Ruby ϑϨʔϜϫʔΫ ŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋ Ruby on Rails ϑϩϯτΤϯυ ŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋ Vue.js ϑϩϯτΤϯυϑϨʔϜϫʔΫ ŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋ Nuxt.js σβΠϯϑϨʔϜϫʔΫ ŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋ Vuetify API ŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋRESTful APIɺ GraphQL σʔλϕʔε ŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋ Aurora MySQL KVS ŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋ Redis CI/CD ŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋ GitHub Actions Ϋϥ΢υαʔϏε ŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋ AWS ߏ੒؅ཧ ŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋ Terraform αʔϏε؂ࢹ ŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋ New Relic ϞόΠϧΞϓϦ ŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋ Flutter ళฮͰड͚औΓ ֎෦αΠτͰར༻ ࢦఆॅॴ΁഑ૹ ళฮͰͷձܭ࣌ʹνέοτΛఏࣔͯ͠ɺ Ϊϑτͷड͚औΓɺ·ͨ͸αʔϏεͷఏ ڙΛड͚ΔλΠϓͷΪϑτͰ͢ɻ γϦΞϧίʔυͳͲΛೖྗ͢Δ͜ͱͰɺ ର৅ͷΦϯϥΠϯαʔϏεΛར༻͢Δ λΠϓͷΪϑτͰ͢ɻ ड͚औΓखʹ͓ಧ͚ઌͷॅॴΛࢦఆ͠ ͯ΋Β͍ɺ഑ૹख഑Λͯ͠΋Β͏λΠϓ ͷΪϑτͰ͢ɻ ൃߦ͞ΕͨURLΛSNS΍ϝʔϧͰૹ৴ ࢖͍ํ ΪϑτΧʔυΛબͼϝοηʔδΛೖྗ ૬ख΍γʔϯʹ߹ͬͨΪϑτΛબͿ Product Book P.7 RubyKaigi2024 P.6
  4. eGift System ͷҰ෦ϒϥϯυͰ͸ࣄલʹϒϥϯυଆͷγε ςϜͰൃߦͨ͠ίʔυΛ eGift System ʹΠϯϙʔτ͓ͯ͠ ͖ɺνέοτൃߦ࣌ʹඥ͚ͮΔܗଶΛ࠾༻͍ͯ͠·͢ɻ͜ͷࡍ ʹߴෛՙ࣌Ͱ΋҆ఆͯ͠ίʔυΛ෷͍ग़͢࢓૊Έ͕ॏཁʹͳ Γ·͢ɻ

    ॳظͷ eGift System Ͱ͸ɺࠨਤͷΑ͏ͳςʔϒϧߏ଄ʹ ͳ͓ͬͯΓɺҎԼͷΑ͏ͳ໰୊͕͋Γ·ͨ͠ɻ( ˞࣮ࡍͷςʔ ϒϧͱҟͳΔ෦෼͕͋ΔͨΊෆࣗવͳ෦෼͕͋Δͱࢥ͍·͢ ͕͓ݟಀ͍ͩ͘͠͞) 1. ίʔυΠϯϙʔτ࣌ͷൃߦ଎౓͕஗͍ ( ࣄલʹೖΕ͓ͯ͘ ίʔυ͕ଟ͍΄Ͳக໋తͳ஗͞ʹͳΔ) 2. ߴෛՙ࣌ʹಉҰͷ codesϨίʔυΛऔಘ͠ʹߦͬͯൃߦ ΤϥʔʹͳΓ΍͍͢ 3. codes ςʔϒϧʹൃߦࡁͱະඥ෇͚ͷ 2 छྨͷίʔυ͕ ࠞࡏ͠ɺηϨΫτ࣌ʹແବ͕ଟ͘ूܭ͕ॏ͘ͳΔ ͦ͜ͰҎԼͷΑ͏ͳमਖ਼ΛՃ͑·ͨ͠ɻ ӈਤͷΑ͏ʹൃߦࡁ (codes)ͱະඥ෇͚ͷίʔυ(item_co des)ͷ2ͭͷςʔϒϧʹ෼͚Δ͜ͱͰແବͳηϨΫτΛͳ͘͢ɻ ࣍ʹɺΠϯϙʔτ୯ҐͰ࡞੒͞ΕΔitem_code_boxesςʔ ϒϧʹηϨΫτ։࢝Ґஔ (current_position)Λ࣋ͭ͜ͱͰɺ ҰճͷΠϯϙʔτͰ਺ेສ݅ͷΑ͏ͳΠϯϙʔτ͕͋ͬͨࡍ ʹɺςʔϒϧεΩϟϯ͢ΔΤϦΞΛখ͘͞Ͱ͖ɺ ίʔυ෷͍ग़ ͠Λߴ଎ԽͰ͖·͢ɻ͜Ε͸ɺޙΖͷํͷίʔυΛ෷͍ग़͢৔ ߹ʹಛʹޮՌ͕͋Γ·͢ɻ ·ͨɺ ίʔυ෷͍ग़࣌͠͸ɺ։࢝Ґஔ͔ΒίʔυΛෳ਺݅औ ಘͯ͠ɺͦͷத͔ΒϥϯμϜʹબ୒ͯ͠෷͍ग़͢Α͏ʹ͠·͢ɻ ͜ΕʹΑΓɺߋ৽͢ΔΩʔ͕෼ࢄ͞ΕΔͨΊɺಉ࣌෷͍ग़͠ ࣌ʹಉҰΩʔΛߋ৽͢ΔՄೳੑΛݮΒ͢͜ͱ͕Ͱ͖·ͨ͠ɻ ͜Ε͸ҰྫͰ͕͢ɺeGift SystemͰ͸͜ͷΑ͏ͳํ๏Ͱ҆ ఆͨ͠ίʔυ෷͍ग़͠ͷ࢓૊ΈΛ࣮ݱ͍ͯ͠·͢ɻ SaaSͱͯ͠e ΪϑτΛఏڙ͍ͯ͠ΔͨΊɺ൚༻ੑΛҙࣝͯ͠ ։ൃ͍ͯ͠·͢ɻ೥ʑϒϥϯυ਺͕૿Ճ͠ɺͨ͘͞Μͷཁ๬͕ ͋ΔதͰ SaaSͱͯ͠ͷ൚༻ੑΛอͪͭͭͲ͏औΓࠐΜͰ͍͘ ͷ͔ɻͨͩཁ๬௨Γʹ࣮૷͢ΔͷͰ͸ͳ͘ɺ ϏδωεαΠυͱ ٞ࿦͠ͳ͕Βམͱ͠ॴΛܾΊ͍ͯ͘Α͏ʹ͍ͯ͠·͢ɻ ։ൃʹ͓͍ͯେࣄʹ͍ͯ͠Δ͜ͱ eGift System ߴෛՙʹ଱͑͏Δίʔυ෷͍ग़͠ ΪϑςΟ͕ఏڙ͢Δ༷ʑͳαʔϏεͱ࿈ܞ͢Δɺe Ϊϑτࣄۀͷج ൫ʹͳ͍ͬͯΔϓϩμΫτͷͨΊɺνʔϜશମͰڧ͍੹೚ײΛ࣋ͬ ͯ։ ൃʹܞΘ͍ͬͯ·͢ɻ·ͨɺΤϯδχΞ͔Β͜͏΍͍ͬͯ͜͏ ͱҙݟΛग़ͯٞ͠࿦Ͱ͖Δ؀ڥͰ͋Δͷ΋ɺͱͯ΋ྑ͍ͱ͜Ζͩͱ ࢥ͍ͬͯ·͢ɻ ࠓޙͷ՝୊ͱͯ͠͸ɺϕτφϜ΍ΠϯυωγΞΛ͸͡Ίւ֎ਐग़͕ ਐΉதͰɺ৭ʑͱग़ͯ͘Δࠃ ಛ ༗ͷࣄ ৘ͱͲ͏޲͖߹͏͔͕ ڍ͛ ΒΕ·͢ɻϒϥϯυ͚ͩͰͳ͘ࠃ΋ଟछଟ༷ʹͳΔதͰɺSaaS ͱ ͯ͠ͷ͋Δ΂͖ܗΛҙࣝ͢Δ͜ͱ͕ɺΑΓҰ૚ॏཁʹͳ͍ͬͯΔͱ ࢥ͍ͬͯ·͢ɻ Engineering Inside eGift System ͸ɺeΪϑτ ʢళ಄ͰҾ͖׵͑Δ͜ͱͷͰ͖ΔσδλϧͷΪϑτνέοτʣ ͷੜ੒ ͱফࠐΛ୲͏ϓϩμΫτͰ͢ɻtoC/toB ޲͚ʹൃߦ͞ΕΔeΪϑτ͕͜͜Ͱੜ੒͞Εɺ༷ʑͳγ εςϜͱ࿈ܞ͢ΔɺeΪϑτࣄۀͷத֩ͱͳΔγεςϜͰ͢ɻ ళ಄ར༻ͷ e Ϊϑτͷফࠐ͸ɺPOSɺઐ༻୺຤ɺ ίʔυೝূɺిࢠελϯϓɺQRίʔυಡࠐͳ Ͳෳ਺ͷखஈʹରԠ͍ͯ͠·͢ɻྑ࣭ͳίϯςϯπΛ֦ॆ͢Δ͜ͱ͕ e Ϊϑτࣄۀͷ੒௕ʹͭ ͳ͕ΔͨΊɺΪϑτܗଶͷ༷ʑ ͳόϦΤʔγϣϯͳͲ൚༻తͳ χʔζʹԠ͑Δ΂͘ɺػೳڧԽ ʹऔΓ૊ΜͰ͍·͢ɻ ·ͨɺϒϥϯυ޲͚ͷ؅ཧը໘ ΍ɺࣗࣾ E C αΠτͰΪϑτν έοτͷൢചػೳΛఏڙ͍ͨ͠ ϒϥϯυ޲͚ʹ e Ϊϑτͷࣗࣾ ൢചը໘΋ఏڙ͍ͯ͠·͢ɻ डऔओ ଃΓओ ళฮ اۀ eGift System .ফ͠ࠐΈ .࣮੷֬ೝ .དྷళ .঎඼ఏڙ .ΪϑτΛଃΔ .ܾࡁ Ϊϑτधཁ֫ಘ ళฮૹ٬ޮՌ ϒϥϯυՁ஋޲্ ৽͍͠Ϊϑτधཁͷ։୓ʹΑΓ ച্֦େ ΪϑτΛར༻͢ΔͨΊʹ དྷళ͠ซച΋ Ϊϑτจ຺Ͱͷ঎඼ೝ஌ɾ࿐ग़ ʹΑΔϒϥϯυΠϝʔδ޲্ eGift System ར༻ϝϦοτ ٕज़ελοΫ ։ൃݴޠ ŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋ Ruby ϑϨʔϜϫʔΫ ŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋ Ruby on Rails ϑϩϯτΤϯυ ŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋ jQuery, Bootstrap Πϯϑϥ ŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋ AWS σʔλϕʔε ŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋ Aurora MySQL, Redis CI/CD ŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋ CircleCI ߏ੒؅ཧ ŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋAnsible αʔϏε؂ࢹ ŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋ Sentry, New Relic Product Book P.9 RubyKaigi2024 P.8
  5. giftee Box Ͱ͸ॳճͷ։෧࣌ʹΞχϝʔ γϣϯ͕࠶ੜ͞Εɺड͚औͬͨϙΠϯτ਺ ͕ΞχϝʔγϣϯͷதͰදࣔ͞ΕΔΑ͏ʹ ͳ͍ͬͯ·͢ɻ͜ͷϙΠϯτ਺͸ݻఆͷς ΩετͰ͸ͳ͍ͨΊɺΞχϝʔγϣϯʹಈ తͳςΩετཁૉؚ͕·ΕΔ͜ͱʹͳΓ· ͢ɻ͜ΕΛLottieͰ࣮ݱ͢Δͷ͸೉͍͠՝ ୊Ͱ͢ɻ

    LottieͰςΩετΛߋ৽͢Δࡍʹ͸ɺupd ateDocumentDataͱ͍͏APIΛར༻͢ Δ͜ͱ͕Ͱ͖·͢ɻ͔͠͠ɺมߋର৅ͱͳΔ ςΩετ(svg ͷ element) ͸ɺࣗྗͰ୳ ͢͜ͱʹͳΓ·͢ɻ͜Ε͸ɺLottie ʹมߋ ՄೳͳཁૉΛ୳ͨ͠Γ൑ఆͨ͠Γ͢Δ API ͕ͳ͍ͨΊͰ͢ɻ·ͨɺಈతʹςΩετΛม ߋ͢ΔͨΊʹ͸ɺඞཁͳϑΥϯτ৘ใΛͲ͜ Ͱ͔࣋ͭʹ͍ͭͯ΋ซͤͯߟ͑Δඞཁ͕͋ Γ·͢ɻ ͦͷͨΊσβΠφʔʹ͸ɺςΩετ෦෼ͷ ΈͷϨΠϠʔΛ࡞ΓͦΕΛ࠷ॳͷϨΠϠʔ ʹͯ͠΋Β͏͜ͱɺඞཁͳจࣈ͸͢΂ͯΞχ ϝʔγϣϯ಺෦ʹؚΊͯ࡞੒ͯ͠΋Β͏͜ ͱʹ͠·ͨ͠ɻ ͜ͷ લ ఏ ͷ΋ͱɺӈ ͷΑ͏ͳ ࣮ ૷ͰΞχ ϝʔγϣϯ্ͷςΩετཁૉΛಈతʹมߋ ͍ͯ͠·͢ɻ·ͨɺ͜ͷΑ͏ͳ࢓૊ΈΛϥο ϓ͢ΔίϯϙʔωϯτΛ React Ͱ࡞੒͠ɺ ར༻͍ͯ͠·͢ɻ giftee Boxͷ։ൃͰ͸ɺ ΪϑτΛड͚औΔ ਓʹ΋ͬͱخ͘͠ͳΔΑ͏ͳମݧΛఏڙ͠ ͍ͨͱ͍͏ࢥ͍͕͋Γ·ͨ͠ɻ͜ͷମݧΛͭ ͘ΔͨΊͷԋग़ͱͯ͠ը໘಺ʹͪΐͬͱͨ͠ ΞχϝʔγϣϯදࣔΛՃ͍͑ͯͯɺ͜ͷ࣮ ݱͷͨΊʹLottieͱ͍͏Airbnb ͕ఏڙ͠ ͍ͯΔΞχϝʔγϣϯ࡞੒ɾදࣔ༻ͷϥΠϒ ϥϦΛ࠾༻͍ͯ͠·͢ɻ LottieΛར༻ͨ͠svgΞχϝʔγϣϯ࠶ੜ ͷίʔυྫ͸ӈͷ௨ΓͰ͢ɻ ίʔυͷ௨ΓɺLottie ͸ json ܗࣜͰΞχ ϝʔγϣϯσʔλΛड͚औͬͯ࠶ੜ͠·͢ɻ͜ͷͨΊɺ ΞχϝʔγϣϯΛ࡞੒͢ΔσβΠφʔͱͦͷΞχϝʔγϣϯΛWebͰ࠶ ੜͤ͞ΔΤϯδχΞͷ΍ΓऔΓ΋ඇৗʹ؆୯ʹͳΓ·͢ɻ σβΠφʔ͸Adobe Affter EffectsͰ࡞੒ͨ͠Ξχϝʔγϣϯ jsonʹॻ͖ग़͠ɺΤϯδχΞ͸ͦͷjsonΛड͚औͬͯɺLot tieͰಡΈࠐΜͰ࠶ੜΛ͠·͢ɻ͜ΕʹΑͬͯσβΠφʔ͸֤छϓϥοτϑΥʔϜ(Web, Native App)ʹ͓͚ΔΞχϝʔγϣϯ ࠶ੜํ๏ͷҧ͍Λؾʹ͢Δඞཁ͕ͳ͘ͳΓɺΤϯδχΞ͸ɺ ΞχϝʔγϣϯͷৄࡉΛؾʹ͢Δඞཁ͕ͳ͘ͳΓ·͢ɻ LottieͰσβΠφʔͱΤϯδχΞ͕ڠௐͯ͠ΞχϝʔγϣϯΛ࣮ݱ͢Δ ςΩετ͕ಈతʹมΘΔΞχϝʔγϣϯΛͲ͏࣮ݱ͍ͯ͠Δ͔ʁ giftee Boxͷඒ͍͠Ξχϝʔγϣϯٕज़ giftee Box ར༻ͷྲྀΕ giftee Box͸໿ 1,000 छྨͷϥΠϯφοϓͷத ͔Βɺ޷͖ͳ঎඼Λࣗ༝ʹ͑ΒͿ͜ͱ͕Ͱ͖ΔΪ ϑτͰ͢ɻίϯϏχ΍ΧϑΣɺ ϑΝογϣϯ͔ΒϨ δϟʔ·Ͱ෯޿͍γʔϯͷΪϑτΛऔΓଗ͍͑ͯ ·͢ɻ ๏ਓ͕ giftee Box Λ׆༻͢Δ͜ͱͰɺϢʔβʔ ͷຬ଍౓ΛߴΊΔͱͱ΋ʹɺैདྷͷۚ݊΍Ϊϑτ ݊ͷ഑෍Ͱ͸औಘͰ͖ͳ͔ͬͨ৽ͨͳϚʔέςΟ ϯάσʔλͷ֫ಘΛ࣮ݱͰ͖·͢ɻgiftee Box Λ௨ͯ͠Ϣʔβʔ͕ຊ౰ʹཉ͔ͬͨ͠঎඼ΛՄ ࢹԽ͢Δ͜ͱ͕Ͱ͖ΔͨΊɺϢʔβʔཧղΛਂΊ Δσʔλͷऔಘ͕ՄೳͰ͢ɻ ঎඼Ұཡ͔Βަ׵͍ͨ͠঎඼Λબ୒ ঎඼ৄࡉΛ֬ೝͯ͠ɺΪϑτަ׵΁ ݅਺Λબ୒ͯ͠ަ׵Λ֬ఆ ަ׵঎඼Ұཡ͔ΒνέοτΛදࣔ ٕज़ελοΫ ։ൃݴޠ ŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋ Ruby ϑϨʔϜϫʔΫ ŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋ Ruby on Rails ϑϩϯτΤϯυ ŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋ React, Redux Πϯϑϥ ŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋ EKS, Terraform σʔλϕʔε ŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋ Aurora MySQL CI/CD ŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋ GitHub Actions ߏ੒؅ཧ ŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋ Terraform αʔϏε؂ࢹ ŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋ Sentry, New Relic Product Book P.11 RubyKaigi2024 P.10
  6. ΪϑςΟCTOͷ༄੉Ͱ͢ɻ ΧδϡΞϧΪϑτͷ giftee ͔Βελʔτͨ͠౰ࣾ͸ ʰe ΪϑτΛ࣠ͱͯ͠ɺਓɺاۀɺ֗ͷؒʹɺ͞·͟ ·ͳԑΛҭΉαʔϏεΛఏڙ͢Δʱ ͱ͍͏Ϗδϣϯ ͷ΋ͱɺ๏ਓ޲͚΍஍ํ࣏ࣗମ޲͚ɺւ֎޲͚ͳ Ͳ෯޿͘ࣄۀΛల։͍ͯ͠·͢ɻ͋ΒΏΔ΋ͷΛ࠷

    దͳܗͰɺ खܰʹΪϑτͱͯ͠ଃΔ͜ͱΛՄೳͱ͢Δ ʰGiftify Everythingʱ ͷ࣮ݱʹ޲͚ͯɺ֤ࣄۀ ͰϓϩμΫτΛى఺ͱͨ͠Ձ஋ఏڙʹऔΓ૊ΜͰ͍ ·͢ɻ ͜ͷτʔΫηογϣϯͰ͸ɺݱ৔Ͱ։ൃΛϦʔυ͠ ͍ͯΔΤϯδχΞͨͪʹɺͦΕͧΕ͕޲͖߹͍ͬͯ Δ՝୊ͱνϟϨϯδɺ ϓϩμΫτͮ͘Γͷ΍Γ͕͍Λ ޠͬͯ΋Β͍·ͨ͠ɻ ೉қ౓ͷߴ͍՝୊Λղ͘ɺΤϯδχΞͱ͠ ͯͷ໘ന͞ ᴷ Ͱ͸·ͣ nakaya͘Μ͔Βɺݱࡏ։ൃ͍ͯ͠ ΔϓϩμΫτΛ঺հ͍ͯͩ͘͠͞ nakaya: ࣗ෼͕։ൃΛ୲౰͍ͯ͠Δͷ͸ɺ ΪϑςΟ ͕औΓѻ͏͋ΒΏΔΪϑτΛɺॊೈʹɺ҆શʹɺޮ཰ తʹఏڙͰ͖ΔΑ͏ʹ͢ΔͨΊͷڞ௨ൃߦج൫Ͱ͢ɻ ΪϑςΟ͕औΓѻ͏Ϊϑτʹ͸͍͔ͭ͘छྨ͕͋Γ ·͢ɻళ಄Ͱར༻͢ΔλΠϓͷeΪϑτҎ֎ʹ΋ɺ഑ ૹܕΪϑτ΍࣏ࣗମ޲͚ͷ e ֗ΪϑτͳͲ͕͋Γɺ ͦΕͧΕ޲͖߹͏ࣄۀྖҬ͕ҟͳΔͨΊผʑͷγ εςϜͱͯ͠ߏங͍ͯ͠·͢ɻ͜ΕΒͷΪϑτΛྲྀ௨ ͤ͞Δ࢓૊Έ΋ɺݸਓ޲͚΍๏ਓ޲͚ɺ ࣏ࣗମ޲͚ ͱෳ਺ଘࡏ͍ͯ͠ΔͨΊɺͦΕͧΕ͕ಠࣗʹͭͳ͗ ͜Ή͜ͱʹͳͬͯ͠·͍·͢ɻͦ͜ͰΪϑτൃߦΛڞ ௨Խ͢Δج൫Λߏஙͯ͠ɺΪϑτൃߦͷ APIΛू໿ ͢Δ͍Θ͹ϓϩΩγͱ͢Δ͜ͱʹΑͬͯɺAPI ͷ઀ ଓϧʔτͱίϛϡχέʔγϣϯύεΛू໿Ͱ͖ΔΑ ͏ʹ͠·ͨ͠ɻ ᴷ ͜ͷج൫։ൃͷ೉͍͠ͱ͜Ζɺ໘ന͍ͱ͜ ΖΛڭ͍͑ͯͩ͘͞ nakaya: ೉͠͞Ͱݴ͑͹ɺٻΊΒΕΔυϝΠϯ஌ ࣝͷ෯޿͞Ͱ͢ɻΪϑτΛൃߦ͔ͯ͠ΒΤϯυϢʔ βʔʹಧ͚Δ·Ͱͷ΄΅͢΂ͯͷυϝΠϯΛཧղ͢ Δඞཁ͕͋Γ·͢ɻ ٕज़తͳ೉͠͞Ͱ͸ɺ൚༻ੑΛͲ͏୲อ͢Δ͔Ͱ͢ ͶɻΪϑτʹ͸୯Ұͷ΋ͷ͚ͩͰͳ͘௲Γͷ΋ͷɺ Χ λϩάΪϑτ΍બ୒ΪϑτͳͲଟ͘ͷछྨ͕͋ͬͯɺ ͦΕͧΕͷཁ݅Λ૝ఆͨ͠൚༻ੑɾ֦ுੑͷ୲อ ͕ඞཁͰ͕͢ɺ൚༻ੑͱෳࡶੑ͸τϨʔυΦϑͷؔ ܎ʹ͋ΔͨΊόϥϯεΛͱΔͷ͕ͱͯ΋೉͍͠Ͱ͢ɻ Ͱ΋ɺͦͷ೉͕͠͞ΤϯδχΞͱͯ͠ͱͯ΋໘ന͍ ෦෼ͩͱࢥ͍·͢ɻ ᴷ ೉͠͞΁ͷνϟϨϯδΛָ͠ΜͰ͍Δͷ ͕͍͍Ͱ͢Ͷ nakaya: ϒϥϯυͷ࣋ͭίϯςϯπΛͦͷ·· e Ϊϑτʹͯ͠ൢച͢ΔαʔϏε͸ଞʹ΋͋Γ·͕͢ɺ ΪϑςΟ͕ग़ͤΔՁ஋ͱͯ͠͸ɺͦ͜ʹ෇ՃՁ஋Λ ͚ͭͯΑΓΑ͍Ϊϑτମݧɺ৽͍͠ιϦϡʔγϣϯΛ ࡞͍ͬͯ͘͜ͱͩͱࢥ͍ͬͯ·͢ɻ؆୯ͳ͜ͱͰ͸ͳ ͍Ͱ͕͢ɺͦͷ೉͠͞΍ෳࡶ͞Λࣗ෼͕ٕͨͪज़త ʹղܾ͢Δ͜ͱͰɺΑΓΑ͍Ձ஋ΛఏڙͰ͖ΔΑ͏ ʹͳΓ·͢ɻ ୅දͷଠా͞Μ͕ݴ͏ͱ͓Γ ʮe Ϊϑτ͸Ԡ༻ྗ͕ ͋Δίϯςϯπʯ ͩͱࣗ෼΋ࢥ͍ͬͯͯɻ͏ͪͷձࣾ ͸toCͷeΪϑτൢച͔Β͸͡·ͬͯɺ͍·Ͱ͸toB ΋͋Δ͠toG ʢ࣏ࣗମ޲͚ʣ ΋͋Δɻίϯςϯπ΋ి ࢠΪϑτ͚ͩͰ͸ͳ͘ΧελϜΞύϨϧͳͲϞϊͷ ྖҬͳͲʹ֦େ͠ɺ౰ॳߟ͍͑ͯͨҎ֎ͷ͍ΖΜͳ ࢖͍ํ͕ੜ·Ε͍ͯ·͢ɻe Ϊϑτʹ͸·ͩ୭΋૝ ૾͍ͯ͠ͳ͍Α͏ͳՄೳੑ͕͋ͬͯɺٕज़తͳ೉͠ ͞ʹՃ͑ͯϚʔέοτʹ·ͩਖ਼ղ͕ͳ͍͜ͱʹ௅ઓ Ͱ͖Δͷ͸ຊ౰ʹ໘ന͍Ͱ͢Ͷɻ ᴷ Ͱ͸࣍ʹ eguchi͘Μ͕୲౰͍ͯ͠Δϓ ϩμΫτΛ঺հ͍ͯͩ͘͠͞ eguchi: ࣗ෼͕୲౰͍ͯ͠ΔϓϩμΫτ͸ɺ๏ਓ޲ ͚ࣄۀͷجװγεςϜͰ͢ɻ ݱࡏ͸ɺΪϑςΟͷ๏ਓ޲͚αʔϏεΛΑΓଟ͘ͷ اۀʹεϜʔζʹ࢖͍͚ͬͯͨͩΔΑ͏ʹ͢ΔͨΊ ʹɺۀ຿ϓϩηεશମΛ࠶ߏங͢ΔϓϩδΣΫτΛ ਐΊ͍ͯ·͢ɻ ۀ຿ͷྲྀΕΛ؆୯ʹઆ໌͢Δͱɺe ΪϑτΛར༻͠ ͍ͨ๏ਓ͔Β͓ਃ͠ࠐΈΛ͍͖ͨͩɺӦۀνʔϜʹ ΑΔ֬ೝͱϒϥϯυʹΑΔར༻৹ࠪΛܦͯൃ஫͕ ߦΘΕɺeΪϑτ͕ೲ඼͞ΕΔͱ͍͏ϑϩʔͰ͢ɻ͜ ͏ݴͬͯ͠·͏ͱ୯७ʹฉ͑͜·͕͢ɺ࣮ࡍʹ͸֤ εςοϓͰ͍Ζ͍Ζͳۀ຿͕ଘࡏ͍ͯ͠·͢ɻ͜ͷ ۀ຿ϑϩʔશମΛγεςϜԽ͠ɺਓखʹΑΔ൥ࡶͳ ࡞ۀΛͳͯ͘͠ϦʔυλΠϜΛѹॖͯ͠ۀ຿ޮ཰ͱ ϢʔβʔମݧΛ޲্͢Δ͜ͱʹऔΓ૊ΜͰ͍·͢ɻ ᴷ ΋ͱ΋ͱͲΜ ͳ ՝ ୊ ͕ ͋ͬͯɺͦ ΕΛ Ͳ͏ ղ ܾ ͠Α͏ͱͯ͠ ͍ Δ ͷ ͔ ΋ ঺ հ ͯ͠ ͍ͩ͘͞ eguchi: ࣄۀن໛͕ͣͬͱখ͔ͬͨ͞ࠒʹExcel Λϕʔεͱͨ͠ۀ຿ϑϩʔ͕ߏங͞ΕɺͦͷޙͷϏ δωε੒௕ͱͱ΋ʹঃʑʹෳࡶԽ͍ͯͬͨ݁͠Ռɺ ਓʹཔͬͨۀ຿ϓϩηεʹͳͬͯ͠·͍ͬͯ·ͨ͠ɻ ࠓޙ΋֦େ͢Δࣄۀͷχʔζʹରͯ͠ɺۀ຿ͷ൥ࡶ ԽͱଐਓԽͷͨΊʹεέʔϧ͍͕ͯ͘͠೉͘͠ͳͬ ͖ͯͨ͜ͱ͕՝୊Ͱͨ͠ɻͦ͜Ͱɺۀ຿ϓϩηεશମ Λ࠶ߏங͢Δͱ͍͏ϓϩδΣΫτ͕ελʔτ͠·ͨ͠ɻ ؔΘΔεςʔΫϗϧμʔ͸ɺ๏ਓ޲͚αʔϏεͷ ސ٬Ͱ͋Δ๏ਓϢʔβʔɺ๏ਓʹ૬ର͍ͯ͠Δࣾ ಺ͷӦۀνʔϜɺΪϑτͱͳΔ঎඼Λอ༗͍ͯ͠Δ ϒϥϯυʹ෼͚ΒΕɺ͞ΒʹͦΕͧΕݸผͷۀ຿͝ ͱʹ໾ׂ͕ࡉ෼Խ͞Ε͍ͯ·͢ɻ͜ΕΒεςʔΫϗ ϧμʔશମʹؔΘΔۀ຿Λ࠶ߏஙͯ͠γεςϜԽ͠ɺ ۀ຿ϓϩηεͷޮ཰ԽͱϢʔβʔͷମݧ޲্ʹऔ Γ૊ΜͰ͍·͢ɻ ैདྷ͸ਓखͰߦΘΕ͍ͯͨӡ༻ͷॊೈੑͱγες ϜԽʹΑΔޮ཰ੑͷόϥϯεΛͱΓͳ͕Β࢓༷ʹམ ͱ͠ࠐΜͰ͍͘ͷ͕ͱͯ΋೉͍͠ͱ͜ΖͰ͢ɻ ᴷ ͦͷ ೉͠͞ʹରͯ͠͸ͲΜͳ ෩ ʹ޲͖ ߹ͬͯ·͔͢ʁ eguchi: ӦۀνʔϜɺPdMɺ ϓϩμΫτσβΠφʔɺ ͦͯࣗ͠෼ͨͪΤϯδχΞͱ͍͏ମ੍Ͱɺ๏ਓϢʔ βʔͷମݧͱӦۀνʔϜͷମݧͦΕͧΕΛશһͰ ٞ࿦͠ͳ͕Β։ൃΛਐΊ͍ͯ·͢ɻۀ຿ͷޮ཰Խͩ ͚Ͱͳ͘ɺγεςϜΛར༻͢Δ͢΂ͯͷεςʔΫϗ ϧμʔͷମݧΛߟ͑ͳ͕Β։ൃ͢Δ͜ͱָ͕͍͠Ͱ ͢Ͷɻ εςʔΫϗϧμʔͷଟ͞ʹΑΔෳࡶ͞ͱۀ຿ϓϩη εͷෳࡶ͞ͱ͍͏ɺҟͳΔ2 ͭͷෳࡶ͞Λ࣋ͭ՝୊ Λղ͘͜ͱʹνϟϨϯδ͢Δͷ͕͜ͷϓϩδΣΫτͷ ໘ന͞Ͱ͢ɻ Ϣʔβʔ͔ΒͷϑΟʔυόοΫ΋ଟ͘ɺ ʮۀ຿ָ͕ʹ ͳͬͨʯ ͱ͍͏੠΍ ʮ͜͏ͯ͠΄͍͠ʯ ͱ͍͏ཁ๬΋ ͙͢ʹಘΔ͜ͱ͕Ͱ͖·͢ɻԾઆݕূͱվળΛ܁Γ ฦ͠ͳ͕ΒϓϩμΫτΛ࡞Δ͜ͱ͕Ͱ͖Δͷ΋໘ന ͍ͱ͜ΖͰ͢Ͷɻ ʮΪʔΫεʔπʯ Ͱ޲͖߹͏Ϣʔβʔମݧ ᴷ ΪϑςΟͰ͸ ʮΪʔΫεʔπʯ ͱ͍͏ݴ༿ ͰɺΤϯδχΞ΋ϏδωεαΠυͱҰॹʹϢʔ βʔମݧ΍ఏڙՁ஋ʹ޲͖߹͏ελϯεΛද ͯ͠·͕͢ɺtoki͞Μ͸ͲΜͳ͜ͱΛߟ͑ͯϓ ϩμΫτΛ࡞ͬͯ·͔͢ʁ toki: σδλϧͳΒͰ͸ͷମݧΛͲ͏࡞ΓࠐΉ͔ɺ Ͱ͔͢Ͷɻྫ͑͹ɺࣗ෼͕୲౰͍ͯ͠ΔϓϩμΫτ Ͱ͸ɺ৽͘͠ ʮدͤॻ͖Ϊϑτʯ Λ։ൃ͠·ͨ͠ɻ͜ Ε͸ɺ1 ͭͷΪϑτʹෳ਺ͷਓ͕ϝοηʔδΛॻ͖ ࠐΜͰଃΔ͜ͱ͕Ͱ͖ΔػೳͰ͢ɻ͍ΘΏΔدͤॻ ͖ͳͷͰɺࢴͷ৭ࢴͷΑ͏ͳσβΠϯʹ͢Δ͜ͱ΋ Ͱ͖·͕ͨ͠ɺͦΕ͸Ξφϩά͕લఏͰ͋ͬͯɺε ϚϗͰͷମݧ͸΋ͬͱҧ͏΋ͷʹͰ͖ΔͷͰ͸ʁͱ ࢥ͍·ͨ͠ɻͦ͜ͰɺSNS ͷλΠϜϥΠϯͷΑ͏ʹ ॎʹϝοηʔδ͕ฒͿΑ͏ͳදݱʹ͠·ͨ͠ɻ ᴷ ΞφϩάͰ͸߹ཧతͩͬͨ΋ͷΛɺσδ λϧͰͦͷ··࠶ݱ͢Δ͜ͱ͕Α͍ମݧʹͳΔ ͱ͸ݶΒͳ͍ͬͯ͜ͱͩͶ toki: ͦͷ௨ΓͰ͢ɻσδλϧԽʹ͸ͦ͏͍͏໘ന ͞΋͋ΔΜͰ͢ΑͶɻ ମݧΛߟ͑Δ͏͑Ͱ΋͏1 ͭେ੾ʹ͍ͯ͠Δ͜ͱ͸ɺ ຎࡲΛݮΒ͢͜ͱͰ͢ɻΧδϡΞϧʹΪϑτΛଃΕ ΔੈքΛ໨ࢦ͢ΪϑςΟͷϓϩμΫτ͕ɺ෺ཧͰଃ ΔΑΓख͕͔͔ؒΔͱ͍͏ͷ͸ຊ຤స౗Ͱ͢ΑͶɻ Ϣʔβʔొ࿥͕೉͍͠ͱ͔ೖྗ͕໘౗ͱ͔ɻͦ͏͍ ͏ຎࡲΛͳ͘͢͜ͱʹͩ͜Θ͍ͬͯ·͢ɻͦΕΛ࣮ ݱ͢Δʹ͸ɺ ͱʹ͔ࣗ͘෼Ͱ৮Δ͜ͱɺਓʹ৮ͬͯ΋ Β͏͜ͱɻ৮ͬͯಈ͔ͯ͠ΈͯॳΊͯମݧͱ࣮ͯ͠ ײͰ͖ΔΑ͏ʹͳΔͱࢥ͍ͬͯ·͢ɻ ʮدͤॻ͖Ϊϑ τʯ ͷ։ൃͰ͸ɺ ϓϩτλΠϓΛ࡞ͬͯ৮Γͳ͕Βɺ ಈ͔͠ͳ͕ΒϒϥογϡΞοϓ͍͖ͯ͠·ͨ͠ɻ܁Γ ฦ͠৮Δ͜ͱʹΑͬͯɺ·ΔͰ͕֯औΕΔΑ͏ʹચ ࿅͞Ε͍ͯͬͨײ͕͋͡Γ·͢ɻ ᴷ toki͞Μ͕ UX ΁ͷࢥ͍Λڧ࣋ͭ͘Α͏ ʹͳ͖͔͚ͬͨͬ͸ʁ toki: ΤϯδχΞʹͳͬͯॳΊͯखֻ͚ͨͷ͕εϚ ϗͷωΠςΟϒΞϓϦͩͬͨΜͰ͢ΑͶɻωΠςΟ ϒΞϓϦͬͯϢʔβʔ͕࠷ॳʹ৮ͬͨͱ͖ͷख৮Γ Ͱɺͦͷޙ΋࢖ͬͯ΋Β͑Δ͔͕มΘΔੈքͳΜͰ ͢ɻࠓ͸ Web ͷ։ൃ͕ଟ͍Ͱ͕͢ɺ౰࣌ͷܦݧ͕ ࠓʹͭͳ͕͍ͬͯΔͱײ͡·͢ɻ ҰํͰ Web ͷྑ͞͸ɺϢʔβʔʹಧ͚Δ·Ͱͷε ϐʔυ͕ѹ౗తʹ଎͍͜ͱͰ͢ɻϢʔβʔͷखʹ৮ Εͯݟ͔ͭͬͨ՝୊ΛͲΜͲΜϒϥογϡΞοϓ͠ɺ σϓϩΠ͢Ε͹͙͢ʹ৽͍͠ମݧΛఏڙͰ͖Δɻ͜ ͷεϐʔυײ͸޷͖Ͱ͢Ͷɻ ϓϩμΫτͷັྗɺ ϓϩμΫτͮ͘Γͷັྗ ᴷ Ͱ͸ɺiino͘Μ͕࡞͍ͬͯΔϓϩμΫτΛ ঺հ͍ͯͩ͘͠͞ iino: ๻͕࡞͍ͬͯΔͷ͸ɺCtoC ͰΪϑτΛଃΓ ߹͏͜ͱͰ͖ΔαʔϏεɺgifteeͰ͢ɻC ޲͚αʔ ϏεͳͷͰɺ͍·͜ΕΛಡΜͰ͍ͩͬͯ͘͞Δํʹ ΋͓࢖͍͍͚ͨͩ·͢ɻͥͻμ΢ϯϩʔυ͓ئ͍͠ ·͢ʂ ᴷ ࣮͸ฐࣾͰ͸ toBϓϩμΫτͷ΄͏͕ଟ ͔ͬͨΓ͢ΔΜͰ͕͢ɺtoCϓϩμΫτ։ൃͳ ΒͰ͸ͷ΍Γ͕͍Λڭ͑ͯԼ͍͞ iino: ෆಛఆଟ਺ͷϢʔβʔʹ޲͚ͯϓϩμΫτΛ ࡞ΔͷͰɺਖ਼ղ͕ͱͯ΋ݟ͚ͭʹ͍͘ΜͰ͢ɻͦ͜Ͱ ԾઆΛཱͯͯ૝૾ྗΛಇ͔ͤͳ͕Β࡞͍ͬͯ͘ɻ͜ Ε͕ͱͯ΋೉͍͠͠ɺ໘ന͍ͱ͜ΖͰ͢ɻ ·ͨɺ࡞ͬͨ΋ͷ͕ͪΌΜͱ࢖ΘΕ͍ͯΔͲ͏͔ɺ ϢʔβʔʹͱͬͯՁ ஋ͷ͋Δ΋ͷʹͳ͍ͬͯΔ͔ ͸ɺϢʔβʔͷ੠ͱͯ͠ݱΕΔ͜ͱ͸΄ͱΜͲ͋Γ ·ͤΜɻͦ͜Ͱɺػೳͷར༻ঢ়گ΍վળޮՌΛܭଌ ͠σʔλ͔Βਪଌ͍ͯ͘͠ඞཁ͕͋Γ·͢ɻܭଌʹ ΑͬͯԾઆΛݕূΛͯ͠ɺ·ͨվળʹͭͳ͍͛ͯ͘ αΠΫϧ΋໘ന͍Ͱ͢Ͷɻ giftee͸ɺੈͷதʹ਺͋ΔCtoCαʔϏεͷதͰ΋ ಛʹஆ͔Έͷ͋ΔαʔϏεͩͱࢥ͍ͬͯ·͢ɻਓͱ ਓͱͷԑ͕ҭ·ΕΔɺΩϞνͷ॥؀ͷҰ෦Λ୲ͬͯ ͍Δ͜ͱʹͱͯ΋΍Γ͕͍Λײ͍ͯ͡·͢ɻ ᴷ ૑ۀϓϩμΫτͳͷͰྺ࢙͸௕͍͚Ͳɺ ͜Ε·ͰԿ౓͔ϦϓϨʔεͨ͠ΑͶ iino: ϦχϡʔΞϧલΑΓ΋࢖͍ʹ͘ ͘ͳͬͨɺͱ͸ ઈରʹݴΘΕͨ͘ͳ͍ͱνʔϜશһ͕ࢥ͍ͬͯ·͠ ͨɻUI/UX ΋Կ౓΋৮Γͳ͕Β࡞ΓࠐΜͰ͍ͬͨ ΓɺύϑΥʔϚϯε͕௿Լ͢Δ͜ͱ͕ͳ͍Α͏ʹɺࡉ ͔͍ͱ͜Ζ·Ͱؾʹ͠ͳ͕Β΍͍ͬͯ·ͨ͠ɻਖ਼௚ɺ ϓϨογϟʔ͸͔ͳΓ͋Γ·ͨ͠Ͷɻ ͦΕ͔Βɺ ϦϓϨʔεͷλΠϛϯάͰωΠςΟϒΞϓ Ϧʹ͸ Flutter Λ࠾༻͠·ͨ͠ɻࣾ಺Ͱ΋৽͍͠ࢼ ΈͩͬͨͷͰख୳ΓͰ΍͍ͬͯ͘ͷ͸େมͰ͕ͨ͠ɺ ͜͏͍͏ٕज़తͳνϟϨϯδΛϑοτϫʔΫܰ͘औ Γ૊ΜͰ͍͚ΔจԽ͸͍͍Ͱ͢Ͷɻࣗ෼͕ͨͪઌਞ Λ੾ͬͯνϟϨϯδͯ͠ɺࣾ಺ʹ஌ݟΛஷΊ͍ͯͬ ͍ͯ·͢ɻ ᴷ ࠓޙ͸ͲΜͳ͜ͱΛڧԽ͍ͯ͘͠ͷ͔Λ ڭ͍͑ͯͩ͘͞ iino: giftee ͸ɺΪϑτͷ URL ΛଃΕ͹૬ख͸ձ һొ࿥Λ͠ͳͯ͘΋ΪϑτΛड͚औΔ͜ͱ͕Ͱ͖· ͢ɻ͜Ε͸ΪϑτΛଃΓ߹͏ମݧʹ͸ͱͯ΋਌࿨ੑ ͷ͋ΔUXͩͱࢥ͍ͬͯ·͢͠ɺ͜Ε·Ͱଟ͘ͷϢʔ βʔʹ࢖͍͚ͬͯͨͩΔΑ͏ʹͳͬͨཁҼͩͱࢥͬ ͍ͯ·͢ɻ ࠓ ޙ͸ɺϢʔβʔ ಉ ͕࢜΋ͬͱΪϑτΛଃΓͨ͘ ͳΔαʔϏεʹ͍͖͍ͯͨ͠ͱࢥ͍ͬͯ·͢ɻ࠷ۙɺ giftee ಺ͷଞͷϢʔβʔΛϑΥϩʔ͢ΔػೳΛ࡞ Γ·ͨ͠ɻϑΥϩʔΛ͢Δͱɺ૬ख͕΄͍͠΋ͷϦ ετΛެ։͍ͯ͠Δ৔߹ʹ͸ͦͷϦετ͔Β௚઀Ϊ ϑτΛଃΔ͜ͱ͕Ͱ͖ΔΑ͏ʹͳΓ·͢ɻ͜Ε͔Β΋ Ϣʔβʔಉ࢜ͷؔ܎͕ਂ·ΔΑ͏ͳػೳΛ௥Ճ͠ɺ ͞ΒʹັྗతͳαʔϏεʹ͍͖͍ͯͨ͠ͱࢥ͍ͬͯ ·͢ɻ ᴷ Ͱ͸࠷ޙʹɺyokono͘Μ͕։ൃ͍ͯ͠ ΔϓϩμΫτΛ঺հ͍ͯͩ͘͠͞ yokono: ๻͕։ൃ͍ͯ͠Δͷ͸ toB ͷϓϩμΫτ ͰɺΩϟϯϖʔϯͱͯ͠ eΪϑτΛ഑෍͢ΔͨΊͷϓ ϩμΫτͰ͢ɻ 1 ͭ͸๏ਓ͕ϝʔϧͳͲΛ࢖ͬͯ e ΪϑτΛҰ੪ʹ ൃߦɾ഑෍͢Δ͜ͱ͕Ͱ͖Δ giftee Portͱ͍͏ϓ ϩμΫτɻ΋͏1 ͕ͭɺgiftee Directͱ͍ͬͯɺλ ϒϨοτΛ࢖ͬͯର໘ͰeΪϑτΛ഑෍͢Δ͜ͱ͕Ͱ ͖ΔϓϩμΫτͰ͢ɻ ᴷ ๏ਓ޲͚ͷϓϩμΫτ։ൃͰ͸ͲΜͳͱ ͜Ζ͕໘ന͍ʁ yokono: ๻͸ ʮΤϯυϢʔβʔͷ੠Λௌ͍ͯϓϩ μΫτΛ։ൃ͍ͨ͠ʯ ͱ͍͏ࢥ͍Λ࣋ͬͯΪϑςΟʹ ৽ଔͰೖࣾ͠·ͨ͠ɻ๏ਓ޲͚ϓϩμΫτ։ൃͷ෦ ॺʹ഑ଐ͞Ε·͕ͨ͠ɺ·͞ʹ΍Γ͍ͨͱࢥ͍ͬͯ ͨ͜ͱ͕Ͱ͖Δ؀ڥͰͨ͠ɻ ๻ࣗ਎ɺސ٬اۀʹ௚઀ώΞϦϯά͢Δ͜ͱ΋͋Γ ʮͲΜͳ͜ͱʹࠔ͍ͬͯΔͷ͔ʯ ʮͲΜͳػೳ͕΄͠ ͍ͷ͔ʯ ΍ɺ ʮϓϩμΫτΛ࢖ͬͯΈͯͲ͕͜Α͔ͬ ͔ͨʯ ͳͲΛμΠϨΫτʹௌ͘͜ͱ͕Ͱ͖·ͨ͠ɻ۩ ମతͳϑΟʔυόοΫ͕͋Δ͜ͱͰɺඞཁͳػೳ΍ ͋Δ΂͖σβΠϯΛߟ͑ͳ͕ΒϓϩμΫτΛ࡞Δ͜ ͱ͕Ͱ͖·͢ɻ ސ٬اۀͷઌʹ͸ͦͷاۀͷଟ͘ͷސ٬͕͍ΔΘ ͚Ͱɺ৽͍͠ػೳΛೖΕͨΒച্͕͕͋ͬͨͱ͔ɺ Θ͔Γ΍͘͢੒Ռ͕ݟ͑Δ͜ͱ΋໘ന͍Ͱ͢Ͷɻސ ٬اۀͷϏδωεʹߩݙͭͭ͠ɺΪϑτΛड͚औͬ ͨϢʔβʔʹ΋تΜͰ΋Β͑ΔɻαʔϏεʹ৮ΕΔ ଟ͘ͷϢʔβʔͷຬ଍ʹͭͳ͕͍ͬͯΔ͜ͱ͕๏ਓ ޲͚ϓϩμΫτͷັྗͰ͢ɻ ᴷ ސ٬ͷ੠͕ௌ͑͜Δ͕Ώ͑ʹ ʮސ٬͕ຊ ౰ʹ΄͔ͬͨ͠΋ͷʯ Λߟ͑Δ͜ͱ͕೉͍͜͠ ͱ΋͋Δͱࢥ͏͚Ͳɺ Ͳ͏ͯ͠·͔͢ʁ yokono: ͨ͘͞Μͷཁ๬΍ϑΟʔυόοΫ͔Βɺෳ ਺ͷސ٬ʹڞ௨͢Δχʔζͳͷ͔ɺຊ౰ʹ՝୊ʹ ͳ͍ͬͯΔ͜ͱ͸Կ͔ɺͳͲΛϏδωεαΠυͱ࿩͠ ߹͍ͳ͕Β༏ઌॱҐΛ͚͍͍ͭͯͬͯ·͢ɻ ๻ͨͪͷνʔϜͷϛογϣϯ͸ɺސ٬اۀ͕Ϊϑτ Λ࢖ͬͨࢪࡦΛ͢ΔͨΊͷՁ஋͋ΔϓϩμΫτΛఏ ڙ͢Δ͜ͱͰ͢ɻཁ๬Λཁ݅ʹམͱ͠ࠐΉͱ͖ʹ͸ɺ ඞͣ͜ͷϛογϣϯʹԊ͍ͬͯΔ͔Λߟ͑ΔΑ͏ʹ͠ ͍ͯ·͢ɻ ઌ೔ɺνʔϜͷதͰ ʮ͜ͷϓϩμΫτͷຊ࣭తͳՁ ஋ͱ͸Կ͔ʯ ͱ͍͏ٞ࿦͕͋Γ·ͨ͠ɻͦ͜Ͱɺ Ϗδ ωεαΠυͱҰॹʹόϦϡʔϓϩϙδγϣϯΩϟϯό εΛඳ͍ͯɺސ٬χʔζͱϓϩμΫτͷఏڙՁ஋Λ ࢹ֮Խͯ͠ೝࣝͷڞ௨ԽΛ͠·ͨ͠ɻͦͷ݁Ռݟ͑ ͨՁ஋Λ൑அج४ͱͯ͠ɺόοΫϩάͷ༏ઌॱҐΛ ੔ཧ͢ΔΑ͏ʹͳΓ·ͨ͠ɻ ᴷ Έͳ͞Μ͓࿩͋Γ͕ͱ͏͍͟͝·ͨ͠ɻΈ ΜͳͷνϟϨϯδͱ͔΍Γ͕͍͕ৄ͘͠ฉ͚ͯ ͱͯ΋པ΋͘͠ײ͡·ͨ͠ɻ࠷ޙʹݴ͍࢒ͨ͠ ͜ͱ͋Γ·͔͢ʁ n a kaya : ͏ͪͷձ ࣾ͸্ ৔΋͍ͯ͠ΔͷͰ΋͏ ΞʔϦʔϑΣʔζͰ͸ͳ͍Ͱ͕͢ɺͦΕͰ΋ຖ೥ͷ Α͏ʹ৽͍͠ࣄۀ͕ੜ·ΕΔͳͲมԽͷ଎౓͕͢ ͘͝ૣ͍Ͱ͢ɻ͜ͷεϐʔυʹγεςϜ͕௥͍͚ͭͯ ͍ͳ͍ͱ͍͏ݱঢ়͕͋ΔͷͰɺٕज़తʹ͸·ͩ·ͩ ΍Δ͜ͱ͕ͨ͘͞Μ͋Γ·͢ɻ·ͨྑ͘΋ѱ͘΋·ͩ ૊৫͕੒ख़͍ͯ͠ͳ͍ͷͰ଍Γͳ͍ϩʔϧ΋ͨ͘͞ Μ͋ΓɺΧΦεͷதͰ଎౓ײ࣋ͬͯ։ൃ͍͖ͯͨ͠ ͍ͱ͍͏ΤϯδχΞʹ͸ͱͯ΋Ϛονͨ͠؀ڥͩͱ ࢥ͍ͬͯ·͢ɻؾʹͳͬͨํɺͥͻΧδϡΞϧ໘ஊ Ͱ͓࿩͠·͠ΐ͏ ʢসʣ eguchiʗΤϯδχΞ ۀ຿෼ੳ͔Β։ൃશൠΛ୲͍εΫϥϜνʔϜΛϦʔ υ͢Δɻઐ໳ྖҬ͸ϑϩϯτΤϯυɻ ༄੉จ޹ʗCTO ૑ۀظ͔ΒΪϑςΟͷΤϯδχΞϦϯάΛݗҾ͢Δ ࠷ߴٕज़੹೚ऀɻ nakayaʗΤϯδχΞ ։ൃٕज़͚ͩͰͳ͘৺ཧֶ͔ΒΤϯδχΞ૊৫࿦ ·Ͱ޿͘୳ٻ͢ΔɻGo ݴޠΛಘҙͱ͢ΔΤϯδχΞ ɻ tokiʗΤϯδχΞ UXʹ৘೤Λ೩΍͢ɺόοΫΤϯυ΍Πϯϑϥ΋खֻ ͚ΔϑϩϯτΤϯυΤϯδχΞ ɻ iinoʗΤϯδχΞ ΧδϡΞϧΪϑταʔϏεgifteeͷWebΞϓϦɺϞ όΠϧΞϓϦͷ։ൃɾอकɾӡ༻ΛϦʔυɻ yokonoʗΤϯδχΞ 2021 ೥৽ଔೖࣾɻ1 ೥Ί͔Βgiftee Directͷ։ ൃΛϦʔυɻݱࡏ͸ෳ਺ͷΪϑτ഑෍ϓϩμΫτΛ ୲౰ɻ CTO × Engineer Talk Session Τ ϯ δ χ Ξ ͕ ޲ ͖ ߹ ͏ ν ϟ Ϩ ϯ δ ͱ ΍ Γ ͕ ͍ Product Book P.13 RubyKaigi2024 P.12
  7. eΪϑτੜ੒ଆɺྲྀ௨ଆͷͲͪΒͷγεςϜ܈΋ɺࣄۀͷ֦େ ͱڞʹͦͷ਺͕૿͖͍͑ͯͯ·͢ɻ֤γεςϜ͕ݸʑʹܨ͗ࠐ ΈΛߦ͍ͬͯΔঢ়گͰ͸ɺ઀ଓγεςϜ͕૿͑ΔʹͭΕɺ֤γ εςϜಉ࢜ͷ઀ଓίετ͕ͲΜͲΜߴ͘ͳ͍͖ͬͯ·͢ɻ ·ͨɺ ͱ͋Δੜ੒γεςϜͰ࣮૷ͨ͠ػೳ͕ผͷγεςϜͰ͸ ࢖͑ͣɺ͏·͘ػೳͷڞ௨Խ͕Ͱ͖͍ͯͳ͍ͱ͍͏՝୊΋͋Γ ·ͨ͠ɻ ͦΕΒͷ໰୊Λղܾ͢ΔͨΊʹɺeΪϑτੜ੒γεςϜͷखલ ʹήʔτ΢ΣΠΛ࡞Γɺe

    Ϊϑτͷੜ੒ΛҰݩԽ͢Δͱ͍͏ํ ਑Λ࠾༻͠·ͨ͠ɻ·ͨɺeΪϑτੜ੒ʹ͓͚Δڞ௨ػೳ΋ࠓ ޙ͸͜ͷήʔτ΢ΣΠʹ࣮૷͍ͯ͘͜͠ͱͰɺंྠͷ࠶ൃ໌Λ ๷͙͜ͱ͕Ͱ͖·͢ɻ ࣄۀͷ֦େʹ௥ਵ͢Δ֦ுੑ ͜ͷήʔτ΢ΣΠͷཪଆʹ͸͍͔ͭ͘ͷ e Ϊϑτੜ੒γεςϜ ͕઀ଓ͞Ε͓ͯΓɺ ͦͷதʹ͸͞Βʹ֎෦ͷAPIͱ઀ଓ͍ͯ͠ Δ΋ͷ΋͋ΔͨΊɺՄ༻ੑΛࣾ಺͚ͩͰ͸୲อ͢Δ͜ͱ͕Ͱ ͖·ͤΜɻͦ͜Ͱج൫ͷ಺෦ʹΩϡʔΛઃ͚ͯɺඇಉظతʹe ΪϑτൃߦΛॲཧͰ͖ΔΑ͏ʹ͍ͯ͠·͢ɻ ඇಉظʹ͢Δͱ e Ϊϑτͷൃߦ͕ଈ࠲ʹߦΘΕͳ͍ͨΊ໰ ୊͕͋ΔΑ͏ʹࢥ͏͔΋͠Ε·ͤΜ͕ɺe Ϊϑτͷൃߦγνϡ Τʔγϣϯͷதʹ͸ e ΪϑτURL ͸ඞཁͰ͋ͬͯ΋ɺe Ϊϑτ ݊໘ͦͷ΋ͷ͸͙͢ʹඞཁͰ͸ͳ͍έʔε͕͋Γ·͢ɻྫ͑ ͹ɺ๏ਓΩϟϯϖʔϯར༻ͳͲͰࣄલʹURLͷൃߦ͚ͩΛߦ ͍ɺޙͰϢʔβʔʹ഑෍͢Δͱ͍͏έʔεͰ͸ɺൃߦͱར༻ ͷؒʹҰఆͷλΠϜϥά͕ൃੜ͠·͢ɻͦ͏͍ͬͨέʔεͰ͸ɺ eΪϑτൃߦͷಉظੑΛ͋Δఔ౓٘ਜ਼ʹ͢Δ͜ͱ͕Ͱ͖·͢ɻ ඇಉظൃߦͷྲྀΕ͸ɺ۩ମతʹ͸ҎԼͷΑ͏ʹͳ͍ͬͯ·͢ɻ ͜͏͢Δ͜ͱͰɺཪଆͷ e Ϊϑτੜ੒γεςϜͷՄ༻ੑʹґଘ ͤͣɺe Ϊϑτൃߦͷड͚෇͚͕Ͱ͖ΔΑ͏ʹͳΓɺશମͷՄ ༻ੑΛ޲্͍ͤͯ͞·͢ɻ Մ༻ੑΛߴΊΔ಺෦ඇಉظൃߦͷ࢓૊Έ e Ϊϑτൃߦήʔτ΢ΣΠ͸ɺ͋ΒΏΔ e Ϊϑτൃߦͷج൫ͱͳΔͨ Ίɺো֐ʹΑΔϏδωεӨڹ͕ͱͯ΋େ͖͍ϓϩμΫτͰ͢ɻͦͷͨ ΊɺՄ༻ੑ / ֦ுੑ / ੑೳͳͲͷ҆ఆՔಇͷͨΊͷಛੑʹରͯ͠౰ ॳ͔ΒΞϓϩʔν͖ͯ͠·ͨ͠ɻ ྫ͑͹ɺՄ༻ੑΛಘΔͨΊͷඇಉظͷ࢓૊Έ͚ͩͰͳ͘ɺεέʔϥ ϏϦςΟ޲্ͷͨΊίϯςφʹࡌͤ΍ͯ͘͢ฒߦॲཧ͕ॻ͖΍͍͢ Go ݴޠΛ࠾༻ͨ͠ΓɺੑೳྼԽΛݕ஌͢ΔͨΊͷෛՙࢼݧΛ؆୯ ʹ࣮ࢪͰ͖Δ޻෉Λಋೖͨ͠Γ͠·ͨ͠ɻ ଞʹ΋ɺςετϑΝʔετͰͷ։ൃख๏ ΛऔΓೖΕͯ඼࣭޲্ʹऔΓ૊ΜͰΈ ͨΓɺσϓϩΠස౓Λߴ͘͢ΔͨΊͷσ ϦόϦʔͷ࢓૊ΈΛߏஙͨ͠Γɺ։ൃϑ ϩʔ΍ӡ༻໘Ͱ΋Ξϓϩʔν͍ͯ͠·͢ɻγεςϜͷେن໛ͳ੹຿ ੔ཧ͸ࣾ಺ॳͷࢼΈͳͷͰɺࣄۀతՁ஋͕େ͖͍͚ͩͰͳٕ͘ज़త ʹνϟϨϯδͰ͖Δཁૉ͕ଟ͍ͷͰɺߴ͍ϞνϕʔγϣϯͰؔΘΒͤ ͯ΋Β͍ͬͯ·͢ɻ Engineering Inside eΪϑτൃߦήʔτ΢ΣΠ e Ϊϑτൃߦήʔτ΢ΣΠ͸ɺΪϑςΟͰऔΓѻ͏͋ΒΏΔe ΪϑτΛ؅ཧɺू໿͠ɺൃߦ͢Δͨ Ίͷج൫ϓϩμΫτͰ͢ɻ ΪϑςΟ͕ఏڙ͍ͯ͠Δ e Ϊϑτ͸ɺళฮͰ঎඼ͱަ׵Ͱ͖Δ΋ͷ΍ड͚औͬͨਓ͕ॅॴΛೖ ྗ͢Δͱࣗ୐·Ͱ഑ૹͯ͘͠ΕΔ΋ͷɺ஍Ҭ௨՟ͱͯ͠࢖͑Δ΋ͷͳͲ༷ʑͳछྨͷ΋ͷ͕͋Γɺ ͜ΕΒ͸༻్͝ͱʹeΪϑτੜ੒γεςϜ͕෼͔Ε͍ͯ·͢ɻ ͲͷγεςϜ΋e ΪϑτΛൃߦ͢Δͱ͍͏఺Ͱ͸ڞ௨͍ͯ͠·͕͢ɺϢʔβʔମݧ΍ͦΕΛऔΓ ר͘ػೳ / ඇػೳཁ݅ɺؔΘΔεςʔΫϗϧμʔ͕ҟͳ͍ͬͯΔͨΊɺͦΕͧΕʹಛԽͨ͠γε ςϜ͕ߏங͞Ε͍ͯ·͢ɻ eΪϑτΛ഑෍ɺྲྀ௨ͤ͞ΔͨΊͷ࢓૊Έ΋ɺෳ਺ͷνϟωϧʹ༷ʑͳιϦϡʔγϣϯγεςϜ͕ ଘࡏ͠·͢ɻͦͯ͠ɺ֤ιϦϡʔγϣϯγεςϜ͕ɺͦΕͧΕ e Ϊϑτੜ੒γεςϜ΁ Web API ܦ༝ͰൃߦϦΫΤετΛߦ͍ͬͯ·͢ɻ ͜ͷ൥ࡶ͞Λղফ͢ΔͨΊʹ։ൃ͍ͯ͠Δͷ͕ɺeΪϑτൃߦήʔτ΢ΣΠͰ͢ɻ ΤϯδχΞ nakatsuma ٕज़ελοΫ ։ൃݴޠ ŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋ Go σʔλϕʔε ŋŋŋŋŋŋŋŋŋŋŋŋŋ Aurora Serverless v2 MySQL Πϯϑϥ ŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋ ECS on Fargateɺ AWS Lambda ߏ੒؅ཧ ŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋ Terraform CI/CD ŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋ GitHub Actions σϓϩΠŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋ AWS CodeDeploy αʔϏε؂ࢹ ŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋ New Relic . ιϦϡʔγϣϯγεςϜ͔Βήʔτ΢Σ Π͕ൃߦϦΫΤετΛड͚෇͚ɺήʔ τ΢ΣΠ͕ͦͷ৔Ͱ URL( ) Λੜ੒͠ ͯฦ͢ . ͦͷޙɺήʔτ΢ΣΠ͸ඇಉظͰeΪϑ τੜ੒γεςϜʹൃߦΛϦΫΤετ͠ɺ eΪϑτͷൃߦ͕੒ޭͨ͠৔߹ɺ Ϧλʔ ϯ͞Εͨ URL( ) Λήʔτ΢ΣΠ͕࠾ ൪ͨ͠URL( )ʹඥ෇͚ͯอଘ͢Δ . Ϣʔβʔ͕ήʔτ΢ΣΠͰ࠾൪͞Εͨ URL( ) ʹΞΫηε͢ΔͱɺඇಉظͰ ൃߦ͞Εͨ e Ϊϑτͷ URL( ) ʹϦμ ΠϨΫτ͠ɺeΪϑτ݊໘ը໘͕දࣔ͞ ΕΔ a. ͜ͷࡍʹอݥͱͯ͠ɺඇಉظʹΑΔ ൃ ߦ͕׬͍ྃͯ͠ͳ͍৔ ߹ ɺಉظ తʹ e ΪϑτΛൃߦ͔ͯ͠ΒϦμΠ ϨΫτ͢Δ࢓૊ΈΛ༻ҙ͓ͯ͘͠ Before After eΪϑτൃߦ API ίʔϧ eΪϑτൃߦ ήʔτ΢ΣΠ άϩʔόϧ ঎඼Ϛελ Ϛελ഑৴ ιϦϡʔγϣϯ γεςϜ܈ ιϦϡʔγϣϯ γεςϜ A ιϦϡʔγϣϯ γεςϜ B ιϦϡʔγϣϯ γεςϜ C eΪϑτੜ੒ γεςϜ܈ eΪϑτੜ੒ γεςϜ A eΪϑτੜ੒ γεςϜ B eΪϑτੜ੒ γεςϜ C ιϦϡʔγϣϯ γεςϜ܈ ιϦϡʔγϣϯ γεςϜ A ιϦϡʔγϣϯ γεςϜ B ιϦϡʔγϣϯ γεςϜ C eΪϑτੜ੒ γεςϜ܈ eΪϑτੜ੒ γεςϜ A eΪϑτੜ੒ γεςϜ B eΪϑτੜ੒ γεςϜ C eΪϑτൃߦ API ίʔϧ Product Book P.15 RubyKaigi2024 P.14
  8. ෳࡶͳϏδωεϑϩʔ͸ɺཁ݅ͷෳࡶ͞ʹՃ͑ɺཁ݅ͷଟ ͞΍ͦΕΒ͕ຖ೔ͷ༷ʹมԽ͍ͯ͘͜͠ͱΛҾ͖ى͜͠·͢ɻ BPR Ͱ͸νʔϜͱͯͦ͠ΕΒʹཱͪ޲͔͏ඞཁ͕͋Γ·͢ɻ ͦ͜Ͱɺෳࡶ͞ʹॊೈʹରԠ͢ΔͨΊͷ࢓૊Έͱͯ͠εΫϥϜ ΛऔΓೖΕɺͦͷϓϥΫςΟεΛੵۃతʹ࣮ફ͍ͯ͠·͢ɻྫ ͑͹ɺ ϦϑΝΠϯϝϯτʹྗΛೖΕͯଟྔͳཁ݅ͷ੔ཧͱ༏ ઌॱҐ͚ͮΛޮ཰Α͘ߦ͑Δ༷ʹͳͬͨΓɺ ϓϥϯχϯάϙʔ

    ΧʔΛऔΓೖΕΔ͜ͱͰϝϯόʔؒͷ৘ใ֨ࠩΛղফͨ͠Γ ͳͲɺνʔϜͱͯ͠ෳࡶੑʹରԠ͢Δྗͷ޲্ʹऔΓ૊ΜͰ ͍·͢ɻ ԿΑΓ΋ෳࡶͳϏδωεϑϩʔʹཱͪ޲͔Θͳ͚Ε͹͍͚ͳ ͍ͱ͜ΖͰ͢ɻൃ஫؅ཧγεςϜͱͻͱޱʹݴͬͯ΋ɺΪϑτ Λར༻͢ΔاۀɺͦΕΛϋϯυϦϯά͢ΔΪϑςΟɺར༻͞Ε ΔΪϑτΛ࣋ͭاۀ͕ొ৔͠·͢ɻ·ͨɺͦΕͧΕ͕ݸผͷ ໾ׂ͝ͱʹࡉ෼Խ͞Ε͓ͯΓɺ ͦΕΒશͯͷεςʔΫϗϧμʔ Λཧղ͠ۀ຿վળΛߟ͑Δඞཁ͕͋Γ·͢ɻ νϟϨϯδϯάͳͱ͜Ζ ଟ͘ͷεςʔΫϗϧμʔ͕ଘࡏ͢Δ͜ͱͰγεςϜʹҾ͖ى͜ ͞ΕΔෳࡶੑͷ 1 ͭʹɺଟ༷ͳίϯςΩετͷϩδοΫΛϋϯ υϦϯά͠ͳ͚Ε͹͍͚ͳ͍఺͕ڍ͛ΒΕ·͢ɻൃ஫؅ཧγ εςϜͰ͸Ruby on RailsΛར༻͍ͯ͠ΔͨΊɺ͜ͷෳࡶੑ ͕୯ҰϞσϧʹूத͢Δ͍ΘΏΔFat Model ໰୊ΛҾ͖ى ͜͢͜ͱ͕ݒ೦͞Ε͍ͯ·ͨ͠ɻ ͜ΕΛղফ͢ΔͨΊ Application ModelΛ࠾༻͠ɺಋೖ͠ ͍ͯ·͢ɻ͜Ε͸ίϯςΩετ͝ͱʹ Application Model Λ༻ҙͯͦ͜͠ʹϩδοΫΛ੔ཧͯ͠ด͡ࠐΊΔͱ͍͏Ξϓ ϩʔνͰ͢ɻ͜͏͢Δ͜ͱͰɺݸผͷ Application Model Active Record Model ͕εϦϜʹͳΓඇৗʹݟ௨͕͠ྑ ͘ͳΓ·͢ɻ·ͨɺApplication Model ͸ Active Model ϕʔεͰ࣮૷͞Ε͓ͯΓɺController ͔ΒActive Record Modelͱ΄΅ಉ༷ʹѻ͑Δ༷ʹͳ͍ͬͯ·͢ɻ γεςϜͱͯ͠ෳࡶੑʹཱͪ޲͔͏ νʔϜͱͯ͠ෳࡶੑʹཱͪ޲͔͏ Q.νʔϜͱͯ͠େ੾ʹ͍ͯ͠Δ͜ͱ͸ͳΜͰ͔͢ʁ େࣄʹ͍ͯ͠Δͷ͸ ʮҰਓҰਓͷҙݟ͕ग़΍͍͢؀ڥΛ࡞Δ͜ͱʯ Ͱ͢Ͷɻ ͦͷҰ؀ͱͯ͠ɺBPRνʔϜͰ͸िʹҰճ 1 ࣌ؒɺMiroͱ͍͏Φϯϥ ΠϯϗϫΠτϘʔυπʔϧΛ࢖ͬͯৼΓฦΓΛߦ͍ͬͯ·͢ɻ͜Ε͸ ΤϯδχΞϝϯόʔ͔ΒͷఏҊͰ࢝·ͬͨࢼΈͰɺࠓͰ͸Α͔ͬͨ఺ ΋ѱ͔ͬͨ఺΋سጨͳ͘ҙݟΛग़͠߹͑Δɺେ੾ͳ৔ͱͳ͍ͬͯ·͢ɻ Q.ΤϯδχΞϝϯόʔʹҰݴʂ ʮຊ౰ʹՁ஋͕͋Δ΋ͷΛ࡞Δʯ ɻ͜ͷ͜ ͱΛৗʹશһ͕ߟ͑ɺ࣌ʹ͸ന೤ͨٞ͠ ࿦ʹ΋ൃల͢Δɻ ౰ͨΓલ͔΋͠Εͳ͍͚Ͳɺͱͯ΋ྑ͍ νʔϜͩͳͱৗʑײ͡·͢ɻ օ͞Μ͕ҰॹͳΒɺྑ͍΋ͷ͕Ͱ͖Δͱ֬৴ͯ͠·͢ɻҾ͖ଓ͖ΑΖ ͓͘͠ئ͍͠·͢ʂ Product Owner Inside Business Process Reengineering (BPR) BPR ͸๏ਓ޲͚ͷϏδωεϑϩʔͱൃ஫؅ཧγεςϜΛൈຊతʹݟ௚͠ɺ࿑ಇू໿తͳϏδ ωεϞσϧ͔Β୤٫ͤ͞Δ͜ͱΛ໨ࢦ͢ϓϩδΣΫτͰ͢ɻ ๏ਓͷ͓٬༷͕ΪϑςΟͷ๏ਓ޲͚αʔϏεΛ͝ར༻ʹͳΔ৔߹ɺ Ϊϑτͷར༻ݕ౼͔Βɺ ਃࠐɺ ར༻৹ࠪɺൃ஫ͱ͍ͬͨ਺ଟ͘ͷεςοϓ͕ඞཁʹͳΓ·͢ɻݱঢ়͸͝ར༻ܗଶʹؔΘΒͣ͜Ε Βશͯͷ޻ఔΛࣾ಺ͷਓһ͕खް͘αϙʔτ͍ͯ͠·͢ɻ ࠓޙ΋͞Βʹଟ͘ͷ͓٬༷͕ΑΓ؆୯ʹར༻͍͚ͯͨͩ͠ΔΑ͏ʹ͢ΔͨΊʹɺਃࠐΈ͔Βೲ඼ ·ͰͷϦʔυλΠϜΛ୹ॖͨ͠Γ൥ࡶͳۀ຿Λվળͯ͠αʔϏε඼࣭Λ޲্͢Δ͜ͱΛ໨ࢦͯ͠ɺ Ϗδωεϓϩηεͷ࠶ߏஙͱͦΕʹ͋ΘͤͨγεςϜϦϓϨʔεΛਐΊ͍ͯ·͢ɻ ݕ ౼ ൃ ஫ ೲ ඼ ར ༻ ৹ ࠪ ਃ ࠐ API:: Admin:: R M T R` R R` C C` C C` API:: มߋޙ Admin:: R M T R` R R` C C` C C` API::M API::M` Admin::M Admin::M` ϓϩμΫτϚωʔδϟʔ m-moro . Zenhub Λར༻ͨ͠εΫϥϜ։ൃ . 1 िؒ୯ҐͷεϓϦϯτ . ϦϑΝΠϯϝϯτɺ ϓϥϯχϯάɺ ϨτϩεϖΫςΟϒɺ ϨϏϡʔɺ σΠϦʔεΫϥϜΛ࣮ࢪ . ϏδωεαΠυΛؚΊͯཁ݅੔ཧΛߦ͏ఆྫͱɺ σβΠϯΛ٧ΊΔఆྫ͕ि1ճ . ΄΅ຖ೔ͷຊ൪ϦϦʔε ٕज़ελοΫ ϑϩϯτΤϯυϑϨʔϜϫʔΫ ŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋ Next.js ίϯϙʔωϯτϥΠϒϥϦ ŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋ Material UI ঢ়ଶ؅ཧ ŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋ Redux BFF ŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋ Serverless / Apollo Server όοΫΤϯυ ŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋ Ruby on Rails API ŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋ GraphQL Πϯϑϥ ŋŋŋŋŋŋŋŋŋŋŋŋŋŋ AWSʢKubernetes, Aurora MySQLͳͲʣ ߏ੒؅ཧ ŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋ Terraform CI/CD ŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋ GitHub Actions αʔϏε؂ࢹ ŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋ New Relic ϓϩδΣΫτ؅ཧ ŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋZenhub ։ൃϑϩʔ Product Book P.17 RubyKaigi2024 P.16
  9. Ωϟϯϖʔϯͷதʹ͸ LINEϓογϡͳͲͰࠂ஌Λߦ͏έʔε ͕͋ΔͷͰ͕͢ɺେखϝʔΧʔͷެࣜ LINE ΞΧ΢ϯτ͸༑ ͩͪొ࿥਺͕਺ඦສਓʹͷ΅Δ৔߹͕͋Γɺ ϓογϡ௨஌ޙ ʹεύΠΫΞΫηε͕ൃੜ͢Δ͜ͱ͕͋Γ·͢ɻ εύΠΫΞΫηε͕ൃੜ͢ΔͱWebίϯςφͷεέʔϧΞ΢ τ͕ؒʹ߹Θͳ͍Մೳੑ͕͋ΔͨΊɺେܕͷϓογϡ௨஌ʹ

    ͍ͭͯ͸ࣄલʹ࿈བྷΛ΋Β͍ɺ͋Β͔͡ΊεέʔϧΞ΢τͤ͞ ͓ͯ͘ӡ༻ʹͳ͍ͬͯ·͢ɻ͔͠͠ɺECSίϯςφͷ࣌ࠁϕʔ εͰͷεέʔϦϯά͸ AWS ͷ Webίϯιʔϧ͔Βઃఆ͕Ͱ ͖ͣɺAPI ܦ༝Ͱ͔͠ઃఆͰ͖·ͤΜͰͨ͠ɻ ͦ͜ͰɺίϚϯυϥΠϯ͔Β؆୯ʹ࣌ࠁϕʔεͷεέʔϦϯ άΛઃఆͰ͖Δ gem Λ։ൃ͠·ͨ͠ɻCUI ্ͰͷΠϯλϥ ΫςΟϒͳϝχϡʔػೳͷ࣮૷ʹ͸ɺpiotrmurach/tty- promptͱ͍͏gemΛ࢖͍ͬͯ·͢ɻRuby ͸ྺ࢙͕௕͍෼ɺ ͍͍ҙຯͰރΕͨπʔϧ͕ଗ͍ͬͯͯɺ;ͱͨ͠ࢥ͍͖ͭΛ ૉૣ͘ܗʹ͢Δͷʹ޲͍͍ͯΔͳ͋ͱվΊ࣮ͯײ͠·ͨ͠ɻ SNSΩϟϯϖʔϯ Ξϯέʔτँྱ ৽نސ٬֫ಘ ࣗࣾΞϓϦΛμ΢ϯϩʔυͯ͘͠Εͨํ ΍SNSΛϑΥϩʔͯ͘͠Εͨํʹ Ξϯέʔτʹճ౴ͯ͘͠Εͨํʹͦͷ৔ ͰΪϑτΛϓϨθϯτ ए೥૚͚ͩͰͳ͘෯޿͍೥ྸ૚ͷސ٬ ֫ಘʹ GCPʹ͸TwitterͷΠϯελϯτ΢ΟϯΛ࢖ͬͨநબػೳ͕͋ ΓɺTwitter ࿈ܞ෦෼ͷ࣮૷ͰTwitter APIΛ࢖༻͍ͯ͠·͢ɻ ݱঢ় v1ͷAPIΛ࢖༻͍ͯ͠·͕͢ɺࡢࠓͷ Twitter ࣾͷಈ޲ ΍কདྷతͳ͜ͱ΋ߟྀͯ͠ɺv2ʹҠߦ͍ͨ͠ͱ͍͏࿩͕͋Γ· ͨ͠ɻͨͩ͠ɺv1Ͱఏڙ͞Ε͍ͯͨҰ෦ͷػೳ͕ v2Ͱ͸·ͩ αϙʔτ͞Ε͍ͯͳ͍͜ͱ΋͋ΓɺҰ෦ͷΩϟϯϖʔϯͷΈஈ ֊తʹҠߦ͍ͯ͘͠ͱ͍͏ํ਑ʹͳΓ·ͨ͠ɻͭ·Γίʔυ্ Ͱv1ͱv2ͷซଘظؒΛઃ͚Δͱ͍͏͜ͱʹͳΓ·͢ɻ ͦ͜Ͱɺv1ͱv2ͰΠϯλʔϑΣʔεΛଗ࣮͑ͯ૷͓ͯ͘͜͠ͱͰɺ API clientΠϯελϯεͷੜ੒Ҏޙɺ ͦΕΛར༻͢Δίʔυ͕ v1 ͔ v2 ͔Λҙࣝ͢Δඞཁ͕ͳ͍Α͏ʹϙϦϞʔϑΟοΫͳ࣮ ૷Λߦ͍·ͨ͠ɻͦΕʹΑΓɺ ίʔυ্ͷෳࡶੑͷܰݮͱকདྷ v2ʹҠߦ͖͠ΔࡍͷӨڹൣғͷۃখԽ͕Ͱ͖͍ͯ·͢ɻ gemΛ࡞ͬͨ࿩ Ruby/Railsͷ޷͖ͳͱ͜Ζʹ ʮ͏·͘ઃܭ͢ΔͱࣗવݴޠͷΑ͏ͳ ίʔυ͕ॻ͚Δʯ ͱ͍͏΋ͷ͕͋Γ·͢ɻྫ͑͹ giftee Campaign PlatformͰɺࠓݱࡏ։࠵தͰ͸ͳ͍Ωϟϯϖʔϯʹରͯ͠Կ͔ͨ͠ ͍ͱ͖ʹɺ ʦCampaign.closing.each do ʜʧ ͷΑ͏ͳίʔυ͕ ࣮ߦͰ͖ΔͱɺͳΜͱ΋͍͑ͳ͍৺஍Α ͞Λײ͡·͢ɻ ؾ͚ͮ͹ Ruby ͕ࣗ෼ͷΩϟϦΞͷதͰ 1 ൪௕͘ॻ͍͖ͯͨݴޠʹͳ͍ͬͯ·͠ ͨɻ͜Ε͔Β΋ࣗ෼ͷࢥߟͷ฼ޠͱͯ͠ɺ ௕͘෇͖߹͍͖͍ͬͯͨͳͱࢥ͍ͬͯ·͢ɻ Engineering Inside ։ൃͨ͠ gem ͷ URL Λష͓ͬͯ͘ͷͰɺ ΋͠χʔζ͕͋Ε͹࢖ͬͯΈ͍ͯͩ͘͞! https ://github.com/megane42/ecs_au toscaling_scheduler ϙϦϞʔϑΟζϜΛ࢖ͬͯTwitter APIΛஈ֊తʹόʔδϣϯΞοϓ͢Δ giftee Campaign Platform (GCP) giftee Campaign Platform͸ɺσδλϧΪϑτΛ࢖ͬͨΩϟϯϖʔϯΛߦ͍͍ͨ๏ਓ޲͚ͷ SaaSϓϩμΫτͰ͢ɻྫ͑͹ɺ ɾ ಛఆͷ TwitterΞΧ΢ϯτΛϑΥϩʔͨ͠ΒɺநબͰσδλϧΪϑτΛϓϨθϯτ ɾ ಛఆͷγϦΞϧίʔυΛೖྗͨ͋͠ͱΞϯέʔτʹճ౴͢Δͱɺ΋Εͳ͘σδλϧΪ ϑτΛϓϨθϯτ ͷΑ͏ʹɺ༷ʑͳઃఆͷΩϟϯϖʔϯΛॊೈʹߏங͢Δ͜ͱ͕ՄೳͰ͢ɻ ΪϑςΟͷσδλϧΪϑτൃߦΞηοτΛ׆͔͢͜ͱͰɺ৚݅൑ఆޙʹͦͷ৔ͰσδλϧΪϑτ Λൃߦ͠ɺ ͙͢ʹΤϯυϢʔβʔʹಧ͚Δ͜ͱ͕Ͱ͖Δͷ͕ಛ௃Ͱ͢ɻ ར༻γʔϯͷྫ URLʢڞ௨ʣ ݸผʹϓϨθϯτ ʮೝূʯ ʹΑΔϢχʔΫԽ ి࿩൪߸ ͭͰ ճ·Ͱ ΞΧ΢ϯτͰ ճ·Ͱ ड͚औͬͨγϦΞϧίʔυ ͭͰ ճ·Ͱ ΤϯδχΞ kazama ٕज़ελοΫ ։ൃݴޠ ŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋ Ruby ϑϨʔϜϫʔΫ ŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋ Ruby on Rails ϑϩϯτΤϯυ ŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋ jQuery ࣮ߦ؀ڥ ŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋ ECS on Fargate σϓϩΠŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋ AWS Copilot σʔλϕʔε ŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋ Aurora MySQL CI/CD ŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋ GitHub Actions ߏ੒؅ཧ ŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋ Terraform αʔϏε؂ࢹ ŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋŋ Sentry, New Relic Product Book P.19 RubyKaigi2024 P.18