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
クラウドサービスの Web API とそのユースケース #apijp
Search
Naoya Ito
August 29, 2014
Technology
64
30k
クラウドサービスの Web API とそのユースケース #apijp
Naoya Ito
August 29, 2014
Tweet
Share
More Decks by Naoya Ito
See All by Naoya Ito
TypeScript 関数型スタイルでバックエンド開発のリアル
naoya
49
16k
シェルの履歴とイクンリメンタル検索を使う
naoya
7
2.6k
20230227-engineer-type-talk.pdf
naoya
81
35k
関数型プログラミングと型システムのメンタルモデル
naoya
52
59k
TypeScript による GraphQL バックエンド開発
naoya
26
24k
フロントエンドのパラダイムを参考にバックエンド開発を再考する / TypeScript による GraphQL バックエンド開発
naoya
65
23k
「問題から目を背けず取り組む」 一休の開発チームが6年間で学んだこと
naoya
141
56k
一休の現在と、ここまでの道のり
naoya
89
40k
技術的負債と向き合う
naoya
248
75k
Other Decks in Technology
See All in Technology
個人的、Kubernetes の最新注目機能! (2024年5月版) / TechFeed Experts Night#28 〜 コンテナ技術最前線
pfn
PRO
3
210
「知的単純作業」を自動化する、地に足の着いた大規模言語モデル (LLM) の活用
nrryuya
8
8.1k
Secrets of a PowerShell "Guru"
guyrleech
1
120
QA経験のないエンジニアリング マネージャーがQAのカジュアル面談に出て 苦労していること・気づいたこと / scrum fest niigata 2024
yoshikiiida
2
630
SWC Transformerから見るTypeScript関数記述ベストプラクティス
fujiyamaorange
1
170
サイボウズ 開発本部採用ピッチ / Cybozu Engineer Recruit
cybozuinsideout
PRO
9
37k
株式会社EventHub・エンジニア採用資料
eventhub
0
2.1k
自らを知り外と繋がる、日経のエンジニア採用とDevRel活動/devreljp92
nishiuma
2
210
[2024년 5월 세미나] 생성형 AI와 함께하는 데이터 분석가 커리어
datarian
0
850
パスワードを保存しますか?
hanacchi
0
240
TiDBにおけるテーブル設計と最適化の事例
cygames
0
760
Domain-driven Design: A Complete Example
ewolff
2
230
Featured
See All Featured
Bootstrapping a Software Product
garrettdimon
PRO
302
110k
Side Projects
sachag
451
41k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
8
3.5k
What's new in Ruby 2.0
geeforr
338
31k
Teambox: Starting and Learning
jrom
128
8.4k
How GitHub Uses GitHub to Build GitHub
holman
468
290k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
123
39k
The MySQL Ecosystem @ GitHub 2015
samlambert
244
12k
Optimising Largest Contentful Paint
csswizardry
13
2.4k
Build The Right Thing And Hit Your Dates
maggiecrowley
25
2k
Design by the Numbers
sachag
274
18k
The Cost Of JavaScript in 2023
addyosmani
21
3.9k
Transcript
ΫϥυαʔϏεͷ8FC "1*ͱͦͷϢʔεέʔε /BPZB*UP ,"*;&/QMBUGPSN*OD "1*.FFUVQ5PLZP
͓͢Δ༰ • <աڈ>ࢲ͕ݟ͖ͯͨ8FC"1*ͷมભ – ؼணͷͻͱͭŋŋŋ BTB4FSWJDF • <ݱࡏ>ͦΕΛ͏Ϣʔεέʔε • <ະདྷ>8FCγεςϜͷΞʔΩςΫνϟτ Ϩϯυͱ1SPHSBNBCMF8FC
ࢲ͕ݟ͖ͯͨ8FC"1*ͷมભ
8IZͳΜͰͦΜͳ͢Δͷ • ࡢࠓͷ BTB4FSWJDFલʹඳ͍͍ͯͨ ཧతͳϢʔεέʔεͷҰͭ – ʮ͋ʔɺͦ͏ͦ͏ɺ͜Ε͕͔ͨͬͨ͠Μͩʯ – ͦΕΛࢧ͑Δ8FC"1*
• ͜͜ʹࢸΔ·ͰɺͲ͏͍͏มભ͕͔͋ͬͨ – NZQPJOUPGWJFX
ࢲ͕ݟ͖ͯͨ • ͳͷͰɺ#$8FCۀքʹ͕ภͬͯ·͢ɻ ྃ͝ঝ͍ͩ͘͞
͡Ίͯͷ"1* ͜ͷղ૾͔ͬ͠ ͯͳ͍ͬΆ͔ͬͨ͆ ͷࡶࢽ
࣌ͷঢ়گ • ্࢘ʮҏ౻܅ʂ9.-8FCαʔϏεͬͯ ͬͯΔ͔ʁʯ – ଞʹʮҏ౻܅+&&ͬͯʯʮҏ౻܅ϒϩ άͬͯʯͳͲͷύλʔϯ͋Γ ˞͓͔͛Ͱϒϩά։ൃ୲ʹ ͳΕͨͷͰɺΑ্͍࢘Ͱͨ͠
9.-8FCαʔϏε • ۀϩδοΫΛެ։αʔϏεͱͯ͠ɺͦΕΒͷ αʔϏεΛΈ߹ΘͤͯҰͭͷۀΛ࣮ݱ͢ Δŋŋŋ – ྫཱྀߦ༧ϗςϧ ߤۭձࣾ ݸਓܾࡁ –
·ͩ40"ͱ͍͏ݴ༿ฉ͔ͳ͔ͬͨΑ͏ʹهԱ͠ ͍ͯΔ • 40"16%%*84%-ŋŋŋ
ΤϯλʔϓϥΠζ
࣌ࠔͬͨ͜ͱ • 9.-8FCαʔϏε͕όζͬͯΔΒ͍͠ ͚Ͳɺ࣮ྫ͕ݟͨΒͳ͍ – اۀɺۀγεςϜͷόοΫΤϯυͰ ಈ͍͍͔ͯͨ͠Εͳ͍͕Ұൠফඅऀ͔Β ͳ͔ͳ͔ͦΕ͕ݟ͑ͳ͔ͬͨ ࣌ͷࣗʮ40"1ͱ͔ ݬͷٕज़ͳΜͰŋŋŋ ʯ
ࠒ • ্࢘ʮҏ౻܅ʂϒϩάͬͯͬͯΔ͔ʁʯ OBPZBʮʯ
ΊͬͪΌΘΕͯΔΜ ͷ4IJCVZBQNͰͷൃදࢿྉΑΓ
#MPHͷഎޙʹ͋ͬͨ8FC"1* • ʮܰྔͳ8FCαʔϏεʯ – 344ɺ"UPNɺXFCMPH6QEBUFTQJOH • ͻͱ͖ΘΛҾ͍ͨͷ9.-31$ – 40"1ͷॳظͷυϥϑτ͔ΒΠϯεύΠΞ –
40"1ͷΤϯϕϩʔϓϔομͳͲΛऔͬͬͨ ༷ ඪ४ԽWTσϑΝΫτ ࣮ફతͳ8FCαʔϏε
݁Ռɺ8FCۀքͰىͬͨ͜͜ͱ • 8FC ɺ͋ͨΓ – "1*Λެ։͢Δͱ͔͍͍ͬ͜ தೋප
• ͯ͞ɺۀϩδοΫΛެ։͠Α͏ͥͱ͍ͬͯ – 8FCۀքʮۀϩδοΫʯͬͯԿͩ • ଟ͘എޙʹͦΕ΄Ͳ\େ͖͍ ॏཁ^ͳۀΛ͍࣋ͬͯͳ͔ͬͨ • 㱤ϩδοΫͰͳ͘σʔλΛެ։͢Δͱ͍͏ํʹྲྀΕͨ – 8FCۀքʹϝσΟΞاۀ͕ଟ͔ͬͨ͠ – #MPHχϡʔεͷ344ϑΟʔυɺ"NB[PO1SPEVDU "EWFSUJTFNFOU"1*Θ͔Γ͍͢ઌߦࣄྫ
3&45 • લճͷZPIFJ͞Μͷ • ࣌ – ࣮ਥʮ40"1ͱ͔9.-31$ͱ͔ݴ͏͚Ͳɺ݁ ہ9.-Λ)551(&5ͰΑ͘Ͷ ʯ –
ΞʔΩਥʮͦͦͦΕ3FQSFTFOUBUJPOBM TUBUFUSBOTGFSͱݴͬͯͩͳʯ গͳ͘ͱࣗͷपғͰ 3&4540"1ͳͲͱͷ ରൺͷจ຺ͰޠΒΕ࢝Ίͨ
ͦ͏͜͏ͯ͠Δ͏ͪʹ"KBY ʹ##8BUDIʹدߘͨ͠هࣄΑΓ IUUQCCXBUDIJNQSFTTDPKQDEBBMQIBHFFLIUNM
8FC"1*ͷ͜Ε·Ͱͱ͜Ε͔Β "1*NFFUVQ IUUQXXXTMJEFTIBSFOFUZPIFJXFCBQJ
8FC"1*Խ͕ਐΜͩɺ͕ • ʮ 9.- 8FCαʔϏεʯˠʮ8FC"1*ʯ – ͍ͭͷؒʹ͔ϥϕϧมΘͬͯͨ – ʙ͘Β͍
• ʮϚογϡΞοϓʯ – Ͱɺଟ͘ͷྫ˓˓ͱ˚˚ΛҰॹʹදࣔͯ͠Έ·ͨ͠ • શମͱͯ͠σʔλͷެ։ʹ͕͍͔ͬͯͨΒ • ʮۀΛߏங͢Δʯͱ͍͏ΑΓʮσʔλΛΈ߹Θͤͨʯ͚ͩ
αʔϏεͷΈ߹ΘͤͰ ۀΛߏங͢Δ • ʮ9.-8FCαʔϏεʯͷจ຺ͰޠΒΕ͍ͯͨʮ8FC αʔϏεͱ8FCαʔϏεΛΈ߹ΘͤͯۀΛ͙ʯ ͱ͍͏ߟ͑ํؒҧͬͯͳ͍ • 8FCͷ8FC"1*ͳ͔ͳ͔ͦ͜·Ͱ౸ୡͰ͖ͯ ͳ͔ͬͨ
– 5XJUUFS'BDFCPPLͳͲ8FCαʔϏε͕୲ͬͨͷ ίϯςϯπαʔϏεͰ͋Γʮۀͷ෦ʯͱҧͬͨ͠
40"Ͱ࡞ͬͨࣾαʔϏ εɺެ։ͨ͠Α SFG4UFWFZT(PPHMF1MBUGPSNT3BOU IUUQTQMVTHPPHMFDPN 3JQ3PXBOQPTUTF7FPVFTWB79 ͜͜Ͱಥવͷ
αʔϏεͱαʔϏεΛ Έ߹Θͤͯ • ετϨʔδͷ"NB[PO4ͱ˓˓ΛΈ ߹Θͤͯ – ͦΕΒ͕ϓϩάϥϚϒϧ "1*Ͱ ʹૢ࡞Ͱ ͖Δ ʮ8FCΞϓϦέʔγϣ
ϯʯͷ"1*Ͱͳ͍͕ɺ ฆΕͳ͘8FC"1*ʹΑ ΔαʔϏεͰ͋ͬͨ
"84ͱ8FC"1* • "84ͷ֤ίϯϙʔωϯτʮޙ͚Ͱ"1*Խ͞ ΕͨαʔϏεʯͰͳ͘ʮ"1*ͰαʔϏε͢ Δʯ͜ͱΛલఏʹ͞Εͨͷ – 1SPHSBNNBCMFͭʮधཁʯ͕ઌʹ͋ͬͨ – ͦ͏ͦ͏"1*ͬͯ͜Εͷ͜ͱ 8FCαΠτʹޙ͔Β෦తʹ
"1*Λੜ͢ɺͷͰͳ͘จ ࣈ௨Γ"QQMJDBUJPO 1SPHSBNNJOH*OUFSGBDF
ͦͯ͠Ϋϥυͷ࣌ŋŋŋ ˞్தɺ+40/ͱ͔ϞόΠϧͱ͔ιʔγϟϧήʔϜ 0QFO4PDJBM ͱ͔͍Ζ ͍Ζ͋Δ͚ͲׂѪ
BTB4FSWJDF $JSDMF$* $*BTB4FSWJDF
1BSTFDPN NPCJMF#BDLFOEBT B4FSWJDF
4USJQF 1BZNFOU1MBUGPSN BTB4FSWJDF
(PPHMF#JH2VFSZ #JH%BUBBTB4FSWJDF
BTB4FSWJDFͱ8FC"1* • ࡢࠓͷ BTB4FSWJDFͷଟ͘8FC )551 Λհͯ͠αʔϏεΛఏڙ͢Δ • ϓϩάϥϜͷͨΊͷ෦Ͱ͋Δͱ͍͏ੑ্֨ "1*Λ༗͢Δ
BTB4FSWJDFΛۦͯ͠ ۀΛߏங͢Δ ΠϚίί • ྫ1BSTFDPNͰϞόΠϧόοΫΤϯυΛ͍ #JH2VFSZͰϩάղੳͯ͠4USJQFͰ՝ۚ͢Δ • ΫϥυαʔϏεͷ಄ͱ͍͏ܗͰɺ͔ͭͯʮ9.- 8FCαʔϏεʯ͕ࢦ͍ͯͨ͠ੈք͕ݱ࣮ʹͳͬͨ
– 40"16%%*84%-తͳखஈͰͳ͔͕ͬͨɺͦΕΛܨ͍ͩͷ ͕8FC"1* – ˞3&45ɺͱݴͬͯͳ͍ɻ೦ͷͨΊɻ
·͞ʹ͜͜ͷ
ͲΜͳ෩ʹ͍ͬͯΔ͔ Ϣʔεέʔε
NFSHF͞ΕΔͱ ͦΕΛݕͯ͠ɺ ίʔυΛ(JU)VC͔ Βऔಘ มߋ͕ө͞Ε Δ ΠϯϑϥߏͷܧଓతσϦόϦʔ &$ʹରͯ͠ $JSDMF$*͔Β$IFG ద༻
σϦόϦ༻1VMM 3FRVFTU͕࡞͞ ΕΔ νϟοτͰΠϯϑ ϥͷ$IFGίʔυͷ ద༻Λࢦࣔ
νϟοτͰࢦࣔ
σϦόϦʔ༻ 1VMM3FRFTU͕࡞ΒΕΔ σϦόϦʔ༻ϒϥϯ νʹϝΠϯϒϥϯν ΛNFSHF͢Δ
$JSDMF$*͕ݕ࣮ͯ͠ߦ
ؒΛͭͳ͙8FC"1* • 4MBDL"1* – )VCPU͕4MBDL"1*ܦ༝Ͱνϟοτʹৗற • (JU)VC"1* – )VCPU͔Β(JU)VC"1*Ͱ1VMM3FRVFTU࡞ •
$JSDMF$*"1* – (JU)VCͷ8FC)PPLͰ$JSDMF$*௨ • "84 – ߹ʹΑͬͯ "84ͷ"1*ͰߏΛௐ
΄͔ʹ͜Μͳͷ • #VH4OBHŋŋŋ3BJMT+4ͷྫ֎ݕ • 4USJQFŋŋŋܾࡁ • 1BHFS%VUZŋŋŋΠϯϑϥͷΞϥʔτ • 1JOHEPNŋŋŋࢹ •
.BDLFSFMŋŋŋϦιʔεϞχλϦϯά • .BOESJMM.BJM$IJNQŋŋŋϝʔϧ • (PPHMF#JH2VFSZŋŋŋϩάղੳɺ%8) • #SPXTFS4UBDLŋŋŋΫϩεϒϥβςετ • ΄͔ʹŋŋŋ%.1 %BUB.BOBHFNFOU1MBUGPSN ͱ͔ αʔόʔαΠυͷ 3BJMTΞϓϦ͕άϧ ʔ HMVF ʹͳͬͯɺ ۀΛ͙
ൃͷస • ͔ͭͯ – Կ͔ࣗಈԽ͠Α͏͔ͳ – ख࣋ͪͷϥΠϒϥϦɺ044ͳͲΛબࢶʹҊΛ࿅Δ – Α͠ɺίʔυॻ͜͏ •
͍· – Կ͔ࣗಈԽ͠Α͏͔ͳ – ΫϥυαʔϏε୳͢ – ͋ͷαʔϏεͱ͜ͷαʔϏεΛΈ߹Θͤͯŋŋŋ – Α͠ɺίʔυΛॻ͜͏ ʮίϯςϯπͷϚογϡ ΞοϓʯͷΑ͏ͳݶΒΕͨ ঢ়گͰͷࢥߟϓϩηεͩͬ ͨͷ͕ɺͦ͏Ͱͳ͍ঢ়گͰ
8FCγεςϜͷΞʔΩςΫνϟτϨϯ υͱ1SPHSBNNBCMF8FC ͔͜͜Βໝ
ࣗతͳ Ωʔϫʔυ • NJDSPTFSWJDFT • *NNVUBCMF*OGSBTUSVDUVSF "KBY BTB4FSWJDF͕ 8FC"1*ͷൃలΛ֦େͤ͞ ͨΑ͏ʹɺ͜ΕΒͷΩʔ
ϫʔυͦΕΛޙԡ͢͠Δ ༧ײ
NJDSPTFSWJDFT h"p://mar)nfowler.com/ar)cles/microservices.html
NJDSPTFSWJDFT • ϞϊϦγοΫͳ8FCΞϓϦέʔγϣϯ͕Ͱ͔͘ͳΔͱ ϝϯςφϏϦςΟ͕མͪΔ • దͳׂͰ͘͘Γͩͯ͠8FC"1* ͳͲ Ͱܨ͛· ͠ΐ͏ •
ΤϯλʔϓϥΠζग़ͷ40"ʹରͯ͠1SBDUJDBMͳ NJDSPTFSWJDFT – 9.-8FCαʔϏεͱ8FC"1*ʹࣅͯΔ
*NNVUBCMF*OGSBTUSVDUVSF • BLB%JTQPTBCMF$PNQPOFOU – ҰՔಇͤͨ͞αʔόʔೋͱมߋ͠ͳ͍ – ඞཁʹͳͬͨΒ৽͍͠ͷ࡞ͬͯݹ͍ͷࣺͯΔ • ྫ)FSPLVͷίϯςφ
*NNVUBCMF*OGSBTUSVDUVSFͱ8FC ΞϓϦέʔγϣϯͷަՄೳੑ • *NNVUBCMFͦͷ্Ͱಈ͘8FCΞϓϦ࠶ݱՄೳͰ ͳ͚ΕͳΒͳ͍ – ͍ࣺͭͯΒΕͯɺશ͘ಉ͡ߏͰσϓϩΠՄೳʹͳΔͱ͍͏ ͜ͱ – Ωʔ(FNpMFɺ1SPDpMFɺ4IBSFE/PUIJOH
• ࠶ݱՄೳঢ়ଶΛ࣋ͨͳ͍ εςʔτϨε ਓʹͤ Δ
)FSPLV#VUUPO
)FSPLV#VUUPOͷΈ • IFSPLVDPNEFQMPZʹϦϯΫͯ͠Δ • IFSPLVDPNEFQMPZΛ)551(&5͢Δͱɺ ϦϑΝϥ͔Β(JU)VCϨϙδτϦΛಛఆ • BQQKTPOΛಡΈऔΓɺͦΕʹै͍ηογϣϯ ओͷ)FSPLVΞΧϯτʹσϓϩΠ
)FSPLV#VUUPOΛ͋Δ ࢹͰΈΔͱ • 63*Ͱ8FCΞϓϦέʔγϣϯަ – )551(&5ͱ͍͏౷ҰΠϯλϑΣʔεͰΞϓϦέʔ γϣϯͱ͍͏ϦιʔεΛަ͍ͯ͠Δ – *NNVUBCMF*OGSBTUSVDUVSFˠ4UBUFMFTTˠ63* ͕͋ΕɺަͰ͖Δ
1SPHSBNNBCMF8FC ͱͷަ͕ࠩͳΜͱͳ ͘ݟ͖͑ͯ·͢ΑͶ
·ͱΊ • 8FC"1*ɺσʔλΛެ։͢ΔͨΊͷͷ͔Βɺຊདྷ ͷҙຯͷ"1*ʹ • ͔ͭͯʮ9.-8FCαʔϏεʯ͕ࢦ͍ͯͨ͠ੈք͕ ࣮ݱ͞Εͨ ͍ۙͮͨ –
BTB4FSWJDF • 8FCγεςϜͷΞʔΩςΫνϟͷਐԽ͕ࠓޙ͞Βʹͦ ΕΛޙԡ͢͠Δ – NJDSPTFSWJDFT*NNVUBCMF*OGSBTUSVDUVSF
5IBOLT ֆCZ͋ΘΏ͖