RORK LABEN
NATIVE — Rork Max では AR / LiDAR スキャン、Metal を使った 3D、Dynamic Island、Siri Intents、HealthKit、NFC、App Clips、Core ML まで届きますIOS27 — iOS 27 Developer Beta 4 で Siri AI の対象が iPhone 15 Pro / 15 Pro Max・16 シリーズ・17 系へ広がり、応答が初期ベータより明確に速くなりましたDESIGN — iOS・iPadOS・macOS 27 向けの Apple 純正デザインキットが Figma と Sketch 向けに公開されました。新 OS の UI を組む段階で参照できますCANARY — Android 17(Cinnamon Bun)は従来の Developer Preview を廃し、継続更新される Canary ビルドへ移行しました。検証のタイミング設計が変わりますSPARK — Android 17 の Gemini Spark は、アプリを直接操作して配車の予約や注文といった複合的な作業を自動化しますSCALE — Rork は a16z から $2.8M を調達し、月間訪問は74万件規模まで伸びていますNATIVE — Rork Max では AR / LiDAR スキャン、Metal を使った 3D、Dynamic Island、Siri Intents、HealthKit、NFC、App Clips、Core ML まで届きますIOS27 — iOS 27 Developer Beta 4 で Siri AI の対象が iPhone 15 Pro / 15 Pro Max・16 シリーズ・17 系へ広がり、応答が初期ベータより明確に速くなりましたDESIGN — iOS・iPadOS・macOS 27 向けの Apple 純正デザインキットが Figma と Sketch 向けに公開されました。新 OS の UI を組む段階で参照できますCANARY — Android 17(Cinnamon Bun)は従来の Developer Preview を廃し、継続更新される Canary ビルドへ移行しました。検証のタイミング設計が変わりますSPARK — Android 17 の Gemini Spark は、アプリを直接操作して配車の予約や注文といった複合的な作業を自動化しますSCALE — Rork は a16z から $2.8M を調達し、月間訪問は74万件規模まで伸びています
記事一覧/アプリ開発
アプリ開発/2026-06-16上級

Rork Max のアプリに Apple Wallet のスタンプカードを足す — 署名と更新の実装メモ

店舗のスタンプカードを Apple Wallet に入れたい——Rork Max が生成した Swift アプリから PassKit のパスを発行する際、難所はデザインではなく『署名』と『リモート更新』でした。実装の勘所を整理します。

Rork Max231PassKitApple WalletSwift48ロイヤルティ

プレミアム記事

スタンプカードは「画像」では役に立ちません

紙のスタンプカードを Apple Wallet に置き換えたい、という相談を受けて作り始めたのが最初でした。単に券面の画像を表示するだけなら簡単です。けれど、それでは来店ごとのスタンプ追加が反映されず、ユーザーは結局アプリを開いて確認することになります。Wallet に入れる意味は、ロック画面に出て、残高やスタンプ数が自動で最新になることにあります。

Rork Max が生成したネイティブ Swift アプリから PassKit のパスを発行してみて分かったのは、難所がデザインではなく「署名」と「リモート更新」だということでした。この二つを越えないと、Wallet のパスは静止画と変わりません。個人開発でアプリを出してきた身としても、ここは新鮮なつまずきでした。実装で確認した勘所を残します。

pkpass は署名された ZIP です

Apple Wallet のパス(.pkpass)は、いくつかのファイルをまとめて署名した ZIP アーカイブです。中身は大きく三つに分かれます。

  1. pass.json — パスの種類(ストアカード、クーポン、搭乗券など)、表示フィールド、色、バーコードを定義します
  2. 画像群(icon.pnglogo.png など) — 解像度別に複数用意します
  3. manifest.jsonsignature — これが署名の核心です

manifest.json は各ファイルの SHA-1 ハッシュの一覧です。signature は、その manifest を Pass Type ID 証明書で署名した PKCS#7 のバイナリです。つまり、ファイルを一つでも改ざんするとハッシュが合わず、Wallet がパスを拒否します。ここが「画像を差し替えるだけ」では済まない理由です。署名はビルド時かサーバー側で行い、秘密鍵をアプリに同梱してはいけません。私は、パス生成と署名はすべてバックエンドの責務に寄せることを強く推奨します。

pass.json の最小構成はこうなります。

{
  "formatVersion": 1,
  "passTypeIdentifier": "pass.com.example.stamp",
  "serialNumber": "user-00123",
  "teamIdentifier": "YOUR_TEAM_ID",
  "organizationName": "Sample Coffee",
  "description": "スタンプカード",
  "storeCard": {
    "primaryFields": [
      { "key": "stamps", "label": "スタンプ", "value": "3 / 10" }
    ]
  },
  "barcode": {
    "format": "PKBarcodeFormatQR",
    "message": "user-00123",
    "messageEncoding": "iso-8859-1"
  },
  "webServiceURL": "https://example.com/passes/",
  "authenticationToken": "REPLACE_WITH_PER_USER_TOKEN"
}

webServiceURLauthenticationToken が、後述するリモート更新の入口です。ユーザーごとに固有のトークンを発行し、他人のパスを更新できないようにします。

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
pkpass の中身(pass.json・manifest・signature)の構造と、署名がどこで必要になるかを理解できる
アプリから Wallet にパスを追加する PKAddPassesViewController の実装コードを習得できる
来店のたびにスタンプ数を更新する push 更新の流れと、サーバー側の web service 要件を再現できる
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Rork Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

関連記事

アプリ開発2026-07-05
Rork Max(Swift)と通常版(React Native)、どちらで作るか — 個人開発者のための意思決定フレーム
Rork Max のネイティブ Swift と通常版の React Native、どちらでアプリを作るかを迷ったときの判断軸を、コスト・機能境界・移行のしやすさから整理します。個人開発の視点で書いた意思決定フレームです。
アプリ開発2026-07-03
Rork Max アプリで通信の切断と復帰に強くする — NWPathMonitor によるオフライン検知と再送設計
Rork Max のネイティブ Swift アプリで、電波が切れても壊れない通信設計を NWPathMonitor で組み立てます。オフラインの検知、Low Data Mode やモバイル回線の判定、復帰時の自動再送キューまで、動く Swift コードで示します。
アプリ開発2026-07-03
Rork Max アプリでダウンロードをアプリ終了後も続ける — バックグラウンド URLSession の設計と再起動復帰
Rork Max のネイティブ Swift アプリで、アプリがサスペンド・終了されてもダウンロードを OS 側で継続させるバックグラウンド URLSession の設計を解説します。再起動復帰・resumeData・isDiscretionary の実測挙動まで動くコードで示します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →