Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
20230227-engineer-type-talk.pdf
Search
Naoya Ito
November 16, 2023
Programming
88
74k
20230227-engineer-type-talk.pdf
Naoya Ito
November 16, 2023
Tweet
Share
More Decks by Naoya Ito
See All by Naoya Ito
Functional TypeScript
naoya
15
6k
TypeScript 関数型スタイルでバックエンド開発のリアル
naoya
70
33k
シェルの履歴とイクンリメンタル検索を使う
naoya
8
3.1k
関数型プログラミングと型システムのメンタルモデル
naoya
62
100k
TypeScript による GraphQL バックエンド開発
naoya
28
34k
フロントエンドのパラダイムを参考にバックエンド開発を再考する / TypeScript による GraphQL バックエンド開発
naoya
67
24k
「問題から目を背けず取り組む」 一休の開発チームが6年間で学んだこと
naoya
144
59k
一休の現在と、ここまでの道のり
naoya
90
41k
技術的負債と向き合う
naoya
256
77k
Other Decks in Programming
See All in Programming
エンジニアが挑む、限界までの越境
nealle
1
320
파급효과: From AI to Android Development
l2hyunwoo
0
160
REALITY コマンド作成チュートリアル
nishiuriraku
0
120
ウォンテッドリーの「ココロオドル」モバイル開発 / Wantedly's "kokoro odoru" mobile development
kubode
1
290
プロダクトエンジニアのしごと 〜 受託 × 高難度を乗り越えるOptium開発 〜
algoartis
0
200
Flutterでllama.cppをつかってローカルLLMを試してみた
sakuraidayo
0
140
eBPF超入門「o11yに使える」とは (20250424_eBPF_o11y)
thousanda
1
110
個人開発の学生アプリが企業譲渡されるまで
akidon0000
2
1.2k
Instrumentsを使用した アプリのパフォーマンス向上方法
hinakko
0
240
MySQL初心者が311個のカラムにNot NULL制約を追加していってALTER TABLEについて学んだ話
hatsu38
2
110
GitHub Copilot for Azureを使い倒したい
ymd65536
1
330
Storybookの情報をMCPサーバー化する
shota_tech
2
880
Featured
See All Featured
Navigating Team Friction
lara
185
15k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
700
The Cost Of JavaScript in 2023
addyosmani
49
7.8k
Making Projects Easy
brettharned
116
6.2k
Adopting Sorbet at Scale
ufuk
76
9.4k
Typedesign – Prime Four
hannesfritz
41
2.6k
Reflections from 52 weeks, 52 projects
jeffersonlam
349
20k
The Invisible Side of Design
smashingmag
299
50k
The World Runs on Bad Software
bkeepers
PRO
68
11k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
Mobile First: as difficult as doing things right
swwweet
223
9.6k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Transcript
͘׆༂Ͱ͖ΔΤϯδχΞʹͳΔͨΊʹʁ ٕज़ऀͱͯ͠େʹ͍ͨ͜͠ͱ גࣜձࣾ Ұٳ ҏ౻
ҏ౻ • גࣜձࣾҰٳ ࣥߦһ $50 ݄ʙ • ۙ͘
8FC։ൃΛத৺ʹ͖ͬͯ·ͨ͠ – Ϛωδϝϯτɺ։ൃͱͲ – ࣄͰ 5ZQF4DSJQU όοΫΤϯυ झຯͰ )BTLFMMΛΑ͘ॻ͖·͢
2ʮ͘׆༂Ͱ͖ΔΤϯδχΞʹͳΔͨΊʹ ʯ • ສਓʹޮ͘ॲํᝦɺΘ͔Γ·ͤΜɻ͝ΊΜͳ͍͞ • ʮ͜͏͢Ε͍͍ʯΘ͔Βͳ͍ • ࣗͷաڈͷࣦഊɺ͔ͦ͜Βͷলͷڞ༗Ͱ͖ΔͷͰɺͦ͏͍͏ΤϐιʔυΛ͠·͢
ΤϐιʔυҰཡ • FQରॲྍ๏͔ΓͰɺٕज़త͕ͪͬͱղܾ͠ͳ͔ͬͨ • FQͪΌΜͱֶ΅͏ͱࢥͬͨΒখதֶੜͷษڧ͔ΒΓ͕͠ඞཁͩͬͨ • FQΘ͔ͬͨɺͱࢥ͕࣮ͬͨફͯ͠ΈͨΒશવͰ͖ͳ͔ͬͨ • FQաڈͷܦݧΛͱʹ࡞ͬͨΒɺ͍ͮΒ͍ϓϩμΫτʹͳͬͯ͠·ͬͨ •
FQϚωδϝϯτʹϑΥʔΧεͨ݁͠Ռɺେ͖ͳ՝͕શ͘ղফͰ͖͍ͯͳ͔ͬͨ • FQۤखྖҬΛਓʹ͍ͤͯͨΒɺࢧԉ͕ޙखʹճͬͯ͠·ͬͨ
FQେྔͷτϥϑΟοΫΛࡹ͔ͶͳΒͳ͍ • ͝Ζɺ࣌୲͍ͯͨ͠γεςϜ͕աෛՙʹͳΓαʔόʔμϯ͕සൃ • ·ͩϏοτͰɺΫϥυαʔϏεͰͳ͍࣌ • ৽ଔ͔Β͑ͯ͘Β͍Ͱͷग़དྷࣄ
ରॲྍ๏Λ܁Γฦͨ͠ • ҋӢʹ͍σΟεΫʹͯ͠ΈͨΓʜ • )551αʔόʔσʔλϕʔεͷઃఆΛνϡʔχϯάͯ͠ΈͨΓʜ • αʔόʔΛ૿ઃͯ͠ΈͨΓʜ
ঢ়گશ͘ྑ͘ͳΒͳ͍ • ͕ͯ͢ରྍ๏ • ͨ·ͨ·ͦͷ࣌ى͖͍ͯΔݱʹɺྍ๏͕߹͍ͬͯΕվળ͢Δ͕ʜ ʮ͜͏͢Εɺ͜͏ͳΔʯͱ͍͏ύλʔϯ͚ͩͰ͕ղܾͰ͖ͳ͍ ʜബʑΘ͔͍͕ͬͯͨͦͷ͕࣌དྷͯ͠·ͬͨ
ͨ·ͨ·खʹऔͬͨҰͷຊ
-JOVYΧʔωϧͷιʔείʔυ$16ΞʔΩςΫνϟͷຊΛಡΈړΔ
None
None
جૅ͕ࣝΓ͍ͯͳ͔ͬͨ • ෛՙରࡦʹɺϋʔυΣΞ04ͰԿ͕ى͖͍ͯΔ͔ΛѲ͢Δ͜ͱ͕ॏཁ • ʮղܾࡦʯͰͳ͘ʮͷݟۃΊํʯ • ࣌ͷࣗʹΛݟۃΊΔͨΊͷجૅ͕ࣝෆ͍ͯͨ͠ – ϩʔυΞϕϨʔδɺ$16༻ɺϝϞϦར༻ঢ়گɻશͯงғؾͰଊ͍͑ͯͨ –
Χʔωϧ෦ͰԿʹج͍ͮͯɺͲ͏ܭଌ͞Ε͍ͯΔ͔ɻࣈԿ͕ى͖͍ͯΔ͜ͱΛ͍ࣔͯ͠Δ͔ ʮ͋͋͢Ε͜͏ಈ͘ʯΛ֮͑Δ͚ͩͰղܾͰ͖ͳ͍ྖҬ͕͋Δ͜ͱΛ௧ײ
FQجૅେࣄͩͳɺͱࢥͬͯษڧͯ͠Έͨͷͷʜ • ίϯϐϡʔλαΠΤϯεͷجૅࣝΛֶश͠Α͏ͱࢥͬͨ – $4ઐ߈Ͱͳ͔ͬͨ ͱ͍͏͔େֶ༡ͼโ͚͍ͯͨͷͰʜ • ΞϧΰϦζϜͱσʔλߏɺใݕࡧɺਪનٕज़ͳͲ
ֶΘ͔Βͳ͍
͕ࣜग़ͯ͘Δͱख͕ࢭ·ΔɻֶΛΓ͢ • େֶͷઢܗͷษڧΛ͢Δ ˠશવΘ͔Βͳ͍ ʮ΄΅Ε͍ͯΔͳʜʯ • ߴߍֶʹḪΔ ˠ डݧษڧͰࢄʑͬͨ͠ɺΘ͔Δͣʜ ͑ɺΘ͔Βͳ͍
• தֶੜͷֶ·ͰḪΔ ˠ Θ͔ͬͨͱݴ͑ͳ͍ ͦͦɺࣗதֶɾߴߍɾେֶͱͰֶΛʮΘ͔ͬͯʯ͍ͨΜͩΖ͏͔ʜ ҼղɺϕΫτϧɺඍੵɺݻ༗ʜܭࢉͰ͖͍͕ͯͨʜ
ʮΕͨʯͰͳ͘ʮΘ͔͍ͬͯͳ͔ͬͨʯ ͕ࣗԿΛΘ͔Βͳ͍͔ɺͱ͍͏͜ͱ͔ΒΛഎ͚͍ͯͨ͜ͱ͕Θ͔ͬͨ ͭΒ͍
Ͱɺ৺ΛંΔΑ͏ͳ͜ͱͰͳ͍ • ʰ͕ࣗࢥ͍ͬͯͨ΄Ͳ಄͕Α͘ͳ͔ͬͨʱ – IUUQTCMPHDPNFOUSZQ – ΊͪΌͪ͘Όྑ͍ΤοηΠɻԿಡΈฦ͍ͯ͠Δ l͏·͘Δֶੜͦ͏͍͏ࠔʹͿ͔ͭͬͨͱ͖ɺࣗͷྗෆͱഅࣛ͞Ճݮʹ໓ೖΔ ؾ࣋ͪͱಆ͍ɺࢁͷ;ͱͰখ͞ͳาΈΛ࢝Ί·͢ɻ൴ΒɺϓϥΠυʹই͕ͭ͘͜ͱ ɺࢁ͔Βͷܠ৭ΛோΊΔͨΊͰ͋ΕऔΔʹΒͳ͍ͱ͍͏͜ͱΛ͍ͬͯΔͷͰ
͢ɻz
͜ͷΤϐιʔυʹ͏গ͠ଓ͖͕͋Δ • ֶݏ͍Λࠀ͠ɺ.*5ͷڭՊॻʹͳͬͨΞϧΰϦζϜͷຊͳͲͨ͘͞ΜಡΜͩ • ܭࢉྔͷഽײ͕֮ʹ͖ͭɺେنใݕࡧγεςϜΛߏͰ͖ΔΑ͏ʹͳͬͨ • ΞϧΰϦζϜͷֶతੑ࣭͍͘Β͔Θ͔ΔΑ͏ʹͳͬͨ • ࣗ৴͕͍ͭͯ͘Δʜ
None
͋Δͱ͖ɺڝٕϓϩάϥϛϯάʹखΛग़ͯ͠ΈΔ • ΞϧΰϦζϜ৭ʑ͔ͬͨΒ͍͚ΔͰ͠ΐ͏ʂ • ݁ՌɺҰղ͚·ͤΜͰͨ͠
ʮࣝʯ͕͋Ε͕ղ͚Δͱ͍͏ࢥ͍ࠐΈ • هԱ͞·͟·ͳଞͷهԱମݧͱͷ૬ޓ࡞༻ͰʮࣝʯʹͳΔ • ϓϩάϥϛϯάɺ࣮ʮମԽʯ͠ͳ͍ͱॻ͚ΔΑ͏ʹͳΒͳ͍
FQεϚʔτϑΥϯͷ͕࣌དྷ͔ͨΞϓϦ࡞ͬͨ͜ͱ͕ͳ͍ • ʹͳΔͱ J1IPOF "OESPJE͕ٸʹγΣΞΛ৳࢝͠ΊΔ • νʔϜͰεϚʔτϑΥϯ͚ͷΞϓϦΛ࡞Δ͜ͱʹͳͬͨ • 6*Ͳ͏͠Α͏ʜ 8FC։ൃͷܦݧͦͦ͜͜ੵΜͩࢲʮಉ͡εΫϦʔϯͷΠϯλϑΣʔεͩ
͔Βɺ8FCͷܦݧ͕׆͔ͤΔͰ͠ΐ͏ʯ – ܦݧͷ͋ΔਓͳΒΘ͔Δ௨Γɺ͜Ε ͱͯ ྑ͘ͳ͍ํͰ͢
݁Ռɺ͍ͮΒ͍ 6*͕Ͱ͖ͯ͠·ͬͨ • ޙ J04ΞϓϦΛࣗͷखͰ࡞ͬͯΈͯɺϛεδϟοδͩͬͨͷ͕Α͘Θ͔ͬͨ – J04ʹ J04ͷ 6*ΨΠυϥΠϯ͕͋ΓɺͦͷΨΠυϥΠϯʹԊͬͯ࡞Δͷकഁͷक –
6*,JUͲΜͳ 6*ͳΒࣗવʹ࣮ݱͰ͖ͯɺͲ͏͍͏͜ͱແཧ͠ͳ͍ͱͰ͖ͳ͍ͷ͔ ຊΘ͔͍ͬͯͳ͍͜ͱͳͷʹɺྨࣅͷܦݧΛͯΊͯ ࣗ͋ΔఔΘ͔͍ͬͯΔͱࡨ֮ͯ͠͠·͍ͬͯͨ
FQ৭ʑͳܦݧΛܦͯ$50ि ʜҰٳͷ $50ʹ • ͋Δఔख़ͨ͠اۀʹ $50ͱͯ͠ೖࣾ • Ϛωδϝϯτͷ͕ʹ͖͍ͭ͢ – ٕज़తͳ՝ͩͱօࢥ͍ͬͯΔ͕ɺ࣮ࡍʹਓͷ՝Ͱ͋Δ͜ͱ͕ଟ͍
– ʰϐʔϓϧΣΞʱʹͦΜͳ͜ͱ͕ॻ͍ͯ͋Δ
ϚωδϝϯτͰɺେখ͞·͟·Λղܾ͢Δ • ৭ʑͳ͜ͱ͕վળ͞Ε͍ͯͬͨ • ͜ͷؒɺϚωδϝϯτʹ࣌ؒΛ͍ͬͯͨͷͰ΄ͱΜͲ։ൃͰ͖͍ͯͳ͍
ͱ͜Ζ͕पล͔Γ͕ղܾ͞Ε͍ͯͯɺҰ൪େ͖ͳ͕ղܾ͞Ε͍ͯͳ͍ 技術的負債 ϨΨγʔ ΞʔΩςΫνϟ (JU)VC σϓϩΠ ࣗಈԽ ϩάͷՄࢹ Խ
4MBDL ใڞ༗ ϏϧυύΠ ϓϥΠϯ ΫϥυҠ ߦ
Ұ൪հͰେ͖ͳ͕Կ͔Θ͔͍ͬͯͨͷʹʜ • ʮϚωδϝϯτͰ৫Λ׆ੑԽ͍͚͍͔ͯͭ͠վળʹܨ͕Δͣʯ – ͜Ε࣮ࡍʹઓज़Ͱͳ͘ɺͨͩͷئͰ͔͠ͳͬͨ
ೖ͙ࣾͯ͢͠ʹϚωδϝϯτʹຉ͠ɺ։ൃΛ͍ͯ͠ͳ͔ͬͨ • ։ൃͰ͖͍ͯͳ͍͕ނʹɺຊؙʹඈͼࠐΉͷ͕ා͍ • ݁Ռɺ։ൃ͠ͳ͍ͷͰ͍ͭ·Ͱܦͬͯຊؙͷ՝ʹର͢Δղ૾্͕͕Βͳ͔ͬͨ ʮϘτϧωοΫϚωδϝϯτʯʮٕज़ͷ՝Ͱͳ͘ਓͷ՝ʯ ͳͲͱݴͬͯϓϩμΫτٕज़త՝ʹਖ਼໘͔Β͖߹͑ͳ͍ࣗΛޡຐԽ͍ͯͨ͠
ʜͱ͍͏Θ͚ͰࣗΒ։ൃΛઌಋ͢ΔΑ͏ʹͨ͠ • େ͖͗͢ΔɺͦΕΛͩͱࢥͬͯղܾͰ͖ͳ͍͔Βɺ͕ͯ୭ͦ͏͍͏͕ ͋Δೝࣝ͢Β࣋ͨͳ͘ͳΔ • ͜͏͍͏ঢ়گτοϓμϯͰΓࠐΉ͜ͱ͕Ͱ͖ΔͳΒɺͦΕ͕Ұ൪͍
FQόοΫΤϯυ։ൃʹूதɺϑϩϯτΤϯυಘҙͳਓʹͤͯʜ • ࣗΒ։ൃΛઌಋ͢ΔɺͱݴͬͯશͯΛ͕ࣗϦʔυ͢Δͷ͍͠ • όοΫΤϯυࢲ͕ɺϑϩϯτΤϯυಘҙͳςοΫϦʔυʹ͓ͤͨ͠
ޙʹԿ͕ى͖͔ͨ • 8FC։ൃͷؔ৺͝ͱ͕ϑϩϯτΤϯυଆʹҠ͍ͬͯͬͨ • ϑϩϯτΤϯυ։ൃͷਐาʹେͳΞϓϩʔν͕ඞཁʹͳ͍ͬͯͬͨ – 41"ͷશҠߦɺσβΠϯγεςϜͷߏஙɺϑϩϯτΤϯυͷΠϯϑϥετϥΫνϟඋʜ • ͔͠͠ɺࠓࢥ͑ेͳମ੍తࢧԉ͕Ͱ͖͍ͯͳ͔ͬͨ ϑϩϯτΤϯυྖҬଞͷਓʹͤΑ͏ͱͯؔ͠৺·Ͱ͛ͯ͠·͍
Ϛωδϝϯτͱͯ͠ࢧԉΛ͖࣌͢ʹɺͦΕʹؾͮ͘͜ͱ͕Ͱ͖ͳ͔ͬͨ
ࠓ͓ͨ͠͠Τϐιʔυ • FQରॲྍ๏͔ΓͰɺٕज़త͕ͪͬͱղܾ͠ͳ͔ͬͨ • FQͪΌΜͱֶ΅͏ͱࢥͬͨΒখதֶੜ͔ΒΓ͕͠ඞཁͩͬͨ • FQΘ͔ͬͨɺͱࢥ͕࣮ͬͨફͯ͠ΈͨΒશવͰ͖ͳ͔ͬͨ • FQաڈͷܦݧΛͱʹΛ࡞ͬͨΒɺ͍ͮΒ͍ϓϩμΫτʹͳͬͯ͠·ͬͨ •
FQϚωδϝϯτʹϑΥʔΧεͨ݁͠Ռɺେ͖ͳٕज़՝͕શ͘ղফͰ͖͍ͯͳ͔ͬͨ • FQۤखྖҬΛਓʹ͍ͤͯͨΒɺࢧԉ͕ޙखʹճͬͯ͠·ͬͨ
ʮ͜͏͢Εɺ͜͏ͳΔʯͱ͍͏ύλʔϯͰ͕ղܾͰ͖ͳ͍ ʜബʑΘ͔͍͕ͬͯͨͦͷ͕࣌དྷͯ͠·ͬͨ ͕ࣗԿΛΘ͔Βͳ͍͔ɺͱ͍͏͜ͱ͔ΒΛഎ͚͍ͯͨ͜ͱ͕Θ͔ͬͨ ͭΒ͍ ຊΘ͔͍ͬͯͳ͍͜ͱͳͷʹɺྨࣅͷܦݧΛͯΊͯ ࣗ͋ΔఔΘ͔͍ͬͯΔͱࡨ֮ͯ͠͠·͍ͬͯͨ ʮϘτϧωοΫϚωδϝϯτʯʮٕज़ͷ՝Ͱͳ͘ਓͷ՝ʯ ͳͲͱݴͬͯϓϩμΫτٕज़త՝ʹਖ਼໘͔Β͖߹͑ͳ͍ࣗΛޡຐԽ͍ͯͨ͠ ϑϩϯτΤϯυྖҬଞͷਓʹͤΑ͏ͱͯؔ͠৺·Ͱ͛ͯ͠·͍ Ϛωδϝϯτͱͯ͠ࢧԉΛ͖࣌͢ʹɺͦΕʹؾͮ͘͜ͱ͕Ͱ͖ͳ͔ͬͨ
ࢹڱࡥͱղ૾Լͷ܁Γฦ͠ • Կ͔ʹूத͢Δͱࢹ͕ڱ͘ͳͬͯɺͦΕҎ֎͕Θ͔Βͳ͘ͳΔ • ࢹΛ͘͢Δͱղ૾͕Լ͕ͬͯɺࡉ෦͕Θ͔Βͳ͘ͳΔ • Θ͔Βͳ͘ͳ͍ͬͯΔͷʹʮ·ͩΘ͔͍ͬͯΔʯͱࢥ͍ࠐΜͩΓɺʮશવΘ͔ΒΜʯͱΛ ᛉΔͱ͕ى͖Δ
ࣗͷόά͍ͬͯΔ • Θ͔͍ͬͯͳ͍͜ͱΛΘ͔͍ͬͯΔͱࡨ֮͢Δ • Δ͖͜ͱΛ͍ͬͯͳ͍ͷʹɺ͍ͬͯΔͱࢥ͍ࠐΜͩΓ͢Δ
͜ͷόά͔ΒಀΕ͍ͨ • Θ͔͍ͬͯͳ͜ͱɺΘ͔Δ͔͠ͳ͍ • ͞·͟·ͳٕज़ྖҬʹ͍ͭͯɺͰ͖Δ͚ͩߴ͍ղ૾Ͱཧղ͍ͯ͠Δঢ়گΛҡ͍࣋ͨ͠ બΓΈΛͤͣʹֶशΛܧଓ͢ΔɻखΛࢭΊͳ͍ɺͱ͍͏γϯϓϧͳํ๏Ҏ֎ʹ ͋·Γྑ͍ղܾࡦࠓͷͱ͜Ζࢥ͍͍͍ͭͯͳ͍
ۙگ • ϓϩάϥϛϯάݴޠΛͪΌΜͱཧղ͍ͨ͠ͱࢥͬͯɺझຯͰ )BTLFMMΛϝΠϯͷݴޠʹ͠ ͯຖॻ͍͍ͯΔ – ܧଓ͍ͯͬͯ͠Δͱɺൃݟ͕ͨ͘͞Μ͋Δ ʜڝϓϩΛҰղ͚ͳ͔ͬͨͷͳ͔ͥΘ͔ͬͨ – ʮͬͱૣ͘Δ͖ͩͬͨʯ
·ͨͦΕ͔ɺԿͩ – ʮ3VTUΒͳ͖Όͳʔʯ Ϡόͦ͏ɻϑϥάͰʜ
݁ͼ • Ͳ͏Βࣗͷ৺ͱͯऑ͍ɻԿ͔ͱࣗࣗʹݴ͍༁Λͯ͠͠·͏ • ͜ͷࣗʹର͢Δݴ͍༁͔ΒಀΕ͍ͨɻਓੜޙͬͱࣗΛߠఆͯ͠ੜ͖͍͖͍ͯͨ – Δ͖͜ͱΛ͍ͬͯΔࣗͳΒߠఆͰ͖ͦ͏ – ݴ͍༁͔ΒಀΕΔʹɺֶशΛଓ͚ΔҎ֎ʹํ๏ͳͦ͞͏ –
ܧଓͷ౮Λফ͞ͳ͍Α͏ஸೡʹଓ͚͍͖͍ͯͨͱࢥ͍ͬͯΔ ʮٕज़ऀͱͯ͠େʹ͍ͨ͜͠ͱʯͷࠓͷճ ݁Ռʮྑ͍ιϑτΣΞٕज़ऀʯʹҰาͰ͚ۙͮͨΒྑ͍ͱࢥ͏
l͏·͘Δֶੜͦ͏͍͏ࠔʹͿ͔ͭͬͨͱ͖ɺࣗͷྗෆͱഅࣛ͞Ճݮʹ໓ೖΔ ؾ࣋ͪͱಆ͍ɺࢁͷ;ͱͰখ͞ͳาΈΛ࢝Ί·͢ɻ൴ΒɺϓϥΠυʹই͕ͭ͘͜ͱ ɺࢁ͔Βͷܠ৭ΛோΊΔͨΊͰ͋ΕऔΔʹΒͳ͍ͱ͍͏͜ͱΛ͍ͬͯΔͷͰ ͢ɻz