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
Serverless Frameworkで フロント主導なAPI開発
Search
Hidetaka Okamoto
December 31, 2017
Technology
0
410
Serverless Frameworkで フロント主導なAPI開発
Serverless 勉強会@京都 vol.1
Hidetaka Okamoto
December 31, 2017
Tweet
Share
More Decks by Hidetaka Okamoto
See All by Hidetaka Okamoto
OpenAI APIで API Changelogを要約してみた話 / chatgpt-osaka-1
hideokamoto
0
600
コミュニティ運営から 中の人に変わって感じたこと
hideokamoto
0
86
Developerが Developer Advocateになった話 / dev-rel-meetup-tokyo-71
hideokamoto
0
340
Jamstack開発者のための App Runner入門
hideokamoto
1
480
WordPressでの webサイト制作2022 / ngk2022s
hideokamoto
0
440
JavaScript(TypeScript)で メディアサイトを インフラから構築する方法 / jsconf-jp-2021
hideokamoto
2
4.2k
AWS上でStripeを利用したアプリをより安全にデプロイする方法 /jaws-pankration-2021
hideokamoto
1
200
Shifter Headlessと Headless WordPressの紹介
hideokamoto
0
1.8k
Stripe & Next.js + AWS Amplify で会員 + 定期課金機能 / JP_Stripes20210903
hideokamoto
7
3.2k
Other Decks in Technology
See All in Technology
MCPで変わる Amebaデザインシステム「Spindle」の開発
spindle
PRO
3
2.6k
Snowflakeの生成AI機能を活用したデータ分析アプリの作成 〜Cortex AnalystとCortex Searchの活用とStreamlitアプリでの利用〜
nayuts
0
220
Function Body Macros で、SwiftUI の View に Accessibility Identifier を自動付与する/Function Body Macros: Autogenerate accessibility identifiers for SwiftUI Views
miichan
2
160
2025年にHCP Vaultを学び直して見えた景色 / Lessons and New Perspectives from Relearning HCP Vault in 2025
aeonpeople
0
170
おやつは300円まで!の最適化を模索してみた
techtekt
PRO
0
270
Jaws-ug名古屋_LT資料_20250829
azoo2024
3
230
Kubernetes における cgroup v2 でのOut-Of-Memory 問題の解決
pfn
PRO
0
450
ChatGPTとPlantUML/Mermaidによるソフトウェア設計
gowhich501
1
110
7月のガバクラ利用料が高かったので調べてみた
techniczna
3
830
オブザーバビリティが広げる AIOps の世界 / The World of AIOps Expanded by Observability
aoto
PRO
0
290
Flutterでキャッチしないエラーはどこに行く
taiju59
0
210
Skrub: machine-learning with dataframes
gaelvaroquaux
0
110
Featured
See All Featured
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
252
21k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.6k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
284
13k
Mobile First: as difficult as doing things right
swwweet
224
9.9k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
36
2.5k
Java REST API Framework Comparison - PWX 2021
mraible
33
8.8k
BBQ
matthewcrist
89
9.8k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Practical Orchestrator
shlominoach
190
11k
It's Worth the Effort
3n
187
28k
Transcript
4FSWFSMFTT'SBNFXPSLͰ ϑϩϯτओಋͳ"1*։ൃ 4FSWFSMFTTษڧձ!ژWPM 0LBNPUP)JEFUBLB
w 8 P S E # F O D I
ژ Ϟ σ Ϩ ʔ λ w 8 P S E 1 S F T T ຊ ޠ ϑ Υ ʔ ϥϜ ੈ w 8 P S E $ B N Q ,Z P U P ࣮ ߦ ҕ һ )JEFUBLB0LBNPUP %JHJUBMDVCF%FWFMPQFS
w "1*։ൃͱฒߦͨ͠ϑϩϯτ࣮ͭΒ͍ w ʮͭ࣌ؒʯͱʮϞοΫ࣮ʯ͕ಛʹͭΒ͍ w ͩͬͨΒ͔ͬͪ͜Β࡞ͬͪΌ͑ʂ ·ͱΊ
w "1*Λ͏αʔϏε։ൃͷͭΒΈ w ͳ͍"1*Λ͚ͭͩ͏Ί͍ͨ w "844FSWFSMFTT'8Ͱ࡞ΔϞοΫ"1* w ϞοΫۦಈͰϑϩϯτओಋͷ։ൃΛ ΞδΣϯμ
w "1*Λ͏αʔϏε։ൃͷͭΒΈ w ͳ͍"1*Λ͚ͭͩ͏Ί͍ͨ w "844FSWFSMFTT'8Ͱ࡞ΔϞοΫ"1* w ϞοΫۦಈͰϑϩϯτओಋͷ։ൃΛ ΞδΣϯμ
w ্࢘ɿ͜ͷ"1*ͱ࿈ܞͨ͠ػೳ࡞ͬͯ w ࣗɿ"1*ͲΕୟ͚͍͍͔ͬ͢ʁ w ্࢘ɿ·ͩͳ͍ɻ͚Ͳͬͯ w ࣗɿʮʯ લ৬ͱ͔Ͱ͋ͬͨ͜ͱ
w ͳ͍"1*͚ͨͨͳ͍ w ࣗͰ"1*αʔόʔ࡞Δͷେม͗͢Δ w +40/ϕλଧͪͰͱΓ࣮͋͑ͣ͢Δ w ඇಉظॲཧͷߟྀ࿙Εͱ͔ͰόάΛग़͢ ͭΒ͍ͭ
w "1*Λ͏αʔϏε։ൃͷͭΒΈ w ͳ͍"1*Λ͚ͭͩ͏Ί͍ͨ w "844FSWFSMFTT'8Ͱ࡞ΔϞοΫ"1* w ϞοΫۦಈͰϑϩϯτओಋͷ։ൃΛ ΞδΣϯμ
w "1*࡞Δͱ͍͑3VCZPO3BJMTͱ͔༗໊ w 8PSE1SFTTͱ͔%SVQBMͰ࡞ΕΔͬΆ͍ w ͰɺͦΕΛಈ͔͢αʔόʔʁ ࣗͰ"1*αʔόʔΛ࡞Δ͔͠ͳ͍ʁ
l z αʔόʔ͕ඞཁʹͳΔͱ ηοτΞοϓอकͷ ·ͰඞཁʹͳΔ
w "1*Λ͏αʔϏε։ൃͷͭΒΈ w ͳ͍"1*Λ͚ͭͩ͏Ί͍ͨ w "844FSWFSMFTT'8Ͱ࡞ΔϞοΫ"1* w ϞοΫۦಈͰϑϩϯτओಋͷ։ൃΛ ΞδΣϯμ
"NB[PO"1*(BUFXBZ IUUQTBXTBNB[PODPNKQBQJHBUFXBZ
l z "1*Λ؆୯ʹ࡞Δ ΫϥυαʔϏε
"1*ͷαϯϓϧ༻ҙ͞Ε͍ͯΔ IUUQTBXTBNB[PODPNKQBQJHBUFXBZ
4XBHHFSͷఆٛ༰ΛΠϯϙʔτͰ͖Δ IUUQTBXTBNB[PODPNKQBQJHBUFXBZ
"1*Λ(6*͔Β࡞Δ͜ͱ͕Ͱ͖Δ IUUQTBXTBNB[PODPNKQBQJHBUFXBZ
"1*ͷϞοΫ(6*͔Β IUUQTBXTBNB[PODPNKQBQJHBUFXBZ
Ϩεϙϯεͷ+40/Λ͏ͪ͜Ί0, IUUQTBXTBNB[PODPNKQBQJHBUFXBZ
(6*͚ͩͰϞοΫ"1*͕࡞ΕΔ IUUQTBXTBNB[PODPNKQBQJHBUFXBZ
"1*ઐ༻ͷ4%,࡞%-Ͱ͖Δ IUUQTBXTBNB[PODPNKQBQJHBUFXBZ
4%,༻ํ๏͖Ͱ%-Ͱ͖Δ ˞ͨͩ͠ӳޠͷΈ
l z ͋ͱͰ͚ସ͑Δͷ ΊΜͲ͏͔ͩΒ ͦͷ··࣮͍ͨ͠
4FSWFSMFTT'SBNFXPSL IUUQTTFSWFSMFTTDPN
l z "1*ͱόοΫΤϯυΛ ؆୯ʹ࡞ˍσϓϩΠ
ίϚϯυ̏ͭͰΠϯετʔϧ͔ΒσϓϩΠ·Ͱ IUUQTTFSWFSMFTTDPN #Install serverless globally $ npm install serverless -g
# Create a serverless function $ serverless create --template hello-world # Deploy to cloud provider $ serverless deploy # Function deployed! Trigger with live url $ curl http://xyz.amazonaws.com/hello-world
:".-Ͱઃఆ͢ΔͷͰಡΈ͘͢ॻ͖͍͢ (&5IFMMPͱ͍͏"1*͕͜Ε͚ͩͰ࡞Ͱ͖Δ functions: hello: handler: handler.hello events: - http: path:
hello method: get cors: true
ෳͷΫϥυαʔϏεʹରԠ IUUQTTFSWFSMFTTDPN
IUUQTHJUIVCDPNTFSWFSMFTTFYBNQMFT ๛ͳαϯϓϧ
w "1*Λ͏αʔϏε։ൃͷͭΒΈ w ͳ͍"1*Λ͚ͭͩ͏Ί͍ͨ w "844FSWFSMFTT'8Ͱ࡞ΔϞοΫ"1* w ϞοΫۦಈͰϑϩϯτओಋͷ։ൃΛ ΞδΣϯμ
w "1*Λ؆୯ʹ࡞ΕΔαʔϏε͕͋Δ w ศརͳσϓϩΠπʔϧ͋Δ w ͙ͭΒ͍ͳΒɺ͔ͬͪ͜Β࡞Ε͍͍ͷͰ "1*ΛϑϩϯτओಋͰ࡞Δ
4FSWFSMFTT'SBNFXPSL IUUQTTFSWFSMFTTDPN
ඞཁͳ"1*Λ:".-ʹॻ͖ग़͢ (&5IFMMPͱ͍͏"1*͕͜Ε͚ͩͰ࡞Ͱ͖Δ functions: hello: handler: handler.hello events: - http: path:
hello method: get cors: true
/PEFKT1ZUIPOͰϨεϙϯε͚ͩ࡞Δ DBMMCBDL ʹ+40/Λ٧ΊࠐΉ͚ͩ 'use strict'; module.exports.hello = (event, context, callback)
=> { const response = { statusCode: 200, body: JSON.stringify({ message: 'Hello World', }), }; callback(null, response); };
TUBHFΛࢦఆͯ͠σϓϩΠ ʮ͜ͷεςʔδϞοΫͱ͍ͯ͠·͢ʯͱ͔એݴ͠ͱ͘ͱ͍͍͔ # εςʔδຖʹϦιʔεΛ࡞Ͱ͖Δ $ serverless deploy —stage mock #
URLεςʔδ໊ʹԠͯ͡มΘΔ $ curl http://xyz.amazonaws.com/mock/hello-world
l z /PEFKT1ZUIPO ॻ͚Δਓʹ ιʔείʔυΛ͢
όοΫΤϯυͷ։ൃ͕ऴΘΔ·ͰϞοΫΛ͏ # ϑϩϯτͰϞοΫͷAPIΛͬͯ։ൃ͢Δ $ curl http://xyz.amazonaws.com/mock/hello-world # ։ൃ༻ͷεςʔδͰόοΫΤϯυΛ࣮͢Δ $ serverless
deploy —stage development # ࣮͞ΕͨAPI(ؔ)͔Βॱ࣍σϓϩΠ $ serverless deploy function -f hello —stage mock
l z
l z /PEFKT1ZUIPO ॻ͚Δਓʹ ιʔείʔυΛ͢
w "1*Λ͏αʔϏε։ൃͷͭΒΈ w ͳ͍"1*Λ͚ͭͩ͏Ί͍ͨ w "844FSWFSMFTT'8Ͱ࡞ΔϞοΫ"1* w ϞοΫۦಈͰϑϩϯτओಋͷ։ൃΛ ·ͱΊ