Builder Notes

Supabase、Stripe、R2、Cloudflare を使った保護されたダウンロード

ImgKit がログイン、チェックアウト、製品アクセス、非公開ファイル、署名付きダウンロード URL をどのように連携させているかを実践的に概説します。

有料のデジタル製品には、地味ですが重要な土台が必要です。購入者は支払いを行い、サインインし、公開された ZIP リンクを晒すことなく、正しいファイルをダウンロードできる必要があります。

ImgKit はシンプルな保護付きダウンロードのパターンを採用しています。

  1. Supabase がログインを担当します。
  2. Stripe がチェックアウトを担当します。
  3. アプリケーションが製品アクセスを記録します。
  4. R2 が非公開ファイルを保存します。
  5. Cloudflare Functions が有効期限付きの署名 URL を返します。

なぜ保護されたダウンロードが重要なのか

有料の ZIP ファイルが公開フォルダーにあると、URL を知っている人は誰でもそれを共有できます。無料サンプルであれば許容されることもありますが、有料製品には弱い対策です。

保護されたダウンロードは、サーバー側のチェックを追加します。

  • ユーザーは誰か?
  • このユーザーは製品を購入したか?
  • ダウンロード対象のアセットは有効か?
  • サーバーは一時的な URL を生成できるか?

ユーザーは通常のブラウザーでのダウンロードを得られますが、永続的なストレージのパスは公開されません。

Supabase ログイン

Supabase は ImgKit にアカウントの識別情報を提供します。購入者はメールでサインインし、そのアカウントにチェックアウトとダウンロードを紐付けられます。

初期の製品であれば、メールログインで十分です。保護されたファイルをダウンロードするだけのために、複雑なダッシュボードは購入者に必要ありません。

Stripe チェックアウト

Stripe は決済セッションを処理します。購入者はサイトからチェックアウトを開始し、支払いを行い、ImgKit に戻ります。

その後、サーバーは完了したセッションを製品アクセスに紐付ける必要があります。それは webhook とチェックアウト同期エンドポイントを通じて行えば、購入者は支払い直後にアクセスを確認できます。

製品アクセス

製品アクセスは、一般的な会員ラベルとは切り離して考えるべきです。購入者はある製品を所有していても、別の製品を所有していない場合があります。

ImgKit の場合、終了した Builder Case Study は独自の製品エンタイトルメントを使用していました。このモデルなら、すべての購入者を広範なサブスクリプション会員にすることなく、将来の製品を存在させることも可能です。

R2 非公開ストレージ

R2 は実際の ZIP パッケージを、公開されているウェブサイトのバンドルとは別に保存します。サイトは R2 オブジェクトに直接リンクしません。

代わりに、ダウンロードエンドポイントがアクセスを確認し、ストレージに一時的な URL を要求します。

署名 URL

署名 URL は、非公開ファイルへの一時的なアクセスを提供します。URL が短い期間で失効すれば、永続的に共有する価値が下がります。

これは重量級の DRM ではありません。MVP 向けの実践的な有料配信の境界線です。

ImgKit が学んだこと

アーカイブされた ImgKit Builder Case Study ページには、周辺の実装判断が残されています。有料ソフトウェアの販売がなぜ一時停止されたか、保護されたダウンロードがどのように形作られたか、ソースコードパッケージが最初の有料オファーとしてどのようにテストされたか、といったことです。

この文脈は重要です。なぜなら、技術的な流れは製品の半分にすぎないからです。もう半分は、何を最初に売るべきかを決めることです。

よくある質問

有料の ZIP ファイルを公開フォルダーに置かないのはなぜですか?

公開ファイルは直接共有できてしまいます。保護された配信では、サーバーがアカウントのアクセス権を確認し、有効期限付きのダウンロード URL を返します。

Stripe はファイルを保存しますか?

いいえ。Stripe は決済を処理します。製品へのアクセスとダウンロード配信は、アプリケーションと非公開ストレージが担当します。

なぜ署名付き URL を使うのですか?

署名付き URL を使えば、非公開ファイルを永続的なストレージへのアクセスを公開せずに、限られた時間だけダウンロード可能にできます。

Resources

参考情報

このガイド、対応する補足ページ、そしてコンテンツを手がけた人々の間を移動するために、これらの参考情報をご利用ください。

関連ガイド

次に読む