Shopify カスタム・アプリで、コマンドラインアプリを作る準備
ショップ専用、あるいは面倒な作業をプログラムで代行するために「カスタムアプリ」を使って、コマンドライン(操作画面のないスクリプト)のアプリを作るための準備方法や、ドキュメ
ショップ専用、あるいは面倒な作業をプログラムで代行するために「カスタムアプリ」を使って、コマンドライン(操作画面のないスクリプト)のアプリを作るための準備方法や、ドキュメントについて紹介します。Shopifyの業務効率UP、一括編集などに幅広く使えるので、参考にどうぞ!
なお、カスタムアプリについての記事は、こちらをどうぞ!
全体像
カスタムアプリを準備するための全体像を説明します。
ショップオーナーにカスタムアプリの許可をもらう
対象のショップで、カスタムアプリの準備(登録)を行う
ライブラリを導入する
実際にコードを書いて、テスト、実行する
以下、順に説明します。
(1) ショップ・オーナーにカスタムアプリの許可をもらう
カスタムアプリは、ショップ独自のアプリです。作るには、ショップ・オーナーの許可がなければ、作成できません。もし、あなたが「オーナー」であれば、問題がありませんが、Shopify Partnerで、関わっている状態だと権限がありません。
まずは、ショップオーナーに連絡して、許可を出してもらいます。
許可を出してもらう方法は、カスタムアプリ開発の許可をもらう(Shopify ヘルプセンター)をご覧ください。zoomなどで繋いで、作業しても良いでしょう(オーナーさんがIT苦手なら、それが一番簡単かもしれません)。
許可がもらえたら、カスタムアプリを作れるようになります。
(2) カスタム・アプリ作成の準備
カスタムアプリを作るには、接続ポイントとなる「アプリ登録」が必要です。設定 > アプリと販売チャンネルを開き、末尾に進み、そこで作成します。
「ストア用のカスタムアプリを管理する」をクリックして、先に進みます。
(2.1) アプリ作成を実行する
アプリ作成のボタンをクリックし、アプリ作成のために「アプリ名」と「アプリ開発者」を選びます。アプリ名はわかりやすいものを、アプリ開発者は、「ご自身」を選ぶと良いでしょう。
(2.2) アプリの権限(スコープ)を設定
安全性を高めるために、アプリができることを制限する仕組みになっています。最初は「何もできない」状態です。このアプリで実行したいことに必要な「権限のみを許可」する必要があります。
この「できることの範囲」のことを、スコープと言います。
今回は「ブログ記事を一括編集」するためのコマンドラインアプリを作ることを想定して、Admin API を使いたいと思います。
※ Admin APIは管理画面側のためのものです。ストアフロントAPIは、顧客が見る・体験するWebサイト側に対して何らかの機能を追加するために使います
「Admin APIスコープを設定する」をクリックします。
例えば、ブログ記事を一括編集したいなら「write_content」と「read_content」の許可(スコープ)があれば良いです。これらにチェックを入れて保存します。
(2.3) アクセストークンを作成(重要)
次に「API資格情報」タブをクリックし、「アプリをインストール」ボタンを押します。このボタンを押すことで、「アプリ登録」がされて、非常に重要な「アクセストークン」と呼ばれる秘密パスワードが生成されます。
このアクセストークンは、一度しか表示できません。また、このアクセストークン(パスワード)が外部に漏れてしまうと、悪用されることも考えられます。しっかりと管理することが大切です。
1Passwordなどのパスワード管理アプリで、管理することをお勧めします。また、プログラム中に書き込むことになると思いますが、処理が終わったら削除しておくことも大切です。
まず「アプリをインストール」をクリックします。
次に確認画面で確認します。
続いて、一度きりの開示が可能な状態になります。一度きりの開示で、しっかりと安全な場所に保存しておきましょう。
(2.4) 補足 : アプリの削除方法
アプリを削除するには、
アプリのアンインストール(右上にボタンがあります)
アプリの削除(アプリの設定タブにあります)
と行います。
(3) ライブラリを用意する
ここからは、プログラミングの経験、知識があるならわかると思います。もし、全然わからない!という場合は、前提知識が不足しているので、補強してみてください。
Admin API の中でも「REST」という仕組みを使うと、簡単に「バッチ処理」を実装できます。詳しくは、ドキュメントを読むのが一番です。
Graph QL と、RESTの2つが用意されています。Graph QL の方ができることが多いようです。簡単なのは、REST です。
今回は、RESTを前提に説明します。
curlという仕組みも用意されていますが、ライブラリを使うことで、圧倒的に開発スピードをアップさせ、信頼性を向上させることができます。私の場合は、PHPに馴染みがあるので(WordPress開発でも使っていた)、PHPライブラリを選択しました。
以下は、Macを前提に説明しています。コマンドラインツールが準備なしで、すぐに使えるので、開発にはMacが便利だと思っています。Webの仕事をするなら、Macがおすすめです。
PHPのライブラリをインストールするには、composerのインストールが必要です。
(3.1) そもそもの準備
composer、PHP実行環境、そのほかのツールが必要です。以下、必要なものを挙げておくので、ない人は検索するなどして準備をしてください。
Mac (Mac前提で話を進めるため)
homebrew をインストール
homebrew でPHPをインストール
homebrew でcomposerをインストール
Visual Studio Code をインストール
ターミナル(コマンド)には、明るくなっておくと良いです。
(3.2) ライブラリのインストール
情報源は、「Shopifyが提供するPHPライブラリのドキュメント」です。
プログラムを組むためのフォルダを作ります。どこでもOK。その後、以下のようなコマンドで、ライブラリを読み込みます。
> composer require shopify/shopify-api
自動的にフォルダが作られ、ライブラリがダウンロードされます。
(4) 実際にコードを書く
ここからはVisual Studio Codeの出番です。このフォルダを開いて、コードを書いていきます。リファレンスを参考にしてもらうと、良いかと思います。
<?php
require("vendor/autoload.php");
use Shopify\Clients\Rest;
use Shopify\Context;
use Shopify\Auth\FileSessionStorage;
Context::initialize(
'ここにAPIキー', //api key
'ここにAPIシークレットキー', // api secret
array('write_content', 'read_content'), // api scope
'ここにショップのサブドメイン.myshopify.com',
new FileSessionStorage('/tmp/php_sessions')
);
$client = new Rest( 'ここにショップのサブドメイン.myshopify.com', 'ここに、アクセストークン' );
// ここから下にコードをどうぞ!
実行したいことを考え、使えるAPIを探します。ちなみに、PHPのコード例よりも、curlの例を参考にした方が良いかもしれません(コマンドラインアプリなので)。
例えば、ブログ一覧を取得するなら、以下のように書きます。
<?php
require("vendor/autoload.php");
use Shopify\Clients\Rest;
use Shopify\Context;
use Shopify\Auth\FileSessionStorage;
Context::initialize(
'ここにAPIキー', //api key
'ここにAPIシークレットキー', // api secret
array('write_content', 'read_content'), // api scope
'ここにショップのサブドメイン.myshopify.com',
new FileSessionStorage('/tmp/php_sessions')
);
$client = new Rest( 'ここにショップのサブドメイン.myshopify.com', 'ここに、アクセストークン' );
// ここから下にコードをどうぞ!
$response = $client->get('blogs');
$blogs = $response->getDecodedBody()['blogs'];
foreach( $blogs as $b ) {
echo "{$b['title']}({$b['id']})\n";
}
上記のようなコードを、get_bloglist.php などで保存します。次にコマンドラインで、以下のように実行します。
> php get_bloglist.php
これでブログのタイトルとIDの一覧がコマンドラインに表示されます。
こんな調子で、あれこれ頑張ってみると、いろんなことができます!
参考になれば、幸いです。