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.7k
静的サイトだけじゃない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
2k
なぜコピペで使うコンポーネント集を利用するのか?
mottox2
8
7.3k
UIコンポーネントライブラリをうまく使うためにできること / components-with-designer
mottox2
7
3.9k
Figma Plugin公開までの壁を乗り越える
mottox2
3
3.7k
Puppeteerでつくる画像と動画 / images and videos made with puppeteer
mottox2
0
730
手触りのよいウェブを考える / better-mobile-web
mottox2
3
1.9k
組織と権限とSlack App / slack-app-with-roles
mottox2
1
680
SSRを避けるためにやっていること / ssr-alternative
mottox2
9
3.2k
JSXでつくる宣言的UIなプレゼンテーション / jsx-presentation
mottox2
7
33k
Other Decks in Programming
See All in Programming
モダンJSフレームワークのビルドプロセス 〜なぜReactは503行、Svelteは12行なのか〜
fuuki12
0
130
モビリティSaaSにおけるデータ利活用の発展
nealle
1
650
AI時代もSEOを頑張っている話
shirahama_x
0
190
JJUG CCC 2025 Fall: Virtual Thread Deep Dive
ternbusty
3
490
Developing Specifications - Jakarta EE: a Real World Example
ivargrimstad
0
240
関数の挙動書き換える
takatofukui
4
750
Level up your Gemini CLI - D&D Style!
palladius
1
130
Evolving NEWT’s TypeScript Backend for the AI-Driven Era
xpromx
0
200
分散DBって何者なんだ... Spannerから学ぶRDBとの違い
iwashi623
0
120
オフライン対応!Flutterアプリに全文検索エンジンを実装する @FlutterKaigi2025
itsmedreamwalker
2
300
しっかり学ぶ java.lang.*
nagise
1
460
2025 컴포즈 마법사
jisungbin
0
150
Featured
See All Featured
How to Think Like a Performance Engineer
csswizardry
28
2.3k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.8k
Producing Creativity
orderedlist
PRO
348
40k
Imperfection Machines: The Place of Print at Facebook
scottboms
269
13k
Facilitating Awesome Meetings
lara
57
6.6k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.8k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.4k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
3.8k
Balancing Empowerment & Direction
lara
5
760
Site-Speed That Sticks
csswizardry
13
970
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
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Ͱಈ͔͢લఏͰॻ͍͍ͯ·͢ɻೖ͍ͨ͠ͱ͍͏ํͥͻʂ