Slide 1

Slide 1 text

ͷ׆༻๏ @mottox2 / Netlify Meetup Tokyo #2 ੩తαΠτ͚ͩ͡Όͳ͍ ੩తαΠτϗεςΟϯά͚ͩ͡Όͳ͍ʂ

Slide 2

Slide 2 text

• ໨ඪ: ΑΓଟ͘ͷਓʹ࢖ΘΕΔαʔϏεΛ࡞Γ͍ͨ • ݚڀςʔϚ: ΑΓૣ͘αʔϏεΛ্ཱͪ͛Δख๏ • థਧ͖ΤϯδχΞ: ޱథͱϗϧϯΛਧ͖·͢ • OSS׆ಈ: Gatsbyͷϝϯςφʔ mottox2 @ 8FCϑϩϯτΤϯυͱσβΠϯͷϑϦʔϥϯε Who am I?

Slide 3

Slide 3 text

#netlifytokyo Netlify • ੩తαΠτΛϗεςΟϯάͯ͘͠ΕΔαʔϏεa • BuildίϚϯυͱެ։ϦϙδτϦΛࢦఆ͢Δͱ͍͍͔Μ͡ʹσϓϩΠͯ͘͠ΕΔɻ netlify.com

Slide 4

Slide 4 text

静的サイトホスティングの事例 はもういいかなと思いまして… 静的サイトホスティング以外の活⽤法を紹介

Slide 5

Slide 5 text

本⽇お伝えするNetlify利⽤法 • ػೳฤ • Netlify FunctionsΛར༻͢Δ • JSONϑΝΠϧΛ഑৴͢Δ • Ԡ༻ฤ • FunctionsͰSaaSͱͭͳ͙ • NetlifyͰCMSΛߏங͢Δ

Slide 6

Slide 6 text

Functionsを利⽤する 機能編

Slide 7

Slide 7 text

#netlifytokyo Netlify Functions ؔ਺͚ͩॻ͚͹͍͍ײ͡ʹಈ͔ͯ͠ΕΔαʔϏεɻத਎͸AWS lambda Function request response URL Call: https://example.com/hoge Status: 200 body: Hello World ͚࣮ͩ͜͜૷͢Δ Functionsͱ͸ʁ

Slide 8

Slide 8 text

#netlifytokyo Netlify Functions ϛχϚϜߏ੒ 1/3 /functions/hello.js /netlify.toml • NetlifyͷઃఆϑΝΠϧ • ࣮ߦϓϩάϥϜΛؚΉσΟϨΫτϦΛࢦఆ • Event͔Βrequest৘ใΛऔಘ • callbackͰresponseΛ࿔Δ

Slide 9

Slide 9 text

#netlifytokyo Netlify Functions ϛχϚϜߏ੒ 2/3

Slide 10

Slide 10 text

#netlifytokyo Netlify Functions ϛχϚϜߏ੒ 3/3

Slide 11

Slide 11 text

JSONを配信する 機能編

Slide 12

Slide 12 text

#netlifytokyo JSONͷ഑৴ • ެ։σΟϨΫτϦΛࢦఆ͢Ε͹഑৴Ͱ͖ΔͷͰɺJSONϑΝΠϧ΋OKɻ public/ ┗ sample.json

Slide 13

Slide 13 text

#netlifytokyo JSONͷ഑৴ • Q. ຖճJSONϑΝΠϧॻ͘ͷਏ͍ͷͰ͸ʁ • A. Θ͔ΔɻBuild commandͰJSONϑΝΠϧΛు͖ग़͢ίʔυΛॻ͚͹Α͍ɻ /netlify.toml /fetch.js Netlfiyの設定ファイル ビルドコマンドと公開ディレクトリを設定 いい感じに処理したオブジェクトを出⼒ Build commandのリダイレクトで public以下にJSONファイルとして保存される JSONͷੜ੒

Slide 14

Slide 14 text

#netlifytokyo JSONͷ഑৴ /public/_headers _headers • ެ։σΟϨΫτϦ௚Լʹஔ͍ͯɺϑΝΠϧ͝ͱʹϔομʔΛࢦఆ͢Δɻ • ͜ͷ৔߹͸഑৴͢ΔJSONϑΝΠϧʹCORS༻ͷϔομʔΛ͚ͭΔྫɻ • Q. ϨεϙϯεϔομʔΛ͍͡Γ͍ͨ • A. ग़དྷ·͢ɻ_headersͱ͍͏ઃఆϑΝΠϧͰՄೳͰ͢ɻ

Slide 15

Slide 15 text

#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 ֦ுࢠͷѻ͍

