Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
自分だけが頑張るのをやめて、フルスタックなチームを作る
Search
KazukiHayase
June 21, 2023
Technology
3.7k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
自分だけが頑張るのをやめて、フルスタックなチームを作る
KazukiHayase
June 21, 2023
More Decks by KazukiHayase
See All by KazukiHayase
なぜ Temporal の大小比較には compare しかないのか / Why Does Temporal Only Have compare() for Comparisons
kazukihayase
1
210
entのPrivacy機能とgo/astを使って、意図しないDBアクセスを防ぐ
kazukihayase
1
450
go testのキャッシュの仕組みにDeep Diveする
kazukihayase
0
200
要件定義・デザインフェーズでもAIを活用して、コミュニケーションの密度を高める
kazukihayase
0
620
CIでのgolangci-lintの実行を約90%削減した話
kazukihayase
0
570
もし今からGraphQLを採用するなら
kazukihayase
13
6.1k
Goでテストをしやすくするためにやったこと
kazukihayase
1
950
GraphQLクライアントの技術選定 2023冬
kazukihayase
9
8k
Introduction and Insights of the Hasura-based Architecture
kazukihayase
0
1.2k
Other Decks in Technology
See All in Technology
From Vanilla Kubernetes to a Batteries-Included Platform: Developer Experience at 1,300+ Clusters
yosshi_
0
680
AIとペアプロを始める。人とのペアプロをやめる。ペアプロの良さを改めて知る。もっと好きになった。 / Rediscovering Pair Programming
honyanya
1
330
GoにおけるFFIのこれまでとこれから
goccy
5
2.3k
「重なり」は迎える側がつくる ― 人もAIエージェントも歓迎するプロダクトエンジニアリング ―
go0517go
PRO
0
280
アプリをもっと"iOSアプリっぽく"する小さな工夫 / Small Touches That Make Your App Feel More Like an iOS App
matsuji
1
370
「図書館」という名前のままでいいのか -Code4Lib JAPANカンファレンス2026 アンカンファレンス報告- / Code4Lib JAPAN Conference 2026: Unconference Report
ykiyota
0
160
Amazon S3 Tablesに全部任せてみた結果——コンパクション/スナップショット管理は本当に手放せるか
shigeruoda
1
460
Gitは怖い?共有ワークスペースから始めるSnowflakeチーム開発
coco_se
0
100
Tab5をRubyで動くパソコンにする
kishima
2
300
HRC_Frontend_Conference_Fukuoka_2026.pdf
ts020
0
360
作り直せるコードは迅速に 作り直せないDBは慎重に - AI時代のプロダクトエンジニアが「判断の不可逆性」で開発速度を変える話
kinosuke01
0
300
DEFCON_CHV_CTF_Write-up.pdf
bata_24
0
130
Featured
See All Featured
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
680
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
2.8k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
520
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
500
Accessibility Awareness
sabderemane
1
210
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
How Software Deployment tools have changed in the past 20 years
geshan
1
34k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
420
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.4k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
820
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.6k
Transcript
͚͕ࣗͩؤுΔͷΛΊͯɺϑϧελοΫͳνʔϜΛ࡞Δ ԶͨͪͷຊʹΓ͔ͨͬͨDevDay 2023.06.21
ૣًʢ@KazukiHayaseʣ • 2021BuySell Technologies৽ଔೖࣾ • ग़ཧSaaSνʔϜ ϓϩδΣΫτϦʔμʔ • Go /
TypeScript / ։ൃੜ࢈ੑվળ • ۙͷొஃྺ ◦ ʲZOZO x ϕʔεϚΩφ x όΠηϧʳGoษڧձ #1 ◦ ʲ։ൃੜ࢈ੑ Meetup #1ʳ։ൃੜ࢈ੑՄࢹԽʹΑΔ มԽ~ࣄྫLT͔ΒֶͿϕετϓϥΫςΟε~ ◦ ϦΫϧʔτ × BASE × όΠηϧ ʲୈ1ճϑϩϯτΤϯυษڧձʳReact & GraphQL
None
None
͚͕ࣗͩؤுΔͷΛΊͯ ϑϩϯτΤϯυ։ൃΛΈԽ͢Δ͜ͱͰ ϑϧελοΫͳνʔϜΛ࡞ͬͨ ࠓ͢͜ͱ
ΞδΣϯμ എܠ 01 2ͭͷଆ໘͔ΒͷΞϓϩʔν 02 ΞϓϩʔνͷޮՌ 03 ·ͱΊ 04
01 എܠ
࣌ͷ։ൃମ੍ ΤϯδχΞϦϯάϚωʔδϟʔ ʢ1໊ʣ ϑϩϯτΤϯυΤϯδχΞ ʢ1໊ɺࣗʣ όοΫΤϯυΤϯδχΞ ʢ3໊ʣ EMͱ͕ࣗPdM݉
• ϑϩϯτΤϯυΤϯδχΞࣗҰਓͰPdM݉ • ୯ಠͰਐΊΒΕΔͷͰ։ൃεϐʔυૣ͍ • ϑϩϯτΤϯυ։ൃͷશݖΛҕͶΒΕ͍Δ ࣌ͷ։ൃମ੍
• ϑϩϯτΤϯυͷ։ൃॱௐ • ࣗͷΞτϓοτ͕ϓϩμΫτਐḿʹ݁͢Δ • ৽ଔ1ͳͷͰΔؾʹຬͪᷓΕ͍ͯΔ ։ൃॳظ ͕ࣗؤுΕ։ൃ্͕खͩ͘Ζ͏ͱ͍͏ࠜڌͷͳ͍ࣗ৴
։ൃॳظ ࣗ৴ νʔϜ։ൃͷཧղ νʔϜ։ൃͷཧղ͕ઙ͍͕ނͷࣗ৴
• ։ൃҎ֎ͷۀ͕૿Ճ͠ɺ࡞ۀ͕࣌ؒ֬อͰ͖ͳ͍ • ଞͷϝϯόʔʹϑϩϯτΤϯυͷλεΫΛ͓ئ͍Ͱ͖ͳ͍ ։ൃͷԆ ͕ࣗ࡞ۀͰ͖ͳ͍ͱϑϩϯτΤϯυͷ։ൃ͕ਐ·ͳ͍
ϑϩϯτΤϯυ։ൃͷԆ͚͕ͩݪҼͰͳ͍͕ ϦϦʔεΛԆظ͢Δ͜ͱʹ ϦϦʔεԆظ
• ݸਓͷΞτϓοτྔʹݶք͕͋Δ • ҰਓͰؤுͬͯεέʔϧ͠ͳ͍ • ༏ઌ͢Δ͖νʔϜͱͯ͠ͷΞτϓοτ ϚΠϯυͷมԽ
νʔϜΛมԽͤ͞ΔํϚΠϯυΛγϑτ
02 2ͭͷଆ໘͔ΒͷΞϓϩʔν
2ͭͷଆ໘͔ΒͷΞϓϩʔν ৫໘ 01 ٕज़໘ 02
৫໘͔ΒͷΞϓϩʔν ߹ҙܗ 01 ֶशͷଅਐ 02 ։ൃମ੍ͷվળ 03
৫໘͔ΒͷΞϓϩʔν ߹ҙܗ 01 ֶशͷଅਐ 02 ։ൃମ੍ͷվળ 03
[৫໘] ߹ҙܗ • όΠηϧͷϑϧελοΫʹ։ൃ͢ΔจԽ • ଐਓԽͱ͍͏νʔϜ๊͕͑Δ՝ શһ͕ϑϩϯτΤϯυͷ։ൃͰ͖ΔΑ͏ʹͳΔͱ͍͏߹ҙܗ
[৫໘] ߹ҙܗ ͡Ίʹ߹ҙΛऔΔ͜ͱͰɺͦͷޙͷҙࢥܾఆ͕εϜʔζʹͳΔ e.g. • ۀ࣌ؒͰͷษڧձͷ։࠵ • Ұ࣌తͳੜ࢈ੑԼͷڐ༰
߹ҙܗνʔϜΛมԽͤ͞ΔͨΊͷϑΝʔετεςοϓ
• ݱঢ়ͷ՝ͱཧͷঢ়ଶΛڞ༗͢Δ • ݱঢ়ͱཧͷΪϟοϓΛຒΊΔͨΊͷHowΛٞ͢Δ • ϕʔε͕Ͱ͖ΔͷͰ͕ٞͿΕʹ͍͘ [৫໘] ߹ҙܗͷίπ
৫໘͔ΒͷΞϓϩʔν ߹ҙܗ 01 ֶशͷଅਐ 02 ։ൃମ੍ͷվળ 03
[৫໘] ֶशͷଅਐ ษڧձ Ϟϒϓϩ ϑϩϯτΤϯυ ڞ༗ձ
[৫໘] [ֶशͷଅਐ] ษڧձ • TypeScriptReactͷجૅ͔ΒΩϟονΞοϓ • ۀͰ͍ͬͯΔٕज़ελοΫͰTodoΞϓϦΛ࡞ • ຖ1࣌ؒɺۀ࣌ؒʹ࣮ࢪ
[৫໘] [ֶशͷଅਐ] Ϟϒϓϩ • ࣮ࢪ͢Δ࣌ΛܾΊͯɺग़ࣾͯ͠ର໘Ͱ࣮ࢪ • ͋Β͔͡ΊϞϒϓϩ༻ͷλεΫΛ༻ҙ Ϟϒϓϩ༻ͷλεΫͷϦϯΫ
[৫໘] [ֶशͷଅਐ] Ϟϒϓϩ ç φϏήʔλʔ υϥΠόʔ ը໘ڞ༗
1. υϥΠόʔͱφϏήʔλʔʹ͔ΕΔ a. υϥΠόʔ1໊ɺͦͷଞφϏήʔλʔ b. ࣗφϏήʔλʔͷΈΛ୲ 2. υϥΠόʔ͕ը໘Λڞ༗ 3. υϥΠόʔ͕φϏήʔλʔͷࢦࣔʹै࣮ͬͯ
a. ࣭͕͋Εͦͷճ͠ͳ͕ΒਐΊΔ 4. 30ܦաͨ͠ΒυϥΠόʔΛަ [৫໘] [ֶशͷଅਐ] Ϟϒϓϩ
[৫໘] [ֶशͷଅਐ] ϑϩϯτΤϯυڞ༗ձ ࣮ͨ͠PRֶΜͩ͜ͱΛڞ༗͢ΔձΛि̍Ͱ։࠵
[৫໘] [ֶशͷଅਐ] ϑϩϯτΤϯυڞ༗ձ ςϯϓϨʔτʹै֤͕ͬͯࣗࣄલʹهࡌͯ͠ɺڞ༗ձͰॱ൪ʹൃද
[৫໘] [ֶशͷଅਐ] ϑϩϯτΤϯυڞ༗ձ ൃද༰ͷྫ
৫໘͔ΒͷΞϓϩʔν ߹ҙܗ 01 ֶशͷଅਐ 02 ։ൃମ੍ͷվળ 03
[৫໘] ։ൃମ੍ͷվળ Before • ϓϥϯχϯάͰ͕ࣗλεΫΛ༻ҙ+ղ • PRͷϨϏϡʔࣗͷApprove͕ඞਢ After • ϓϥϯχϯάͰશһͰλεΫΛ༻ҙ+ղ
• PRͷϨϏϡʔશһͷApprove͕ඞਢ
[৫໘] ։ൃମ੍ͷվળ • λεΫͷղ૾্͕͕ΓɺखΓ͕ݮগ • શͯͷPRʹΛ௨͢ͷͰɺΒͳ͍࣮͕ͳ͘ͳΔ Ұݟ͕͔͔࣌ؒΓͦ͏͕ͩɺ࠷ऴతͳϦʔυλΠϜ͘ͳͬͨ
Before [৫໘] ։ൃମ੍ͷվળ After ίϛοτ~Ϛʔδ·Ͱ͕1/4ҎԼʹॖ
ٕज़໘͔ΒͷΞϓϩʔν ։ൃϧʔϧͷඋ 01 σβΠϯγεςϜͱͷ࿈ܞ 02
ಛʹΈΛ࡞Δ͜ͱΛॏཁࢹ
ٕज़໘͔ΒͷΞϓϩʔν ։ൃϧʔϧͷඋ 01 σβΠϯγεςϜͱͷ࿈ܞ 02
ࣗͷதͰ͍݁ͯͨ͠ͷΛɺυΩϡϝϯτͱͯ͠උ [ٕज़໘] ։ൃϧʔϧͷඋ
[ٕज़໘] ։ൃϧʔϧͷඋ υΩϡϝϯτΛඋ্ͨ͠Ͱ • ESLintΛίϛοτ࣌ʹνΣοΫͯ͠ɺ։ൃϧʔϧΛڧ੍ • HygenΛར༻ͯ͠ɺϧʔϧʹԊͬͨϑΝΠϧΛੜ
[ٕज़໘] [։ൃϧʔϧͷඋ] ESLintͷྫ import/no-restricted-pathsΛར༻ͯ͠ɺ σΟϨΫτϦߏͷϧʔϧʹԊΘͳ͍importΛېࢭ
[ٕज़໘] [։ൃϧʔϧͷඋ] Hygenͷྫ σΟϨΫτϦߏʹैͬͯίϯϙʔωϯτΛੜ
ٕज़໘͔ΒͷΞϓϩʔν ։ൃϧʔϧͷඋ 01 σβΠϯγεςϜͱͷ࿈ܞ 02
[ٕज़໘] σβΠϯγεςϜͱͷ࿈ܞ • σβΠϯؔ࿈͕͔͔࣌ؒΔ͠ɺ࣮ͷ͕ࠩग़͍͢ • ແடংʹ࣮͢ΔͱσβΠϯ͕൙ཞ͢Δ
[ٕज़໘] σβΠϯγεςϜͱͷ࿈ܞ ൚༻తʹ͏ίϯϙʔωϯτFigmaͱ࣮Λಉظͤ͞Δ ͦͷίϯϙʔωϯτͷ༻ΛESLintͰڧ੍ͯ͠σβΠϯΛ౷Ұ͢Δ Typographyͷྫ
03 ΞϓϩʔνͷޮՌ
PR࡞ͷભҠ ΄ͱΜͲࣗͷΞτϓοτ͔͠ͳ͍ શһ͕Ξτϓοτ͍ͯ͠Δ ࣗҰਓͩͬͨ࣌ΑΓΞτϓοτͷ૯ྔ͕૿͍͑ͯΔ
ΞϓϩʔνͷϕΫτϧΛνʔϜʹ͚ͨ͜ͱͰ νʔϜͷ։ൃੜ࢈ੑͷ্ʹܨ͕ͬͨ
04 ·ͱΊ
·ͱΊ • ৫໘ͰͷΞϓϩʔν ◦ ߹ҙܗɺֶशͷଅਐɺ։ൃମ੍ͷվળ • ٕज़໘ͰͷΞϓϩʔν ◦ ։ൃϧʔϧͷඋɺσβΠϯγεςϜͱͷ࿈ܞ •
ϚΠϯυͱΞϓϩʔνͷมԽ͕ɺνʔϜͷੜ࢈ੑΛ্ͤͨ͞ ϫϯϚϯϓϨΠΑΓνʔϜͷউརʂ