記事のサマリー(TL;DR)
- PHP 向け
shopify/shopify-app-php(Packagist)、Python 向けshopifyapp(PyPI)が v1.0 で正式 GA - リクエスト検証・トークン交換・Admin GraphQL クライアントを単体で組み合わせ可能なプリミティブとして提供
- 旧ライブラリ
shopify-api-php/shopify_python_apiは非推奨化。セキュリティ修正も受け取れなくなる
Laravel・Django 等を使う国内 Shopify アプリ開発者への影響
国内では Shopify のカスタムアプリや非公開アプリをバックエンドに PHP(Laravel)や Python(Django / FastAPI)で構築しているケースが一定数存在します。これまで公式サポートは Node.js / Ruby に偏っており、PHP・Python は非公式・コミュニティ管理のライブラリに頼る場面がありました。
今回の正式パッケージ化で、Laravel や Symfony をそのまま使いつつ Shopify の認証フローを公式に準拠した形で実装できます。特に Webhook 検証・App Bridge リクエスト検証・Checkout / POS / Flow 拡張への対応が単一パッケージで完結する点は、既存コードベースへの段階的な組み込みを現実的なものにします。
旧ライブラリ(shopify-api-php / shopify_python_api)はすでに Packagist では「abandoned(放棄済み)」、PyPI では「inactive(非アクティブ)」に変更されており、今後はセキュリティ修正も提供されません。強制移行期限は設けられていないものの、セキュリティ観点から早期移行が推奨されます。kintone や Salesforce 等の業務 SaaS を Shopify と連携させるバックエンドを PHP / Python で書いているケースでも、API クライアント部分の刷新が検討ポイントになります。
詳細
追加された 2 つの新パッケージ
以下のコマンドで即時導入できます。
composer require shopify/shopify-app-php
pip install shopifyapp
両パッケージは同一のプリミティブ(基本機能)セットを提供します。フルフレームワークを採用しなくても、必要なプリミティブだけを組み合わせる設計です。
提供されるプリミティブ:
- リクエスト検証(Request Verification): Webhook、App Home、App Bridge、アプリプロキシ、Checkout / POS / Admin / Customer Account / Flow 拡張からのリクエストに対応
- トークン交換(Token Exchange): クライアント資格情報フローおよびアクセストークンのリフレッシュを含む
- Admin GraphQL クライアント: 自動リトライ処理付き
対応フレームワークは Laravel、Symfony、Django、FastAPI のほか、素の PHP・Python でも動作します。
旧ライブラリの非推奨化
| ライブラリ | 状態 | 今後の対応 |
|---|---|---|
shopify-api-php |
Packagist で「abandoned」 | 新機能・セキュリティ修正なし |
shopify_python_api |
PyPI で「inactive」 | 新機能・セキュリティ修正なし |
既存アプリはそのまま動作しますが、両ライブラリとも新パッケージへの移行を案内するリンクが追加されています。強制削除・移行期限は設定されていません。
今回の変更が重要な理由
- 小さく明示的な設計: 各プリミティブがセキュアなセットアップの 1 ステップに対応しており、コードの流れが可視化されます。AI コーディングツールにも理解しやすい構造です。
- 言語間の一貫性: PHP 版と Python 版は同一の仕様・同一のテストスイートを共有しており、一方で行われた改善がもう一方にも反映されます。
- 段階的な移行: アプリ全体を書き直すのではなく、1 ルートずつ移行できるよう設計されています。
Node.js・Ruby への影響
Node.js ライブラリおよび Ruby ライブラリには変更はありません。新規アプリの推奨パスは引き続き React Router です。
新規アプリを始める場合の手順
現時点で PHP・Python 向けのアプリテンプレートは提供されていません。代わりに、以下の手順で独自プロジェクトを構成します。
- 使用言語のパッケージをインストール
- 任意のフレームワーク / スタックでプロジェクトを雛形作成
- 必要なプリミティブを組み合わせる(例: リクエスト検証 → トークン交換)
- 開発ストアでリクエスト検証とトークン交換の動作を確認
各パッケージの README はすべてのプリミティブを文書化しており、AI コーディングツールへのコンテキストとして直接提供することも想定されています。
PHP 実装例
$shopify = new Shopify\App\ShopifyApp($clientId, $clientSecret);
$result = $shopify->verifyAppHomeReq($request);
このコードは App Home リクエストを検証します。検証成功時、$result から $result->shop(店舗情報)と $result->idToken(トークン)を取得でき、そのままアクセストークン交換に使用できます。処理するサーフェスに応じて verify... メソッドを使い分け、リクエストを自前でパース・再検証せずに済みます。
既存アプリを移行する場合
強制移行・削除のスケジュールはありません。移行の準備ができたタイミングで、新パッケージの README に記載されたアップグレードノートに従い、段階的に対応できます。