Slide 16

Slide 16 text

Slack as a CMS FunctionsとJSON配信を組み合わせた例

Slide 17

Slide 17 text

#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Ͱ഑৴͢Δ

Slide 18

Slide 18 text

#netlifytokyo Slack Event API • Slack AppΛ࡞੒ͯ͠Event Subscriptionsͷઃఆ

Slide 19

Slide 19 text

#netlifytokyo GitHub Repository Contents API https://developer.github.com/v3/repos/contents/ • @octkit/rest ϥΠϒϥϦͰ΋createFile API͕ར༻Ͱ͖Δɻ • createFile APIʹΑͬͯ৽͍͠ίϛοτ͕࡞੒͞ΕΔɻ

Slide 20

Slide 20 text

#netlifytokyo Build JSON file • createFile APIͷίϛοτʹΑͬͯϏϧυ͕։࢝͞ΕΔɻ • createFile APIͰอଘͨ͠ϑΝΠϧΛ·ͱΊͯJSONʹग़ྗ͢Δ

Slide 21

Slide 21 text

DEMO

Slide 22

Slide 22 text

mottox2.com 事例 1: esa.ioをバックエンドにしたブログ ੩తαΠτࣄྫ

Slide 23

Slide 23 text

#netlifytokyo ߏ੒ਤ esa.io 1 2 Netlify Build API 3 • 1. esa.ioͷهࣄ͕ߋ৽͞ΕΔɻ • 2. esa.ioͷWebhookͰNetlifyͷBuild hookΛୟ͘ • 3. Ϗϧυதʹesa.ioͷAPIΛୟ͖ͭͭ੩తαΠτΛੜ੒͠ެ։ FLOW

Slide 24

Slide 24 text

#netlifytokyo mottox2.com • Build hooksΛઃఆͯ͠ੜ੒͞ΕͨURLʹPOSTϦΫΤετΛ౤͛ΔͱσϓϩΠͯ͘͠ΕΔɻ • ʮSettings > Build&Deploy => Build hooksʯͰઃఆՄ POINT WebhookΛར༻ͨ͠σϓϩΠ Build hook https://mottox2.com

Slide 25

Slide 25 text

#netlifytokyo mottox2.com • Webhook΍APIͳͲ͕੔උ͞Ε͍ͯΔ։ൃऀϑϨϯυϦʔͳαʔϏε— • ݄500ԁͰυΩϡϝϯτ؅ཧͱϒϩάͷόοΫΤϯυΛ୲ͬͯ͘Ε͍ͯΔɻ esa.io: webhook͕࢖͑Δ৘ใڞ༗αʔϏε https://mottox2.com

Slide 26

Slide 26 text

#netlifytokyo mottox2.com • ίϯςϯπߋ৽࣌ʹPOSTϦΫΤετΛ౤͛Δ POINT esa.io: webhook͕࢖͑Δ৘ใڞ༗αʔϏε Webhook https://mottox2.com

Slide 27

Slide 27 text

#netlifytokyo mottox2.com • ੩తαΠτδΣωϨʔλʔa • Ϗϧυ͢Δࡍʹɺesa.ioͷAPIΛ
 ୟ͍ͯαΠτΛੜ੒a • APIͷϨεϙϯε΋ؚΊͯ੩తϑΝ Πϧʹॻ͖ग़ͯ͘͠ΕΔa • ؔ࿈ϫʔυ: JAM stack POINT GatsbyJS: ֎෦ͷσʔλιʔεΛར༻ͯ͠αΠτΛߏங͢Δ੩తαΠτδΣωϨʔλʔ GatsbyJS https://mottox2.com

Slide 28

Slide 28 text

外部サービスのAPI化 事例 2: 外部APIをもとにBFF的なAPIを配信

Slide 29

Slide 29 text

#netlifytokyo ֎෦αʔϏεͷAPIԽ • node fetch.js > public/products.json͋ • APIΛୟ͍ͯ੔ܗ͠ग़ྗ͢ΔJS • ׂͱԠ༻ൣғ޿͍ POINT /fetch.js ೚ҙͷαΠτͷWeb APIԽ͕Մೳ Build command

Slide 30

Slide 30 text

10/8 技術書典5 @池袋サンシャインシティ 最後に宣伝

Slide 31

Slide 31 text

最後に ٕज़ॻయ൦෍෺ 今⽇のスライドより簡単な内容になっています。 ͚52 ͲͪΒ΋NetlifyͰಈ͔͢લఏͰॻ͍͍ͯ·͢ɻೖ໳͍ͨ͠ͱ͍͏ํ͸ͥͻʂ