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
Repositoryによる抽象化の理想と現実/Ideal and reality of abs...
Search
sonatard
December 04, 2019
Programming
70
19k
Repositoryによる抽象化の理想と現実/Ideal and reality of abstraction by Repository
sonatard
December 04, 2019
Tweet
Share
More Decks by sonatard
See All by sonatard
Shopifyアプリ開発における Shopifyの機能活用
sonatard
4
310
Iteratorでページネーションを実現する
sonatard
3
1.1k
Goのエラースタックトレースの歴史と今後
sonatard
14
10k
Go 1.22のEnhanced ServeMux chiから移行できるのか?
sonatard
4
510
GraphQL実践ノウハウv2
sonatard
17
2.8k
プロトコル、インターフェースとしてのGraphQL
sonatard
4
2k
GraphQL実践ノウハウ/graphql-knowhow
sonatard
40
12k
GraphQLの誤解/rethinking-graphql
sonatard
67
10k
Go1.18から導入されるnetip package/netip-package
sonatard
2
1.1k
Other Decks in Programming
See All in Programming
毎日13時間もかかるバッチ処理をたった3日で60%短縮するためにやったこと
sho_ssk_
1
180
Webエンジニア主体のモバイルチームの 生産性を高く保つためにやったこと
igreenwood
0
340
tidymodelsによるtidyな生存時間解析 / Japan.R2024
dropout009
1
790
StarlingMonkeyを触ってみた話 - 2024冬
syumai
3
270
Jakarta EE meets AI
ivargrimstad
0
260
SymfonyCon Vienna 2025: Twig, still relevant in 2025?
fabpot
3
1.2k
MCP with Cloudflare Workers
yusukebe
2
220
各クラウドサービスにおける.NETの対応と見解
ymd65536
0
110
Spatial Rendering for Apple Vision Pro
warrenm
0
110
「Chatwork」Android版アプリを 支える単体テストの現在
okuzawats
0
180
短期間での新規プロダクト開発における「コスパの良い」Goのテスト戦略」 / kamakura.go
n3xem
2
170
[JAWS-UG横浜 #76] イケてるアップデートを宇宙いち早く紹介するよ!
maroon1st
0
480
Featured
See All Featured
Code Reviewing Like a Champion
maltzj
520
39k
Fireside Chat
paigeccino
34
3.1k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
Embracing the Ebb and Flow
colly
84
4.5k
YesSQL, Process and Tooling at Scale
rocio
169
14k
How to Ace a Technical Interview
jacobian
276
23k
Imperfection Machines: The Place of Print at Facebook
scottboms
266
13k
Git: the NoSQL Database
bkeepers
PRO
427
64k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.5k
A designer walks into a library…
pauljervisheath
204
24k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
5
450
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
Transcript
1 3FQPTJUPSZʹΑΔநԽͷཧͱݱ࣮ HPMBOHUPLZPͩΑʂ(Pେձ-5େձʂ !TPOBUBSE
Appify Technologies CTO ͦͳଠ @sonatard
JOGSB 3 3FQPTJUPSZͱ w %%%ͷϨΠϠʔυΞʔΩςΫνϟͰఏএ͞Ε͍ͯΔ w 3FQPTJUPSZͰΠϯλʔϑΣʔεΛఆٛ͢Δ͜ͱʹΑΓJOGSBΛநԽɺґଘੑͷٯస w ϞοΫͷࠩ͠ସ͕͑ՄೳʹͳΓBQQMJDBUJPOͷϢχοτςετ͕ՄೳʹͳΔ BQQMJDBUJPO
3FQPTJUPSZ $MPVE%BUBTUPSF .Z42- "1* 1PTUHSF42-
4 6TFSऔಘ "DDPVOUऔಘ ߴॲཧ "DDPVOUߋ৽ τϥϯβΫγϣϯ ΞϓϦέʔγϣϯͷૹۚॲཧ
5 ͦͷ ԿΛநԽ͍ͯ͠Δͷ͔
6 நԽͱ͍͏͔ΒʹԿ͔ΛநԽ͍ͯ͠Δͣ %#"1*ΛؚΊͯ֎෦ͷ*0ͯ͢ΛநԽ͍ͯ͠Δʁ %# ,74ؚΉ ΛநԽ͍ͯ͠Δʁ 3%#.4ΛநԽ͍ͯ͠Δʁ
7 ͦ͜Ͱ۩ମྫ͔Βߟ͑ͯΈΔ
8 ͜ͷίʔυͰ3FQPTJUPSZͰ ԿΛநԽ͍ͯ͠Δ͔ߟ͑ͯΈΔ
9 ͜ͷίʔυ͚ͩͰߟ͑ͯԿΛநԽ͍ͯ͠Δ͔Θ͔Βͳ͍ நԽ͞Ε͍ͯΔ͔Β ͦ͜ΠϯλʔϑΣʔεͷ༷Λ֬ೝ͠ͳ͚ΕͳΒͳ͍
10 ԿΛநԽ͍ͯ͠Δ͔ݴޠԽ͠Α͏ νʔϜϝϯόʔͰڞ௨ͷೝࣝΛ࣋ͱ͏
11 %%%ʹॻ͍ͯ͋Δ͔Β3FQPTJUPSZΛ༻ҙ͢Δ/( நԽ͢ΔͨΊʹ3FQPTJUPSZΛར༻͠Α͏
12 ͦͷ ͦͷநԽਖ਼͍͔͠
13 ֤3FQPTJUPSZɺ%#"1*ίʔϧؚΊͨ ֎෦ͷ*0ͯ͢ΛநԽ͍ͯ͠Δ߹ ͜ͷநԽਖ਼͍͠ʁ
14 ਖ਼͘͠ͳ͍
15 நԽ͞Ε͍ͯΔͨΊɺ"DDPVOU3FQPTJUPSZ"1*ίʔϧʹΑΓଞͷ.JDSPTFSWJDFTΞΫηε͍ͯ͠Δ Մೳੑ͕͋Δɻ͔͠͠"1*ίʔϧ%#ͷτϥϯβΫγϣϯର֎ɻ "DDPVOU్தͰΤϥʔʹͳͬͨ߹ʹదͳϩʔϧόοΫ͕͞Εͳ͍ɻ "DDPVOU͕)551Ͱ͋Δͱ͍͏ҙࣝΛͯ͠ϩʔϧόοΫॲཧͷ࣮͕ඞཁɻ
16 ΞϓϦέʔγϣϯ࣮ऀͷࢥߟ ͜ͷ"DDPVOU3FQPTJUPSZ)551ͩΖ͏͔ʁ%#ͩΖ͏͔ʁ )551ͳΒϩʔϧόοΫॲཧॻ͔ͳ͍ͱ͍͚ͳ͍ͳ %#ͳΒτϥϯβΫγϣϯͰͲ͏ʹ͔ͳΔͳ நԽ͕ͨͣ͠ҙࣝతʹϓϩτίϧͷ۩ʹґଘ͍ͯ͠Δ ͭ·Γ͜ΕநԽͰͳ͘ɺͨͩίʔυ্ʹඞཁͳใ͕ͳ͍͚ͩͰ͋Δ
17 3FQPTJUPSZʹΑΔநԽઃܭ͕ؒҧ͍ͬͯΔ
18 ͜ΕΛղܾ͢Δํ๏ͭ நԽʹ͋Θ࣮ͤͨ நԽͷݶఆ நԽͷׂ
19 ղܾࡦநԽʹ߹Θ࣮ͤͨ 5YؔͰ%#ͱ"1*ͷτϥϯβΫγϣϯΛ࣮ݱ͢Δ ֎෦ͷ"1*ʹϩʔϧόοΫ༻ͷ"1*ΛఆٛɺదͳϦτϥΠॲཧͳͲ
20 ղܾࡦநԽͷݶఆ %#͔͠ߟྀ͢Δඞཁ͕ͳ͍ͷͰ͋Ε 3FQPTJUPSZͷநԽର͔Β"1*Λআ֎͢Δ
21 ղܾࡦநԽͷׂ %#ͱ"1*Λಉ͡நʹؚΊͳ͍
22 நԽͰӕΛ͔ͭͳ͍
23 ૉʹϓϩτίϧ͕දݱ͞Ε͍ͯΔํ͕Մಡੑ͕ߴ͍
24 %%%ʹॻ͍ͯ͋Δ͔Β3FQPTJUPSZΛ༻ҙ͢Δ/( ਖ਼͍͠நԽΛίʔυ্Ͱදݱ͠Α͏
25 ͦͷ ͦͷநԽඞཁ͔ʁ
26 ͜ΜͳΛฉ͘͜ͱ͕͋Δ কདྷΠϯϑϥ͕มߋ͞ΕΔՄೳੑ͕͋Δ͔Βɺ3FQPTJUPSZͰநԽ͢Δ .Z42-͕1PTUHSFT42-ʹ ผͷ3%#.4ʹ .Z42-͕$MPVE%BUBTUPSFʹ ,74ʹ .Z42-͕.JDSPTFSWJDFTʹ
"1*ίʔϧʹ
27 ຊʹ͜ͷมߋ͋Δʁ
28 ͜ͷมߋ͕ىͬͨ͜ͱ͖Λఆͨ͠దͳநԽΛͰ͖͍ͯΔʁ
29 .Z42-ɺ$MPVE4QBOOFSɺ$MPVEEBUBTUPSFͰ࣮ߦͰ͖ΔΫΤϦʔҧ͏ .Z42-ͳΒΫΤϦʔͰ࣮ݱͰ͖Δ͜ͱɺ$MPVEEBUBTUPSFͰυϝΠϯͰ࣮ࢪ͢Δඞཁ ͕͋Δ͜ͱ͕͋Δ τϥϯβΫγϣϯΛ࣮ݱ͢ΔͨΊʹඞཁͳͷܕҧ͏
30 ͠ݕূɺςετ͍ͯ͠ͳ͍ͳΒߟྀͰ͖͍ͯΔͱݴ͑ͳ͍ த్ͳநԽ։ൃΛམͱ͍ͯ͠Δ͚͔ͩ͠Εͳ͍
31 աͳະདྷΛఆͨ͠ઃܭͰͳ͍͔ʁ ͦΕʹΑΓ༨ܭͳ࣮͕૿͍͑ͯͳ͍͔ʁ
32 ݱࡏಛఆͷ%#ґଘͨ͠ΠϯλʔϑΣʔεʹ͓͖ͯ͠ɺ কདྷ%#ͷมߋ͕͋ͬͨͱ͖ʹॻ͖͢ํ͕͍ͷͰͳ͍͔ʁ
33 ςελϏϦςΟͷͨΊͳΒΠϯϑϥͷϓϩτίϧΛநԽ͠ͳ͍Ͱɺ ۩ମతͳΠϯϑϥʹґଘͨ͠ΠϯλʔϑΣʔεΛ༻ҙ͢Δ͚ͩͰे .Z42-PS.PDL $MPVE%BUBTUPSFPS.PDL $MPVE4QBOOFSPS.PDL
34 ͘͠ར༻͍ͯ͠Δ%#"1*ͷΫϥΠΞϯτϥΠϒϥϦʹ.PDLͷػೳ͕͋Ε ͦΕͰेͰͳ͍Ͱ͠ΐ͏͔ʁ
35 %%%ʹॻ͍ͯ͋Δ͔Β3FQPTJUPSZΛ༻ҙ͢Δ/( ϓϩμΫτʹຊʹඞཁͳநԽ͚ͩΛ࣮͠Α͏
36 ͦͷ நԽͱϨΠϠʔԽҟͳΔ
37 ຊʹΓ͔͍ͨ͜ͱϓϩτίϧͷநԽͰ͠ΐ͏͔ʁ ͔ͯ͠͠ඞཁͳͷؔ৺͝ͱͷʁ
38 3FQPTJUPSZɺநԽͱϨΠϠʔԽΛಉ࣌ʹ࣮ࢪ͍ͯ͠Δͷ͕Ұൠత ࠓ͋ͳ͕ͨߟ͍͑ͯΔ3FQPTJUPSZͷϝϦοτɺ நԽʹΑΔͷʁͦΕͱϨΠϠʔԽʹΑΔͷʁ
39 ϨΠϠʔԽͷϝϦοτ ؔ৺͝ͱͷ ୯Ұͷݪଇ ࣮ͷӅṭ
40 நԽͷϝϦοτ ։์ดݪଇ ґଘੑٯసͷݪଇ ςελϏϦςΟ ϓϩτίϧͷநԽ
41 ຊʹநԽඞཁͰ͔͢ʁ
42 ϓϩτίϧͷநԽඞཁͰ͔͢ʁ
43 ࢲͨͪݱࡏϓϩτίϧͷநԽͷͨΊͷ3FQPTJUPSZ༻ҙ͍ͯ͠·ͤΜ
44 কདྷ%#͕มΘΔఆ͍ͯ͠·ͤΜɻ มΘͬͨ࣌ʹ͢ͱ͍͏அͰ͢ɻ
45 ςελϏϦςΟͷͨΊͷΠϯλʔϑΣʔεඞཁͰ͔͢ʁ ඞཁͳΒͪΌΜͱϢʔεέʔεͷϢχοτςετΛॻ͍͍ͯ·͔͢ʁ
46 ࢲͨͪݱࡏςετͷͨΊͷ3FQPTJUPSZΛ༻ҙ͍ͯ͠·ͤΜ
47 ΞϓϦέʔγϣϯ͕ेʹγϯϓϧͰ͋ΔͨΊ&&ςετͰิ͑Δ ΞϓϦέʔγϣϯʹGPSจΤϥʔϋϯυϦϯάҎ֎ͷJGจొ͠ͳ͍
48 ϨΠϠʔԽ ΞϓϦέʔγϣϯͱΠϯϑϥͷ͍ͯ͠·͢
49 ؔ৺͝ͱͷɺ୯ҰͷݪଇɺใӅṭ࣮ࢪͨ͠΄͏͕ྑ͍ͱ͍͏அ
50 நԽͱϨΠϠʔԽͷϝϦοτΛ۠ผͯ͠ɺνʔϜͰඞཁͳͷΛબ͠Α͏
51 ͓ΘΓʹ Έͳ͞Μ3FQPTJUPSZͰԿΛநԽ͍ͯ͠·͔͢ʁ ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