2021年7月版のAPI機能のまとめにようこそ。最新の変更点を採用してアプリの品質を向上させ、あなたの開発体験を合理化するのに役立つ情報をお伝えします。
今回のバージョンには、大量のデータをShopifyにプッシュする際に大幅な改善を実現する新しいBulk MutationAPIが含まれています。同時に、Product VariantAPI、Files API、Storefront APIにおけるメタフィールドの拡張サポート、国際価格の改良などが、2021-07バージョンでリリースされます。
今年のShopify Uniteで発表された機能のいくつかが2021-07には含まれています。ほかの発表内容、とくにストアフロント体験に関する改良については、「Shopify Unite 2021で発表された内容のすべて」でご確認いただけます。
今回のリリースは、2020-04バージョンの廃止と同時におこなわれるため、APIヘルスレポートをチェックして互換性と今後の変更内容を忘れずにご確認ください。このバージョンに関連するAPI変更の全体リストは、2021-07リリースノート(英語)をご参照いただければと思います。
Shopifyマーチャント向けのアプリを構築する
Shopifyアプリストア向けのアプリ開発、カスタムアプリの開発サービス、ユーザーベースの成長促進、あなたが望むことがなんであれ、Shopifyパートナープログラムがその成功をサポートします。無料で登録して、教育リソース、開発者プレビュー環境、継続的な収益シェアプログラムを利用しましょう。
1. メタフィールドのアップデート
今回のバージョンがリリースされるまでは、ストアフロントでメタフィールドを使用することは可能だったものの、時間がかかる作業となり柔軟性もありませんでした。使えるストアフロントのメタフィールドは商品と商品バリエーションのリソースだけで、APIを介してメタフィールドを作成して、それをテーマ内にハードコーディングする必要がありました。
2021-07バージョンのリリースでは、アプリとマーチャントの利便性を大幅に向上させるメタフィールドの大きなアップデートがおこなわれています。ストアフロントでのメタフィールドの視覚化は、記事、ブログ、コレクション、顧客、注文、ページ、ショップリソースでサポートされ、metafieldStorefrontVisibilityCreateミューテーションによってメタフィールドデータをストアフロントAPIクライアントに表示できます。ストアフロントAPIの顧客と各リソースについて関連性と柔軟性があり文脈に沿ったデータを共有することが今までになく簡単になりました。
Shopify Uniteで示されたように、メタフィールドの定義は管理画面で作成可能となり、マーチャントは商品に適用できるメタフィールドのテンプレートを作成できます。これらの定義はGraphQL APIを通じてAPIアクセスが可能です。ということは、マーチャントが商品に構造的なメタフィールドを簡単に付加できるような、管理画面のコンテクストに現れるメタフィールドの定義を作成できるわけです。
管理画面に表示させるためのメタフィールド定義のリクエスト例が以下です。
変数がこちら。
結果的に作成されたメタフィールドの定義は、以下にハイライトされた管理画面の箇所に表示されます。
これらのメタフィールド定義は、17タイプのデータの検証能力をもち、互換性のあるすべてのテーマで表示される準備をします。これはストアフロントのメタフィールドの実用性に対する大きな機能拡張なので、わたしたちはみなさんがこれを活用して構築するものが楽しみで仕方ありません。
Online Store 2.0の一環として発表された変更の詳細は、Online Store 2.0:開発者にとっての意義でご確認いただけます。
2. Bulk Mutation API
昨年、データ取得に際してコール制限を完全に圧迫することなくアプリが大規模なデータセットを管理できるようにするバルクAPIをリリースしました。今回のバージョンでは、新たな関連機能として、大規模ストアのデータを扱う方法を大幅に改善する機能をリリースしています。それがBulk MutationAPIです。Bulk MutationAPIは、クライアント側のスロットルを管理する必要性をなくし、アプリが非同期でミューテーションを実行して大量のデータをShopifyストアからインポートすることを可能にします。
ShopifyのAPIスロットルは、通常は「リーキーバケット」アルゴリズムで機能します。スロットルはすぐに使用できるAPIコールのバケットを提供しますが、これが空になった場合は完全にリフィルされるまで20秒かかります。つまりこのアルゴリズムなら、いくつかのリソースを更新する必要がある場合は同期して操作するのが通常は望ましいということになります。
20秒で作成できる商品の数
上記のグラフで何かに気づくと思います。APIで160以上の商品を作成するなら、Bulk Mutationを使用するほうが速いのです。しかし、Bulk Mutationは商品のみに限定されるわけではありません。どのミューテーションも非同期で実行できます。すべてのShopifyリソースは同じスロットルアルゴリズムを採用しているため、ほかの作成や更新のケースでも似た傾向が見られます。
タイムラインをさらに拡張してみると、多くのリソースを作成または更新する場合には、Bulk MutationAPIがつねに突出していることは明らかです。
10分で作成できる商品の数
Bulk Mutationは、GraphQLの同期ミューテーションの2倍、RESTの7倍速く実行されます。Shopifyリソースをもっと速く更新したり作成したりする方法を求めているなら、Bulk Mutationがもっとも効率的なAPIの利用法といえます。
各APIで一定のタイムフレームにおいて作成または更新できるリソースの数
Bulk MutationAPIの詳細については、ドキュメントをご覧ください。
3. Product Variant Bulk API
Productリソースを使ってバリエーションを操作する場合に、気をつけるべき落とし穴が今まで多少あったかと思います。従来、Shopifyの商品の状態とクライアントのリクエストとの違いに基づいて、APIクライアントの意図を推測する必要がありました。Shopifyは、バリエーションを含む商品APIへのコールが最新のバリエーションデータのコピーをもっていると想定します。従前のAPIバージョンにおいて、商品APIを使うときの一番ありがちなミスは、古い商品データをプッシュすることによる意図しないバリエーションの削除でした。
Product VariantAPIには新しい4つのミューテーションが含まれ、クライアントがデータをShopifyにプッシュする際に明示的にバリエーションの動作を特定できるので、エラーが起こりやすい黙示的なモデルから解放されます。
- productVariantsBulkCreateミューテーションによって、リクエストの一部に既存バリエーションデータをすべて含めることなく、商品の新しいバリエーションを作成できます。
- productVariantsBulkUpdateを使うと、複数のバリエーションを明示的に更新でき、削除される心配をすることなく更新しないバリエーションを除外できます。
- productVariantsBulkDeleteミューテーションは、削除する商品のバリエーションリストを指定します。
- productVariantsBulkReorderミューテーションは、単一のリクエストで商品のバリエーションの再編を円滑におこないます。
古いアプリデータのためにバリエーションが削除されるリスクを背負うことなく、商品バリエーションデータを安全に、効率的に、同期的に処理する最良の方法が、Product VariantAPIなのです。
4. Files API
コミュニティにおいてもっともリクエストの多かった機能の1つ、FilesAPIが2021-07バージョンから利用可能です。
今まではステージングする商品メディアのみをサポートしていたstagedUploadCreateミューテーションで、ほかのタイプのファイルもアップロード用にステージングできるようになりました。これらのステージングファイルはfileCreateミューテーションの一部にも含まれ、ファイルはShopifyにアップロードされてShopify AdminのFilesページにも追加されます。または、外部URLをfileCreateに提供して、リモートのソースから直接adminにファイルをアップロードすることもできます。
たとえば、次のようなミューテーションによってファイルページにファイルがアップロードされます。
変数です。
管理画面の「設定/ファイル」セクションにアップロードされた画像
ファイルは画像に限定されません。価格表、PDFパンフレット,サイズガイド,その他の一般ファイルが,File API.1を使用することでアップロードできます。
5. 国際価格
ストアフロントに表示される価格は、お客さまのロケーションによって変わってきます。Shopify Uniteで見たように、2021-07バージョンはストアフロントAPIを使って注文と商品の国際価格を照会し、チェックアウトのコンテクストを明示的に設定できます。この機能はpriceListsと連結して実行され、お客さまの状況に応じた形で国際価格を表示します。
inContextディレクティブを使用するクエリは、国コード引数を利用でき、選択した国のコンテクストにおいて結果が返ります。
たとえば、カナダの商品の価格レンジをクエリするなら、inContextディレクティブを使用して下記のクエリが利用できます。
レスポンスがこちら
これにより、ストアのデフォルト通貨の価格を返すかわりに、お客さまにとって関連性のある価格が簡単に表示できます。
最新情報をご確認ください
今月はここまでです。Shopifyプラットフォームやアプリ開発へ影響を与える変更点を常に把握するために、Shopify開発者のChangelog(英語)も購読や、以下リンクからメールマガジンを購読し、最新情報を入手ください。
Shopifyパートナープログラムでビジネスを成長させる
マーケティング、カスタマイズ、またはWebデザインや開発など提供するサービスに関係なく、Shopifyパートナープログラムはあなたを成功へと導きます。プログラムの参加は無料で、収益分配の機会が得られ、ビジネスを成長させる豊富なツールにアクセスできます。情熱的なコマースコミュニティに今すぐ参加しましょう!
原文:Shayne Parmelee 翻訳:深津望