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
静的サイトだけじゃないNetlifyの活用法 / netlify-extra-mode
Search
mottox2
September 26, 2018
Programming
8
2.5k
静的サイトだけじゃないNetlifyの活用法 / netlify-extra-mode
静的サイトだけじゃないNetlfiyの活用法
Netlify Meetup Tokyo #2で話しました。
事例1: esa.ioをバックエンドとしたブログ
https://mottox2.com
mottox2
September 26, 2018
Tweet
Share
More Decks by mottox2
See All by mottox2
もう一歩進めたい OG画像の動的生成
mottox2
7
1.6k
なぜコピペで使うコンポーネント集を利用するのか?
mottox2
8
6.9k
UIコンポーネントライブラリをうまく使うためにできること / components-with-designer
mottox2
7
3.7k
Figma Plugin公開までの壁を乗り越える
mottox2
2
2.8k
Puppeteerでつくる画像と動画 / images and videos made with puppeteer
mottox2
0
630
手触りのよいウェブを考える / better-mobile-web
mottox2
3
1.7k
組織と権限とSlack App / slack-app-with-roles
mottox2
1
610
SSRを避けるためにやっていること / ssr-alternative
mottox2
9
3.1k
JSXでつくる宣言的UIなプレゼンテーション / jsx-presentation
mottox2
7
32k
Other Decks in Programming
See All in Programming
Zoneless Testing
rainerhahnekamp
0
140
テストコード書いてみませんか?
onopon
2
260
バグを見つけた?それAppleに直してもらおう!
uetyo
0
200
生成AIでGitHubソースコード取得して仕様書を作成
shukob
0
570
CloudflareStack でRAGに入門
asahiiwm
0
140
Spatial Rendering for Apple Vision Pro
warrenm
0
290
Внедряем бюджетирование, или Как сделать хорошо?
lamodatech
0
790
Запуск 1С:УХ в крупном энтерпрайзе: мечта и реальность ПМа
lamodatech
0
800
Amazon S3 NYJavaSIG 2024-12-12
sullis
0
130
非ブラウザランタイムとWeb標準 / Non-Browser Runtimes and Web Standards
petamoriken
0
390
iOS開発におけるCopilot For XcodeとCode Completion / copilot for xcode
fuyan777
1
820
どうして手を動かすよりもチーム内のコードレビューを優先するべきなのか
okashoi
3
720
Featured
See All Featured
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
3
200
Documentation Writing (for coders)
carmenintech
67
4.5k
Why You Should Never Use an ORM
jnunemaker
PRO
54
9.1k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
97
17k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
111
50k
Optimising Largest Contentful Paint
csswizardry
33
3k
Making the Leap to Tech Lead
cromwellryan
133
9k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.3k
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.3k
Agile that works and the tools we love
rasmusluckow
328
21k
Embracing the Ebb and Flow
colly
84
4.5k
Transcript
ͷ׆༻๏ @mottox2 / Netlify Meetup Tokyo #2 ੩తαΠτ͚ͩ͡Όͳ͍ ੩తαΠτϗεςΟϯά͚ͩ͡Όͳ͍ʂ
• ඪ: ΑΓଟ͘ͷਓʹΘΕΔαʔϏεΛ࡞Γ͍ͨ • ݚڀςʔϚ: ΑΓૣ͘αʔϏεΛ্ཱͪ͛Δख๏ • థਧ͖ΤϯδχΞ: ޱథͱϗϧϯΛਧ͖·͢ •
OSS׆ಈ: Gatsbyͷϝϯςφʔ mottox2 @ 8FCϑϩϯτΤϯυͱσβΠϯͷϑϦʔϥϯε Who am I?
#netlifytokyo Netlify • ੩తαΠτΛϗεςΟϯάͯ͘͠ΕΔαʔϏεa • BuildίϚϯυͱެ։ϦϙδτϦΛࢦఆ͢Δͱ͍͍͔Μ͡ʹσϓϩΠͯ͘͠ΕΔɻ netlify.com
静的サイトホスティングの事例 はもういいかなと思いまして… 静的サイトホスティング以外の活⽤法を紹介
本⽇お伝えするNetlify利⽤法 • ػೳฤ • Netlify FunctionsΛར༻͢Δ • JSONϑΝΠϧΛ৴͢Δ • Ԡ༻ฤ
• FunctionsͰSaaSͱͭͳ͙ • NetlifyͰCMSΛߏங͢Δ
Functionsを利⽤する 機能編
#netlifytokyo Netlify Functions ͚ؔͩॻ͚͍͍ײ͡ʹಈ͔ͯ͠ΕΔαʔϏεɻதAWS lambda Function request response URL Call:
https://example.com/hoge Status: 200 body: Hello World ͚࣮ͩ͜͜͢Δ Functionsͱʁ
#netlifytokyo Netlify Functions ϛχϚϜߏ 1/3 /functions/hello.js /netlify.toml • NetlifyͷઃఆϑΝΠϧ •
࣮ߦϓϩάϥϜΛؚΉσΟϨΫτϦΛࢦఆ • Event͔ΒrequestใΛऔಘ • callbackͰresponseΛ࿔Δ
#netlifytokyo Netlify Functions ϛχϚϜߏ 2/3
#netlifytokyo Netlify Functions ϛχϚϜߏ 3/3
JSONを配信する 機能編
#netlifytokyo JSONͷ৴ • ެ։σΟϨΫτϦΛࢦఆ͢Ε৴Ͱ͖ΔͷͰɺJSONϑΝΠϧOKɻ public/ ┗ sample.json
#netlifytokyo JSONͷ৴ • Q. ຖճJSONϑΝΠϧॻ͘ͷਏ͍ͷͰʁ • A. Θ͔ΔɻBuild commandͰJSONϑΝΠϧΛు͖ग़͢ίʔυΛॻ͚Α͍ɻ /netlify.toml
/fetch.js Netlfiyの設定ファイル ビルドコマンドと公開ディレクトリを設定 いい感じに処理したオブジェクトを出⼒ Build commandのリダイレクトで public以下にJSONファイルとして保存される JSONͷੜ
#netlifytokyo JSONͷ৴ /public/_headers _headers • ެ։σΟϨΫτϦԼʹஔ͍ͯɺϑΝΠϧ͝ͱʹϔομʔΛࢦఆ͢Δɻ • ͜ͷ߹৴͢ΔJSONϑΝΠϧʹCORS༻ͷϔομʔΛ͚ͭΔྫɻ • Q.
ϨεϙϯεϔομʔΛ͍͡Γ͍ͨ • A. ग़དྷ·͢ɻ_headersͱ͍͏ઃఆϑΝΠϧͰՄೳͰ͢ɻ
#netlifytokyo JSONͷ৴ • Q. ֦ுࢠ͕अຐͰʁ • A. Θ͔Δɻ࣮ݧͨ͠Βग़དྷ·ͨ͠ɻ public/ ┗
1.html posts/ ┗ index.html ┗ => your.domain.netlify.com/posts/1 => your.domain.netlify.com/posts/ POINT ֦ுࢠͷলུ NetliyͰ.htmlলུ͞ΕΔ POINT _headers JSONͱͯ͠ϨεϙϯεฦͤOK ┗ _headers /public/_headers ֦ுࢠͷѻ͍
Slack as a CMS FunctionsとJSON配信を組み合わせた例
#netlifytokyo ߏਤ • 1. SlackͰreaction emoji͕Ճ͞ΕΔ • 2. Event APIʹΑͬͯNetlify
FunctionsʹϦΫΤετ • 3. Netlify FunctionsͰemojiͷՃ͞ΕͨϝοηʔδΛ ɹGitHubͷContentsAPIʹΑͬͯอଘ • 4. ContentsAPIʹΑͬͯੜͨ͡commitʹΑͬͯNetlifyͷϏϧυ͕։࢝ • 5. อଘ͞ΕͨϝοηʔδΛJSONʹ·ͱΊͯެ։ FLOW Slack 1 2 4 3 GitHub New commit Netlify Function Netlify Build&Publish 5 • SlackͰreaction͕͍ͭͨϝοηʔδΛGitHubʹอଘͯ͠ɺNetlifyͰ৴͢Δ
#netlifytokyo Slack Event API • Slack AppΛ࡞ͯ͠Event Subscriptionsͷઃఆ
#netlifytokyo GitHub Repository Contents API https://developer.github.com/v3/repos/contents/ • @octkit/rest ϥΠϒϥϦͰcreateFile API͕ར༻Ͱ͖Δɻ
• createFile APIʹΑͬͯ৽͍͠ίϛοτ͕࡞͞ΕΔɻ
#netlifytokyo Build JSON file • createFile APIͷίϛοτʹΑͬͯϏϧυ͕։࢝͞ΕΔɻ • createFile APIͰอଘͨ͠ϑΝΠϧΛ·ͱΊͯJSONʹग़ྗ͢Δ
DEMO
mottox2.com 事例 1: esa.ioをバックエンドにしたブログ ੩తαΠτࣄྫ
#netlifytokyo ߏਤ esa.io 1 2 Netlify Build API 3 •
1. esa.ioͷهࣄ͕ߋ৽͞ΕΔɻ • 2. esa.ioͷWebhookͰNetlifyͷBuild hookΛୟ͘ • 3. Ϗϧυதʹesa.ioͷAPIΛୟ͖ͭͭ੩తαΠτΛੜ͠ެ։ FLOW
#netlifytokyo mottox2.com • Build hooksΛઃఆͯ͠ੜ͞ΕͨURLʹPOSTϦΫΤετΛ͛ΔͱσϓϩΠͯ͘͠ΕΔɻ • ʮSettings > Build&Deploy =>
Build hooksʯͰઃఆՄ POINT WebhookΛར༻ͨ͠σϓϩΠ Build hook https://mottox2.com
#netlifytokyo mottox2.com • WebhookAPIͳͲ͕උ͞Ε͍ͯΔ։ൃऀϑϨϯυϦʔͳαʔϏε— • ݄500ԁͰυΩϡϝϯτཧͱϒϩάͷόοΫΤϯυΛ୲ͬͯ͘Ε͍ͯΔɻ esa.io: webhook͕͑Δใڞ༗αʔϏε https://mottox2.com
#netlifytokyo mottox2.com • ίϯςϯπߋ৽࣌ʹPOSTϦΫΤετΛ͛Δ POINT esa.io: webhook͕͑Δใڞ༗αʔϏε Webhook https://mottox2.com
#netlifytokyo mottox2.com • ੩తαΠτδΣωϨʔλʔa • Ϗϧυ͢Δࡍʹɺesa.ioͷAPIΛ ୟ͍ͯαΠτΛੜa • APIͷϨεϙϯεؚΊͯ੩తϑΝ Πϧʹॻ͖ग़ͯ͘͠ΕΔa
• ؔ࿈ϫʔυ: JAM stack POINT GatsbyJS: ֎෦ͷσʔλιʔεΛར༻ͯ͠αΠτΛߏங͢Δ੩తαΠτδΣωϨʔλʔ GatsbyJS https://mottox2.com
外部サービスのAPI化 事例 2: 外部APIをもとにBFF的なAPIを配信
#netlifytokyo ֎෦αʔϏεͷAPIԽ • node fetch.js > public/products.json͋ • APIΛୟ͍ͯܗ͠ग़ྗ͢ΔJS •
ׂͱԠ༻ൣғ͍ POINT /fetch.js ҙͷαΠτͷWeb APIԽ͕Մೳ Build command
10/8 技術書典5 @池袋サンシャインシティ 最後に宣伝
最後に ٕज़ॻయ൦ 今⽇のスライドより簡単な内容になっています。 ͚52 ͲͪΒNetlifyͰಈ͔͢લఏͰॻ͍͍ͯ·͢ɻೖ͍ͨ͠ͱ͍͏ํͥͻʂ