Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
JamstackではじめるShopify / shopify-uc-kansai-202011
Search
Hidetaka Okamoto
November 19, 2020
Programming
150
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
JamstackではじめるShopify / shopify-uc-kansai-202011
Hidetaka Okamoto
November 19, 2020
More Decks by Hidetaka Okamoto
See All by Hidetaka Okamoto
OpenAI APIで API Changelogを要約してみた話 / chatgpt-osaka-1
hideokamoto
0
740
コミュニティ運営から 中の人に変わって感じたこと
hideokamoto
0
160
Developerが Developer Advocateになった話 / dev-rel-meetup-tokyo-71
hideokamoto
0
400
Jamstack開発者のための App Runner入門
hideokamoto
1
560
WordPressでの webサイト制作2022 / ngk2022s
hideokamoto
0
500
JavaScript(TypeScript)で メディアサイトを インフラから構築する方法 / jsconf-jp-2021
hideokamoto
2
4.5k
AWS上でStripeを利用したアプリをより安全にデプロイする方法 /jaws-pankration-2021
hideokamoto
1
260
Shifter Headlessと Headless WordPressの紹介
hideokamoto
0
2.3k
Stripe & Next.js + AWS Amplify で会員 + 定期課金機能 / JP_Stripes20210903
hideokamoto
7
3.3k
Other Decks in Programming
See All in Programming
[2026-10-09]一枚の布で作らなくてもいい。 信頼性は「パッチワーク」で紡がれる~既存の運用と新しい可能性をつなぎ合わせてきたCREの話~
tosite
0
110
Seven New Principles of Software Engineering
yegor256
0
210
個人開発者よ、Honoを使え(おじさんver)
tanahiro2010
2
270
Compiling a real-world CLI tool to native with Static Hermes
tmikov2023
0
130
When benchmarks go bad - what I learned from measuring performance wrong
hollycummins
0
240
re:Inventに行く前に知っておきたい現地参加のノウハウ
nokomoro3
0
460
Unity6 URPによる海底をテーマにしたVJシステムの解説 | Unity Shader 完全に理解した 勉強会
gam0022
0
370
Railsバージョンを4倍にした話
optim
0
520
[2026-10-14](C)Re:ゼロから始める異世界生活〜始まりの終わりと終わりの始まり〜
tosite
0
140
AI主導のプログラミング学習アプリを作ってみた
econanringo
0
180
オーケストレーション記述言語 Katari
yukikurage
0
170
Railsのためのパスキー実践入門 〜マルチテナントSaaSでの意思決定〜
utakaha
3
1k
Featured
See All Featured
Into the Great Unknown - MozCon
thekraken
41
2.8k
The Curious Case for Waylosing
cassininazir
1
570
Game over? The fight for quality and originality in the time of robots
wayneb77
1
310
The agentic SEO stack - context over prompts
schlessera
0
970
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
570
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.3k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
2
330
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
How to build a perfect <img>
jonoalderson
1
6.1k
Transcript
JamstackͰ ͡ΊΔShopify Shopify UC Kansai vol.1 Hidetaka Okamoto #ShopifyUC
Target Developer Agency #ShopifyUC
TL;DR • ShopifyͰͷαΠτߏஙLiquidه๏͔APIར༻͕ϝΠϯ • APIར༻ͷ߹ɺJamstackʹ͢ΔͱJavaScript͚ͩͰ࡞ΕΔ • Liquidه๏Λ֮͑ͯ༗ྉThemeൢചΛΊ͟͢ํ๏ • Shopifyύʔτφʔʹͳͬͯ·ͣಈ͔ͯ͠ΈΑ͏ #ShopifyUC
Agenda • ShopifyͰͷϑϩϯτΤϯυͷ࡞Γํ • ։ൃ༻αΠτ / Storefront APIར༻ͷ४උ • Gatsby(React)ͰShopifyͱ࿈ܞͨ͠αΠτΛ࡞Δ
• What’s your favorite style to make the store? #ShopifyUC
Agenda • ShopifyͰͷϑϩϯτΤϯυͷ࡞Γํ • ։ൃ༻αΠτ / Storefront APIར༻ͷ४උ • Gatsby(React)ͰShopifyͱ࿈ܞͨ͠αΠτΛ࡞Δ
• What’s your favorite style to make the store? #ShopifyUC
ߏஙํ๏1 ςʔϚΛߪೖ͢Δ • ετΞ͔ΒΠϯετʔϧ • ແྉ൛Ͱͦͦ͜͜ߴػೳ • ΧελϚΠβʔతͳػೳ • ΧελϚΠζͷࣗ༝ʹ੍ݶ
• αϙʔτ͕ӳޠߴΊ(༗ྉTheme) • Shopify LiteͰͦͦ͑ͳ͍ #ShopifyUC
ߏஙํ๏2 ςʔϚΛࣗ࡞͢Δ • Liquidه๏ + JavaScriptͰ࡞ΕΔ • Tutorialίʔυྫ͕ଟ͍ • ༗ྉςʔϚൢചࢦͤΔ
• Liquidه๏ʹೃછΊΔ͔൱͔͕ਫྮ • Sampleଟ͍͕ɺݱঢ়ӳޠߴΊ • Shopify LiteͰͦͦ͑ͳ͍ #ShopifyUC
ߏஙํ๏3 APIΛͬͯ֎෦ߏங • Shopify API(REST / GraphQL)Λར༻ • LiteͰϑϩϯτΤϯυ͕࡞ΕΔ •
JavaScriptͷจ຺ͰߏஙՄೳ • JamstackͰαΠτ͕࡞ΕΔ͔͕ਫྮ • Shopifyͷ֎ʹͳΔͷͰࢿྉΑΓগͳ͍ • ظతʹอकӡ༻͢ΔલఏʹͳΓ͕ͪ
ShopifyͰͷϑϩϯτΤϯυͷ࡞Γํ • σβΠϯʹ߆Βͳ͍ɾ·ͣΔ͜ͱ͕తͳΒແྉςʔϚ • ࣾͰ։ൃ͕͍͠ͳΒɺ༗ྉςʔϚΛ୳ͯ͠ߪೖ • Liquidه๏ͰͷςʔϚ੍࡞Λ֮͑ͯ༗ྉςʔϚൢചΛࢦ͢ • Jamstackܥ͕ಘҙͳΒShopify LiteʹΓସ͑ͯίετμϯ
#ShopifyUC
Agenda • ShopifyͰͷϑϩϯτΤϯυͷ࡞Γํ • ։ൃ༻αΠτ / Storefront APIར༻ͷ४උ • Gatsby(React)ͰShopifyͱ࿈ܞͨ͠αΠτΛ࡞Δ
• What’s your favorite style to make the store? #ShopifyUC
Shopify Perners • ShopifyΞΧϯτͱผʹొ • ແྉͰ։࢝Մೳ • ΞϑΟϦΤΠτͳͲ • Dev༻ͷγϣοϓ͕ແྉͰ࡞ΕΔ
https://www.shopify.jp/partners #ShopifyUC
#ShopifyUC
https://YOUR-SHOP-NAME.myshopify.com/admin/apps/private/new
https://YOUR-SHOP-NAME.myshopify.com/admin/apps/private/new αΠτͷAPIܥαΠτͷ[ΞϓϦཧ]͔Β • ύʔτφʔͷཧը໘ʹʮΞϓϦཧʯ͋Δ͕ɺͦΕShopifyΞϓϦ͚ • ετΞϑϩϯτAPIͱಉը໘ʹ͋ΔʮAdmin APIʯShopifyΞϓϦ͚ • ্ه2ͭShopifyͷΞϓϦΛ࡞Δ࣌ʹ͏APIͷઃఆͱ֤छใ •
ݖݶ͕͍ͷͰɺؒҧͬͯΣϒαΠτߏஙʹ͏ͱɾɾɾ • ʮStoreͷFrontendͷͨΊͷAPIʯ= ʮετΞϑϩϯτAPIʯͱ֮͑Α͏ • ετΞϑϩϯτAPIApple PayAndroidͷܾࡁʹରԠՄೳʢMobile Buy SDKʣ #ShopifyUC
Agenda • ShopifyͰͷϑϩϯτΤϯυͷ࡞Γํ • ։ൃ༻αΠτ / Storefront APIར༻ͷ४උ • Gatsby(React)ͰShopifyͱ࿈ܞͨ͠αΠτΛ࡞Δ
• What’s your favorite style to make the store? #ShopifyUC
https://www.gatsbyjs.com/ #ShopifyUC
https://www.gatsbyjs.com/ Gatsby -> Reactϕʔεͷ੩తαΠτδΣωϨʔλʔ • APIϑΝΠϧ͔ΒσʔλΛऔΓࠐΈɺ੩తͳHTMLΛ࡞͢Δπʔϧͷ1ͭ • ੩తαΠτͱͯ͠ެ։͢ΔͷͰɺαʔόʔΛ྿Ձʹ͍͢͠ • ϑϩϯτΤϯυͷίʔυJavaScript
(React)Ͱ࣮ • ϓϥάΠϯγεςϜ͕͋Γɺ༗໊Ͳ͜Ζͷσʔλ΄΅ϊʔίʔυͰऔΓࠐΊΔ • औΓࠐΜͩσʔλΛར༻͢ΔͷʹɺGraphQL͕ඞཁɻ • ʮWebαΠτΛReactͰ࡞Γ͍ͨʯ࣌ʹߴ֬Ͱީิʹग़Δπʔϧͷ1ͭ #ShopifyUC
gatsby-config.jsʹଓใΛهड़ module.exports = { siteMetadata: { title: `Gatsby Typescript Starter`,
}, plugins: [ `gatsby-plugin-typescript`, { resolve: `gatsby-source-shopify`, options: { // ετΞͷυϝΠϯ shopName: “example.myshopify.com”, // ετΞϑϩϯτAPIͷΞΫηετʔΫϯ accessToken: “xxxxxxxxxxxxxxxxxx”, }, }, ], } #ShopifyUC
GraphQLͰඞཁͳσʔλ͚ͩऔಘ͢Δ const result = await graphql(` query { allShopifyProduct(sort: {
fields: [title] }) { edges { node { title images { originalSrc } shopifyId handle priceRange { maxVariantPrice { amount } minVariantPrice { amount } } } } } } `)} #ShopifyUC
ͲΜͳσʔλ͕ͱΕΔ͔ςετͰ͖Δػೳ͖ͭ #ShopifyUC
GraphQLͰϩʔυ ReactͰHTMLԽ import * as React from 'react' import Link
from 'gatsby-link' import { graphql } from "gatsby" import DefaultLayout from '../layouts' const Page = ({data}: any) => { return ( <DefaultLayout> <div> <article> <h1>Products</h1> <ul> {data.allShopifyProduct.edges.map(({ node }: any) => ( <li key={node.shopifyId}> {node.images[0] && node.images[0].originalSrc ? ( <img src={node.images[0].originalSrc} width={400} /> ): null} <h3> <Link to={`/product/${node.handle}`}>{node.title}</Link> {" - "}${node.priceRange.minVariantPrice.amount} </h3> <p>{node.description}</p> </li> ))} </ul> </article> <Link to="/">Go back to the homepage</Link> </div> </DefaultLayout> ) } • APIΛୟ͔ͳ͍ • ͯ͢GraphQLܦ༝ • ෳͷαʔϏε / APIΛར ༻ͨ͠߹ʹศརͳ #ShopifyUC
ྫ͑͜Μͳ͍ํ • ͢Ͱʹ͋ΔWordPressαΠτͷσʔ λऔΓࠐΜͰ͏ • ग़ళใͳͲɺ GoogleεϓϨουγʔτͰཧ͠ ͍ͯΔใಡΈࠐΜͰදࣔ • ࠓ͍ͬͯΔπʔϧͦͷ··׆༻
Χʔτܥͷॲཧshopify-buyΛར༻͢Δ
npm i -S \ shopify-buy import * as React from
"react" import {buildClient} from 'shopify-buy' import { Button } from 'antd' … const client = buildClient({ storefrontAccessToken: ‘your_token’, domain: ‘example.myshopify.com', }) const handleCheckout = React.useCallback((variantId: string) => { client.checkout.create() .then(async(checkout) => { const checkoutId = checkout.id await client.checkout.addLineItems( checkoutId, [{ variantId, quantity: 1 }] ) // @ts-expect-error window.open(checkout.webUrl) }) .catch(e => { console.log(e) }) }, [client]) • JavaScriptͰΧʔτૢ࡞ • ײతͳϝιουͰ ShopifyͷAPIΛૢ࡞Մೳ • TypeScriptͳΒ @types/shopify-buyΛ #ShopifyUC
JamstackͳShopifyϑϩϯτΤϯυߏங • ׳Εͯͳ͍ਓʹͱͬͯਖ਼ͨͩͷ • Jamstack / Next.js / Nuxt.js /
Gatsby / GridsomeͳͲʹ׳Ε͍ͯΔਓʹ࿕ใ • ʮطଘͷϦιʔεɾϊϋΛͬͯShopifyͷαΠτߏங͕͍͔ͨ͠൱͔ʯͷબ • طଘͷϦιʔεɾϊϋ͕ͳ͍߹ʹݫ͍͠ • σʔλιʔε͕͋ͪͪ͜ʹࢄΒ͍ͬͯΔ߹ʹ༗༻ʢಛʹGatsby / Gridsomeʣ • σʔλऩूͱॲཧ͕͔ΕΔͷͰɺஈ֊తͳϚΠάϨͳͲൺֱత༰қʹ #ShopifyUC
Agenda • ShopifyͰͷϑϩϯτΤϯυͷ࡞Γํ • ։ൃ༻αΠτ / Storefront APIར༻ͷ४උ • Gatsby(React)ͰShopifyͱ࿈ܞͨ͠αΠτΛ࡞Δ
• What’s your favorite style to make the store? #ShopifyUC
ECΔ͚ͩͳΒ STORESBASE͋Δ • STORES / BASEແྉ • UIαϙʔτຊ͚ • ༗ྉϓϥϯͰShopifyͱಉ͔
ͦΕΑΓ྿Ձʹ͑Δ • ͦΕͰShopifyΛ͏ͷʁ
ٸ͢ΔSaaSͷڞ௨߲ɿ APIΤίϊϛʔ
API͕ ։͔Ε͍ͯΔ߹ • ίʔυΛॻ͚ɺͳΜͰͰ͖Δ • ػೳʹΑͬͯαϙʔτઌ͕มΘΔ͜ͱ • ࠨ + ʮͲ͏ศརʹ֦ு͍͔ͯ͘͠ʯ
• ࠨ + ֦ுػೳͷ։ൃൢച API͕ ։͔Ε͍ͯͳ͍߹ • Ͱ͖Δ͜ͱ = ϕϯμʔͷϦϦʔε༰ • ͳʹ͔͋ΕϕϯμʔʹରԠґཔ • ʮγεςϜΛͲ͏ૢ࡞͢Δ͔ʯ • ӡ༻ߦ / ઃఆߦͱͯ͠ͷۀ #ShopifyUC
Share the knowledge ʢࣦഊஊʂʣ
None
ॻ͘ / ͢͜ͱͰΑΓਂֶ͍ͼʹͳΔ • ࢼ͢ɾಈ͔͢ஈ֊Ͱʮͳͥಈ͍͔ͨɾͳࣦͥഊ͔ͨ͠ʯΛߟ͑ʹ͍͘ • ϫʔΫγϣοϓͰ৮ͬͯຬͯ͠ɺͦͷޙ৮͍ͬͯͳ͍ͷɻ͋Γ·ͤΜ͔ʁ • Ξτϓοτ͢ΔͨΊʹɺʮͬͨ͜ͱΛݴޠԽ͢Δʯඞཁ͕͋Δ •
ॻ͖ग़ͯ͠ΈΔ͜ͱͰɺʮ࣮Θ͔͍ͬͯͳ͔ͬͨ͜ͱʯ͕ݟ͑ͯ͘Δ • ʮΈΜͳॻ͔ͳ͍ʯ͚ͩͰɺʮΈΜͳࣦഊ֮ͯ͑ͯ͠Δʯ • ࣦഊΛॻ͘ = ࣦഊͷৼΓฦΓ͕Ͱ͖͍ͯΔ • ͳΜͰ͍͍͔Βɺࢼͨ͜͠ͱͷৼΓฦΓΛPublishing͠Α͏ʂ #ShopifyUC
ͦ͏͍͑ࠓ͜Μͳͷ͕͋Γ·ͨ͠Ͷ #ShopifyUC #ShopifyUC
ͦ͏͍͑ࠓ͜Μͳͷ͕͋Γ·ͨ͠Ͷ #ShopifyUC #ShopifyUC
ͦΖͦΖ͜Μͳͷ͋Γ·ͨ͠Ͷ #ShopifyUC
JamstackͳShopifyϑϩϯτΤϯυߏங • ׳Εͯͳ͍ਓʹͱͬͯਖ਼ͨͩͷ • Jamstack / Next.js / Nuxt.js /
Gatsby / GridsomeͳͲʹ׳Ε͍ͯΔਓʹ࿕ใ • ʮطଘͷϦιʔεɾϊϋΛͬͯShopifyͷαΠτߏங͕͍͔ͨ͠൱͔ʯͷબ • طଘͷϦιʔεɾϊϋ͕ͳ͍߹ʹݫ͍͠ • σʔλιʔε͕͋ͪͪ͜ʹࢄΒ͍ͬͯΔ߹ʹ༗༻ʢಛʹGatsby / Gridsomeʣ • σʔλऩूͱॲཧ͕͔ΕΔͷͰɺஈ֊తͳϚΠάϨͳͲൺֱత༰қʹ #ShopifyUC
#ShopifyUC