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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
mottox2
September 26, 2018
Programming
8
2.8k
静的サイトだけじゃない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
2.2k
なぜコピペで使うコンポーネント集を利用するのか?
mottox2
8
7.4k
UIコンポーネントライブラリをうまく使うためにできること / components-with-designer
mottox2
7
4k
Figma Plugin公開までの壁を乗り越える
mottox2
3
3.9k
Puppeteerでつくる画像と動画 / images and videos made with puppeteer
mottox2
0
750
手触りのよいウェブを考える / better-mobile-web
mottox2
3
1.9k
組織と権限とSlack App / slack-app-with-roles
mottox2
1
690
SSRを避けるためにやっていること / ssr-alternative
mottox2
9
3.3k
JSXでつくる宣言的UIなプレゼンテーション / jsx-presentation
mottox2
7
33k
Other Decks in Programming
See All in Programming
Fluid Templating in TYPO3 14
s2b
0
130
メルカリのリーダビリティチームが取り組む、AI時代のスケーラブルな品質文化
cloverrose
2
510
[KNOTS 2026登壇資料]AIで拡張‧交差する プロダクト開発のプロセス および携わるメンバーの役割
hisatake
0
250
コマンドとリード間の連携に対する脅威分析フレームワーク
pandayumi
1
450
組織で育むオブザーバビリティ
ryota_hnk
0
170
AIエージェント、”どう作るか”で差は出るか? / AI Agents: Does the "How" Make a Difference?
rkaga
4
2k
AIによる高速開発をどう制御するか? ガードレール設置で開発速度と品質を両立させたチームの事例
tonkotsuboy_com
7
2k
Lambda のコードストレージ容量に気をつけましょう
tattwan718
0
110
LLM Observabilityによる 対話型音声AIアプリケーションの安定運用
gekko0114
2
420
AIで開発はどれくらい加速したのか?AIエージェントによるコード生成を、現場の評価と研究開発の評価の両面からdeep diveしてみる
daisuketakeda
1
970
登壇資料を作る時に意識していること #登壇資料_findy
konifar
4
970
Basic Architectures
denyspoltorak
0
660
Featured
See All Featured
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
64
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
52
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
160
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
60
42k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
90
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
1
49
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
1
430
Measuring & Analyzing Core Web Vitals
bluesmoon
9
750
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.8k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.4k
Are puppies a ranking factor?
jonoalderson
1
2.7k
Amusing Abliteration
ianozsvald
0
96
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Ͱಈ͔͢લఏͰॻ͍͍ͯ·͢ɻೖ͍ͨ͠ͱ͍͏ํͥͻʂ