🧪

ShopifyのApp Proxy

2024/12/25に公開

App Proxyとは?

  • App Proxyは、外部のアプリがShopifyストアのページの中に「自分の特別な情報」を差し込むための「ドア」のようなものです。
  • このドアを通して、アプリはShopifyストアのページに情報を表示したり、データをやりとりしたりできます。

※以下画像、Shopify Partnersより

つまり、ShopifyのApp Proxyは、Shopifyストアのテーマから外部アプリケーションに対して安全にデータをリクエストするための仕組みです。このプロキシ経由のリクエストは、特定のURLパス(通常、/apps/<app-name>の形式)で行われます。これにより、外部アプリが直接ストアのデータや機能にアクセスするように見えるため、ユーザー体験がシームレスになります。

具体例

1. 使い方:

例えば、Shopifyストアに「カスタム価格計算ツール」を追加したい場合、この計算ツールはShopifyでは直接作れないので、外部アプリを作ります。
そのアプリがShopifyページに計算結果を表示するときに、App Proxyを使います。

2. どう動くの?

  • ストアのURLに特定のパス(例: /apps/custom-tool)を作ります。
  • お客様がこのURLにアクセスすると、Shopifyが外部のアプリにそのリクエストを転送します。
  • アプリはリクエストを受け取り、計算結果やデータを返します。
  • Shopifyはそのデータを表示します。

コード例

次のようにApp Proxyを設定してデータを返す仕組みを簡単に作ります:

1. Shopifyでの設定

Shopify AdminでApp Proxyを以下のように設定します:

2. アプリ側のコード (Remixでの実装)

app/routes/proxy.tsx
import { json } from "@remix-run/node";

export const loader = async ({ request }: { request: Request }) => {
  const url = new URL(request.url);
  const shop = url.searchParams.get("shop");

  // 必要なデータを計算または取得
  const customData = {
    message: `Hello, this is custom data for ${shop}!`,
    price: 42,
  };

  // JSON形式でデータを返す
  return json(customData);
};

3. ストアでの表示

Shopifyのテーマで以下のように埋め込めば、お客様に表示できます:

<div id="custom-data"></div>
<script>
  fetch('/apps/custom-tool')
    .then(response => response.json())
    .then(data => {
      document.getElementById('custom-data').innerText = 
        `Message: ${data.message}, Price: ${data.price}`;
    });
</script>

まとめ

  • App ProxyはShopifyと外部アプリの間をつなぐ「ドア」。
  • ストアのページにカスタムデータを埋め込むときに便利。
  • セキュリティや認証も簡単に管理できます(Shopifyはリクエスト署名を検証する機能を提供)。

この仕組みを使えば、Shopifyストアにカスタム機能を簡単に追加できます!

参考

https://shopify.dev/docs/apps/build/online-store/display-dynamic-data

https://shopify.dev/docs/api/shopify-app-remix/v1/authenticate/public/app-proxy

Discussion