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.4k
静的サイトだけじゃない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
6
1.3k
なぜコピペで使うコンポーネント集を利用するのか?
mottox2
8
6.4k
UIコンポーネントライブラリをうまく使うためにできること / components-with-designer
mottox2
7
3.6k
Figma Plugin公開までの壁を乗り越える
mottox2
2
2.4k
Puppeteerでつくる画像と動画 / images and videos made with puppeteer
mottox2
0
600
手触りのよいウェブを考える / better-mobile-web
mottox2
3
1.6k
組織と権限とSlack App / slack-app-with-roles
mottox2
1
550
SSRを避けるためにやっていること / ssr-alternative
mottox2
9
3.1k
JSXでつくる宣言的UIなプレゼンテーション / jsx-presentation
mottox2
7
32k
Other Decks in Programming
See All in Programming
Trial
cairolibrary720
1
130
継続的な活動で築く地方エンジニアの道
myamashii
2
360
ピグパーティにおけるMongoDB CommunityバージョンからAtlasへの移行事例
10969hotaka
0
130
リハビリmruby
kishima
1
160
わかりやすい正解を捨てて、コトに向き合う - スクラムフェス金沢2024 スポンサーセッション
yusukekokubo
0
170
Javaの現状2024夏 / Java current status 2024 summer
kishida
4
1.4k
SDCon2024: Enabling DevOps and Team Topologies thru architecture: architecting for fast flow
cer
PRO
0
780
Play Billing Library 7.0.0 変更点まとめ@potatotips#88
kako351
0
160
AHC035解説
terryu16
0
720
なぜ宣言的 UI は壊れにくいのか / Why declarative UI is less fragile
uenitty
29
13k
Exploring the Gradually Lost Technical Skills in the Cloud Native Era
hwchiu
2
3.9k
Android開発者のための Kotlin Multiplatform入門
ntaro
0
190
Featured
See All Featured
Documentation Writing (for coders)
carmenintech
63
4.2k
Bootstrapping a Software Product
garrettdimon
PRO
304
110k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
353
29k
StorybookのUI Testing Handbookを読んだ
zakiyama
15
4.9k
What's in a price? How to price your products and services
michaelherold
239
11k
Leading Effective Engineering Teams 2024
addyosmani
3
300
A better future with KSS
kneath
231
17k
Design by the Numbers
sachag
277
18k
Agile that works and the tools we love
rasmusluckow
325
20k
The Illustrated Children's Guide to Kubernetes
chrisshort
39
47k
Happy Clients
brianwarren
94
6.6k
Visualization
eitanlees
139
14k
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Ͱಈ͔͢લఏͰॻ͍͍ͯ·͢ɻೖ͍ͨ͠ͱ͍͏ํͥͻʂ