今回はShopifyアプリ開発を始めたときに詰まるポイントの1つ「必須Webhooks」について解説します。
実装をしていなかったり、実装が不十分なためにレビューが通らなかった経験をされた方は多いんじゃないでしょうか?
レビューで詰まらないためにも、ぜひご確認ください!
Webhooksとは?
Shopifyの必須Webhooksを説明する前に、Webhooksについて理解しましょう。
Webhooksとは、Webアプリケーションと連携するために用いられるイベント通知の仕組みです。
Webhooksを使うことで、あるWebアプリケーションで特定のイベントが起きたときに、データを受け取ったり、何かしらの動作をすることが可能になります。
エンジニアにとって身近な例でいうと、GitHubにコードをプッシュしたときに自動でビルドやテストをするときにWebhooksが使われています。
ShopifyのWebhooks
そんなWebhooksはShopifyでも使うことができます。
Shopifyアプリ開発では、Shopify Admin APIからWebhooksを使うことができます。
また、アプリ以外でもShopify管理画面からWebhookを作成することもできます。
ShopifyのWebhooksにはHTTPSのエンドポイントのほか、Amazon EventBridgeやGoogle Cloud Pub/Subといったメッセージングサービスを使うこともできます。
購読するイベントやマーチャントによっては瞬間的に大量のWebhooksを処理する必要があるため、スケールさせやすいメッセージングサービスを使ってWebhooksを処理することをおすすめします。
必須Webhooks (Mandatory Webhooks) とは?
必須Webhooksとは、Shopifyアプリを開発するときに必ず実装しなければならない3つのWebhooksのことです。
この3つのWebhooksはGDPRに対応するために必要なWebhooksで、EU加盟国に関わらず、すべてのShopifyアプリはGDPRに準拠しなければなりません。
必須Webhooksを実装していない場合、アプリレビューで却下されます。 (3つの必須Webhooks以外のWebhooksは任意で実装すればOKです。)
また、必須Webhooksの3つはHTTPSのエンドポイントでのみ作成可能です。上述したEventBridgeやPub/Subを利用することはできません。
GDPRとは?
GDPR(General Data Protection Regulation:一般データ保護規則)は、ヨーロッパ連合(EU)の個人情報保護法規で、2018年5月25日から施行されています。
これは、EU全域での個人情報のプライバシーを保護し、データの取り扱い方に関して個々の人々により多くの制御権を付与するためのものです。GDPRは、EU市民または居住者の個人データを処理する全ての組織に適用されます。これには、EU内外の組織も含まれ、EUの市民や居住者のデータを処理する場合、世界のどこにその組織があろうともGDPRの規定を守る必要があります。
GDPRの主な目的は、個人が自分の個人データをどのように収集、保存、使用されるのかを知り、そしてその制御をする権利を持つべきであるという考え方を強化し、統一化することです。これは、個人情報の透明性、アクセスの権利、修正の権利、忘れられる権利(データ削除の権利)、データ移行の権利など、いくつかの重要な権利を個々の人々に付与します。
参考: ChatGPT
必須Webhooksの対応例
上記で説明したように、必須WebhooksとはGDPRに準拠するためのWebhooksなので、顧客情報、ストア情報をデータベースなどに保存しているかどうかで対応方法が変わります。
データベースに保存していない場合
顧客情報やストア情報をデータベースに保存していない場合、特にすることはないです。 Webhookをちゃんと受け取ったよという成功レスポンスを返すだけで問題ありません。
実装方法は各言語ごとのテンプレートを参考にしてください。
データベースに保存している場合
顧客情報やストア情報をデータベースに保存している場合、Webhookを受け取った対象のデータを削除または、開示請求されたデータをマーチャントに提供できるようにしておく必要があります。
データの削除要求に対しては、都度対応するのは大変ですので、Webhookを受け取ったらデータを削除するように自動化しておくことをオススメします。
まとめ
ShopifyのWebhooks、特に必須Webhooksについて解説いたしました。
様々なリスク回避のためにも、基本方針としては顧客情報を保存しないという選択をするのがよいかと思います。
顧客情報を保存する必要がある場合は、特に注意をして必須Webhooksの対応をするようにしましょう。