20. 19Copyright (C) NRI digital, Ltd. All rights reserved.
本日の内容はNRIデジタルテックブログで解説しています
Shopify アプリとは
https://github.com/t-kurasawa/shopify_dev_templatehttps://www.nri-digital.jp/tech/20200526-2059/
21. 20Copyright (C) NRI digital, Ltd. All rights reserved.
最終的なアーキテクチャスタック
Shopify アプリとは
AWS Cloud
Management PC
管理者
Shopify
Shopify
テーマ
ショップ画面
Shopify
アプリ
Shopify
API
API Gateway
Request Front Web
Request REST API
Route 53
Resolve DNS
オンラインEC処理
Request REST API
Request Front Web
オンラインEC DB
Shopify
管理画面
Shopify DB
商品/注文/顧客
invoke
access data
access data access data
Request Front Web
Web MobileWeb PC
ユーザー
Amazon Cognito
Request Auth Token
Shopify
アプリ
Amazon Cognito
API Gateway
invoke Request REST API
Request Auth Token
Route 53
Resolve DNS
22. 21Copyright (C) NRI digital, Ltd. All rights reserved.
Shopify はアプリとテーマでカスタマイズ開発を行う
Shopify アプリとは
アプリ
(機能)
テーマ
(デザイン)
23. 22Copyright (C) NRI digital, Ltd. All rights reserved.
アプリをインストールすると、管理画面内にアプリの画面が表示される
Shopify アプリとは
24. 23Copyright (C) NRI digital, Ltd. All rights reserved.
API で商品?注文?顧客のデータを連携して、
ショップオリジナルのEC機能を追加するための拡張手段
Shopify アプリとは
Shopify外のWebサーバーで
アプリが動く
アプリは何で開発しても良い
26. 25Copyright (C) NRI digital, Ltd. All rights reserved.
API で構成されるマイクロサービスアーキテクチャ
Shopify アプリとは
Shopify
?商品
?注文
?顧客
EC の基本となるデータの
管理(CRUD)を担う
拡張フィールドを json 形式で
持つことも可能
3rd 認証
API
REST
GraphQL
API
REST
GraphQL
3rd Apps
3rd Apps
基幹
システム
Web
PC/スマホ
アプリ
SDK
Instagram
他社Web
3rd Apps
3rd Apps
Web
PC/スマホ
3rd Apps
ユーザー バックオフィス
27. 26Copyright (C) NRI digital, Ltd. All rights reserved.
Shopify の画面構成とデータ構造を MVC モデルに当てはめると
Shopify アプリとは
テーマ リキッドView
Controller
Model
ショップ画面 管理画面
アプリ
Javascript
自社
API
データ
Store
Front
API
Shopify
データ
モデル
自社
API
データ
Store
Front
API
リキッド
Javascript
アプリ
HTML/CSS
アプリ
Javascript
自社 API
データ
Admin API
管理画面アプリ
HTML/CSS
28. 27Copyright (C) NRI digital, Ltd. All rights reserved.
AWS 上で React を使って Shopify アプリを開発する方法
31. 30Copyright (C) NRI digital, Ltd. All rights reserved.
バックエンド:Serverless Framework でバックエンド API を構築
Shopify アプリ開発
?Node.js でバックエンド API を開発
?Serverless Framework でデプロイ
? yarn install
? serverless deploy
?テンプレートソースコードは以下を参照
? shopify_dev_template/app/api-serverless/
出所)https://dev.classmethod.jp/articles/serverless-first-serverlessframework/
32. 31Copyright (C) NRI digital, Ltd. All rights reserved.
Shopify アプリ(管理画面)の構成
Shopify アプリ開発
管理画面
アプリ
Javascript
自社 API
データ
Admin API
管理画面アプリ
HTML/CSS
フロントエンド
(react-amplified)
React を Amplify Hosting を使い
S3 + Cloudfront 構成でデプロイします
バックエンド
(api-serverless)
Node.js を Serverless Framework を使い
API Gateway – Lambda – DynamoDB 構成でデプロイします
33. 32Copyright (C) NRI digital, Ltd. All rights reserved.
Shopify アプリ(管理画面)の構成
Shopify アプリ開発
管理画面
アプリ
Javascript
自社 API
データ
Admin API
管理画面アプリ
HTML/CSS
34. 33Copyright (C) NRI digital, Ltd. All rights reserved.
Shopify アプリ(管理画面)の構成
Shopify アプリ開発
管理画面
アプリ
Javascript
自社 API
データ
Admin API
管理画面アプリ
HTML/CSS
フロントエンド
(react-amplified)
React を Amplify Hosting を使い
S3 + Cloudfront 構成でデプロイします。
バックエンド
(api-serverless)
Node.js を Serverless Framework を使い
API Gateway – Lambda – DynamoDB 構成でデプロイします
通常の Web 開発と同じ
35. 34Copyright (C) NRI digital, Ltd. All rights reserved.
アプリをインストールし、アクセストークンを元に Shopify API を呼び出す
Shopify アプリ開発
管理画面
アプリ
Javascript
自社 API
データ
Admin API
管理画面アプリ
HTML/CSS
アプリを入れるショップ 開発するアプリ Shopify API
Authorization Code Grant のフローに準拠
36. 35Copyright (C) NRI digital, Ltd. All rights reserved.
Shopify
アプリをインストールし、アクセストークンを元に Shopify API を呼び出す
Shopify アプリ開発
管理画面
アプリ
Javascript
自社 API
データ
Admin API
管理画面アプリ
HTML/CSS
フロントエンド(react-amplified)
バックエンド(api-serverless)
① /auth
② /oauth/authorize
③ /callback
④ /oauth
⑥ /products Admin API
⑤ /oauth/access_token
37. 36Copyright (C) NRI digital, Ltd. All rights reserved.
Step 1: Get client credentials
Shopify アプリ開発
?アプリ管理>アプリを作成する
?公開アプリ?カスタムアプリを選択
?アプリURLとリダイレクトURLを登録
? アプリURL(/auth)
? ショップがアプリをインストールするためのリンク
Shopify の認証を行う
? ホワイトリストに登録されたリダイレクトURL(/callback)
? Shopify の認証が行われた後に、利用する API の権限等を
確認し、権限を付与した後にリダイレクトされる URL
?権限や API バージョンを設定
?アプリで利用する API キーとシークレットキーを取得
※シークレットキーは公開してはいけません
38. 37Copyright (C) NRI digital, Ltd. All rights reserved.
Step 2: Ask for permission
Shopify アプリ開発
①ショップへアプリをインストールするための
リンク(/auth)をクリック
②権限の確認と付与を行う Shopify 画面にて
アプリをインストールするボタンをクリック
(/oauth/authorize)
アプリインストールリンク(/auth)
アプリ画面へ(/callback)
39. 38Copyright (C) NRI digital, Ltd. All rights reserved.
① /auth:ショップへアプリをインストールするためのリンクの処理
Shopify アプリ開発
?スコープやリダイレクトURL等を設定し Shopify の /oauth/authorize へリクエストを送信
40. 39Copyright (C) NRI digital, Ltd. All rights reserved.
② /oauth/authorize:権限の確認とアプリのインストール
Shopify アプリ開発
?Shopify の管理画面にてアプリのインストールを行う
41. 40Copyright (C) NRI digital, Ltd. All rights reserved.
Shopify
アプリをインストールし、アクセストークンを元に Shopify API を呼び出す
Shopify アプリ開発
管理画面
アプリ
Javascript
自社 API
データ
Admin API
管理画面アプリ
HTML/CSS
フロントエンド(react-amplified)
バックエンド(api-serverless)
① /auth
② /oauth/authorize
③ /callback
④ /oauth
⑥ /products Admin API
⑤ /oauth/access_token
45. 44Copyright (C) NRI digital, Ltd. All rights reserved.
Shopify
アプリをインストールし、アクセストークンを元に Shopify API を呼び出す
Shopify アプリ開発
管理画面
アプリ
Javascript
自社 API
データ
Admin API
管理画面アプリ
HTML/CSS
フロントエンド(react-amplified)
バックエンド(api-serverless)
① /auth
② /oauth/authorize
③ /callback
④ /oauth
⑥ /products Admin API
⑤ /oauth/access_token
46. 45Copyright (C) NRI digital, Ltd. All rights reserved.
Step 4: Making authenticated requests
Shopify アプリ開発
?取得したアクセストークンを利用して Shopify Admin API とデータ通信を行います
47. 46Copyright (C) NRI digital, Ltd. All rights reserved.
⑥ /products:Shopify の商品APIを呼び出す
Shopify アプリ開発
?アクセストークンを何らかの方法で永続化し、
商品APIを呼び出す際に利用します
?npm install shopify-api-node
48. 47Copyright (C) NRI digital, Ltd. All rights reserved.
Shopify アプリを AWS 上で動かす
Shopify アプリ開発
管理画面
アプリ
Javascript
自社 API
データ
Admin API
管理画面アプリ
HTML/CSS
49. 48Copyright (C) NRI digital, Ltd. All rights reserved.
Shopify アプリを AWS 上で動かす
Shopify アプリ開発
管理画面
アプリ
Javascript
自社 API
データ
Admin API
管理画面アプリ
HTML/CSS
50. 49Copyright (C) NRI digital, Ltd. All rights reserved.
Shopify アプリを AWS 上で動かす
Shopify アプリ開発
管理画面
アプリ
Javascript
自社 API
データ
Admin API
管理画面アプリ
HTML/CSS
フロントエンド
(react-amplified)
React を Amplify Hosting を使い
S3 + Cloudfront 構成でデプロイします。
バックエンド
(api-serverless)
Node.js を Serverless Framework を使い
API Gateway – Lambda – DynamoDB 構成でデプロイします
51. 50Copyright (C) NRI digital, Ltd. All rights reserved.
最終的なアーキテクチャスタック
Shopify アプリ開発
AWS Cloud
Management PC
管理者
Shopify
Shopify
テーマ
ショップ画面
Shopify
アプリ
Shopify
API
API Gateway
Request Front Web
Request REST API
Route 53
Resolve DNS
オンラインEC処理
Request REST API
Request Front Web
オンラインEC DB
Shopify
管理画面
Shopify DB
商品/注文/顧客
invoke
access data
access data access data
Request Front Web
Web MobileWeb PC
ユーザー
Amazon Cognito
Request Auth Token
Shopify
アプリ
Amazon Cognito
API Gateway
invoke Request REST API
Request Auth Token
Route 53
Resolve DNS