LoginSignup
28
18

More than 3 years have passed since last update.

Shopify App CLI でアプリを開発する

Last updated at Posted at 2020-04-05

アプリとは

Shopify はアプリで機能を拡張することが出来ます。
アプリには公開アプリとプライベートアプリがあります。

Shopify App CLI による開発環境構築

Shopify Dev Template を公開しているのでご活用ください。

Shopify App CLI のインストール手順に従い環境構築をします。今回はWindows/WSL/Ubuntuで構築します。

$ eval "$(curl -sS https://raw.githubusercontent.com/Shopify/shopify-app-cli/master/install.sh)"

create

shopify create project apps
アプリを作成。Shopify Partners ダッシュボードに apps が追加されます。
https://partners.shopify.com/xxxxxx/apps/xxxxxx

serve

shopify serve
Node で立ち上げた場合は http://localhost:8081 でWebサーバー上で動くアプリがビルドされて起動します。

※ここで localhost:8081 を見ても動きませんが、後述の手順が必要になるので焦らないでください。

tunnel start

shopify tunnel start
ngrok を利用し、インターネットから localhost:8081 へトンネリングします。
ngrok の URL から確認するとアプリが動いていることが確認できます。

https://url.ngrok.io -> http://localhost:8081

アプリをストアへインストール

ここまでの手順では shopify-app-cli を利用し、アプリを作成→起動→インターネットからのアクセスを可能にしました。
では、次にアプリをストアへインストールします。

Step.1

shopify partners アカウントで「アプリ管理」から作成したアプリ(今回は Apps )を選択

1.png

Step.2

その他の操作→開発ストアでテスト
※今回はアプリを公開していないので、開発ストアでのテスト

2.png

Step.3

インストール先のストアを選択するとアプリのインストールが始まります。
※ここで /auth/enable_cookies?shop= の処理が走り、認証情報が処理されます。
※まぁまぁ時間がかかるので気長に待ってください。

4.png

Step.4

インストールしたストア上の「アプリ」で動いていることが確認できます。
5.png

tunnel stop

shopify tunnel stop
トンネリングを止めます。

注意点

shopify tunnel stop を行うと ngrok の URL が変わるため、改めてアプリのビルドとインストールをし直す必要があります。

再び shopify tunnel startshopify serve するごとに「アプリURL(ngrok)」と「ホワイトリストに登録されたリダイレクトURL(ngrok)」が変更されるからです。

6.png

Expected a valid shop query parameter と出たら Github の issue が参考になります。

さて、ここからは Shopify App CLI の他の機能をご紹介します。

populate

shopify populate products | customers | draftorders
データ生成コマンド、商品(products)| カスタマー(customers) | 下書き注文(draftorders) を生成する

7.png

deploy

shopify deploy
heroku へデプロイします。

generate page

shopify generate page information

今回、information というページを作成しました。生成したページ名の React / Next ファイルが生成されています。
annotation を選択し、生成された pages/information.js が以下です。

import { Card, Layout, Page } from '@shopify/polaris';

const Information = () => (
  <Page>
    <Layout>
      <Layout.AnnotatedSection
        title="Title"
        description="Description"
      >
        <Card>
          <div>Put content here</div>
          <a href="https://polaris.shopify.com/components/structure/layout">For more information see Polaris docs</a>
        </Card>
      </Layout.AnnotatedSection>
    </Layout>
    <Layout>
      <Layout.AnnotatedSection
        title="Title"
        description="Description"
      >
        <Card>
          Put content here
        </Card>
      </Layout.AnnotatedSection>
    </Layout>
  </Page>
  );
  export default Information;

アプリの挙動を確認するには、インストールしたアプリの URL に /information を追加するとアプリ内に information 画面が表示されています。
8.png

generate billing

shopify generate billing
1回限りの課金モデルを作成するか、定期的なサブスクリプションモデルを作成します。

generate webhook

shopify generate webhook WEBHOOK_NAME
webhook を作成します。

Webhook は Shopify のイベントをきっかけに通知されます。
商品の登録や受注、Create / Update / Delete をきっかけにして POST します。

Webhook とは

Webhookサブスクリプションを使用して、ショップ内の特定のイベントに関する通知を受け取ることができます。Webhookをサブスクライブすると、API呼び出しを定期的に行ってステータスを確認する代わりに、アプリがインストールされているショップで特定のイベントが発生した直後にアプリにコードを実行させることができます。たとえば、顧客がカートを作成したとき、または販売者がShopify管理者で新しい製品を作成したときに、Webhookを使用してアプリでアクションをトリガーできます。Webhookサブスクリプションを使用することで、全体的に少ないAPI呼び出しを行うことができます。これにより、アプリがより効率的になり、迅速に更新されます。
https://shopify.dev/docs/admin-api/rest/reference/events/webhook
https://shopify.dev/concepts/shopify-introduction

Webhook の設定

  1. Shopify 管理画面→設定→通知
  2. Webhook を作成
  3. イベントを選択してください。フォーマットは JSON のままで良いでしょう。URLはイベントを受け取りたい Web サーバーの URL を指定してください。Webhook API バージョンはソースコードと一致させてください。

9.png

Webhook の疎通確認

テスト通知を送信する ボタンを押して疎通確認を行います。

参考記事

https://www.shopify.jp/blog/partner-cli-tool
https://github.com/Shopify/shopify-app-cli

まとめ

本記事では Shopify 公式の Shopify App CLI を用いたアプリの開発方法を解説しました。次回はアプリを AWS 上で動かす方法をご説明します。

<本記事に関するお問い合わせ>
NRIデジタル株式会社 担当 吉田・倉澤・萩村 and Developers marketing-analytics-team@nri-digital.jp

本記事は NRI digital TECH BLOG からの転載、抜粋です。
Shopify でテーマとアプリを開発する – ThemeKit / Shopify App CLI –

28
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
28
18