Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
2年のAppleウォレットパス開発の振り返り
Search
muno92
PRO
December 19, 2025
Programming
280
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
2年のAppleウォレットパス開発の振り返り
muno92
PRO
December 19, 2025
More Decks by muno92
See All by muno92
PHPでバイナリをパースして理解するASN.1
muno92
PRO
0
550
forteeの改修から振り返るPHPerKaigi 2026
muno92
PRO
3
400
Cloudflare Tunnelで開発環境をインターネットに公開する
muno92
PRO
0
110
PsySHから紐解くREPLの仕組み
muno92
PRO
1
870
RayでPHPのデバッグをちょっと快適にする
muno92
PRO
0
720
Appleウォレット / Googleウォレットに チケットを保存する方法
muno92
PRO
2
4.7k
歴史を重ねたシステムの開発に趣味で関わり始めて
muno92
PRO
1
610
PHPでGoogle Walletにチケットを追加する
muno92
PRO
0
880
カンファレンススタッフはいいぞ
muno92
PRO
1
420
Other Decks in Programming
See All in Programming
Snowflake Summitでの新機能 CoCo / CoWork / snowflake-summit-2026-overall-what-new-coco
tatsuhiro
1
220
これからAgentCoreを触る方へトレンドはGatewayです
har1101
6
480
Contextとはなにか
chiroruxx
1
390
そのテスト、説明できますか?~LWテスト戦略FW~のご紹介
nakahara
0
200
Skillsは効率化、Agentsは"自分の拡張"——Builder時代のエージェント編成(CC Night 2026)
wemra
1
210
ECSアプリログをFireLensでコスト削減しようとしたけど諦めた話 in Fargate×Node.js
akihisaikeda
2
4.2k
霧の中の代数的エフェクト
funnyycat
1
330
Claude Opus 4.6以後の受託開発エンジニアの変化(Claude Code開発ノウハウ大公開スペシャルbyクラスメソッド)
iidatakuma
1
420
吝嗇家のためのAI活用 / AI development for miser - ChatGPT + Issue Driven Development
tooppoo
0
180
ローカルLLMでどこまでコードが書けるか -縮小版 / How much code can be written on a local LLM Shortened
kishida
2
180
エンジニア向け会社紹介/Findy Company Profile
findyinc
6
360k
技術記事、 専門家としてのプログラマ、 言語化
mizchi
14
7.4k
Featured
See All Featured
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
230
Un-Boring Meetings
codingconduct
0
340
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.5k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.9k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
410
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
340
sira's awesome portfolio website redesign presentation
elsirapls
0
300
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.3k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
190
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.4k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.6k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
280
Transcript
2年のAppleウォレット パス開発の振り返り 2025/12/20 PHPer⼤忘LT会 2025 @muno_92
⾃⼰紹介 • X (Twitter): @muno_92 • PHPer • 趣味: カンファレンススタッフ
◦ PHPerKaigi ◦ PHPカンファレンス⼩⽥原 ◦ iOSDC Japan 2
2年経ったforteeのウォレット機能 • 2023年12⽉頃〜 • Appleウォレット‧Google ウォレットの両⽅に対応 3
fortee (フォルテ) • カンファレンス運営が便利になるシステム • PHPerKaigi / iOSDC Japan 委員⻑の⻑⾕川さんが開発
• PHP製 https://fortee.jp 4
Appleウォレットとは • ウォレットアプリで搭乗券などの 「パス」を管理できるサービス • イベントチケットに使うと ◦ イベント毎に専⽤アプリを⼊れ なくても簡単にチケットを出せ るようになる
5
Appleウォレット(のパス)の開発 を振り返ります 6
きっかけ • iOSDC Japan 2023 (9/1〜9/3) ◦ チケットのQRコードをブラウザで提⽰ ▪ 開くのに⼿間取る⼈も
• アンケート「(要約) Appleウォレットに追加できると良 いかも」 7
🤔「Appleウォレットの実装って どんな感じなんだろう?」 8
作った Appleウォレット Google ウォレット 9
開発の歴史 • 最⼩実装版 (2023/12/2〜) • 更新対応版 (2024/11/26〜) • ⼀括更新対応版 (2025/9/15〜)
10
最⼩実装版 (2023/12/2〜) • 必要最低限 ◦ パスをiPhoneに新規追加 ◦ チケット番号‧QRコードの表⽰ • それ以外は割り切った
11
詳しい実装については https://fortee.jp/iosdc-japan-2024/proposal/cf6f4134-8ae5-4b4a-b001-d4abeffc03b4 12
初期開発の振り返り • 機能を絞ったことで想定より早くリリースできた 🎉 ◦ 意図してなかったがPHPカンファレンス北海道2024 に間に合い、便利だと実感できた • 後々ネックになってくる設計も‧‧‧ 13
2023/12時点 • ✅ パスの新規発⾏ • ❌ キャンセル時の無効化 • ❌ カンファレンス終了後のアーカイブ
• ❌ カンファレンス共通情報の埋込‧⼀括更新 14
更新対応版 (2024/11/26〜) • パスの更新に対応 • できるようになったこと ◦ 参加者名の表⽰‧変更反映 ◦ キャンセル時の無効化
◦ カンファレンス終了後のアーカイブ 15
補⾜: パスのアーカイブ • イベントの終了時刻を埋め込むと終了後に⾃動でアー カイブしてくれる • 終了イベントのパスで埋め尽くされなくて済む ◦ 地味に便利 •
更新対応とセットで埋め込んだ ◦ 万が⼀時間が変わった時に更新できないと困るので 16
パス更新に対応していなかった理由 • パスの更新はめんどい ◦ サーバーからiPhone内のパスは直接更新できない ◦ 「iPhoneに更新がある事を伝える」→「更新後の パスを取ってこさせる」必要がある 17
forteeから発⾏したAppleウォレットのパスを更新できるようにしま した && 更新⽅法の解説 18
forteeから発⾏したAppleウォレットのパスを更新できるようにしま した && 更新⽅法の解説 19
forteeから発⾏したAppleウォレットのパスを更新できるようにしま した && 更新⽅法の解説 20
地味に⾯倒だったけど対応 💪 21
更新対応の振り返り • チケットのキャンセルなど運⽤に必要な機能を備えら れた • パスの更新フローについて⾃信を持って説明できるよ うになった ◦ 「ドキュメントを読んで知っている」とは⼤違い 22
2024/12時点 • ✅ パスの新規発⾏ • ✅ キャンセル時の無効化 • ✅ カンファレンス終了後のアーカイブ
• ❌ カンファレンス共通情報の埋込‧⼀括更新 23
⼀括更新対応版 (2025/9/15〜) • ⾒た⽬上はあまり変わっていない • ⼀括更新する仕組みを追加した 24
なぜ⼀括更新したくなったのか • 「受付の近くにいるときだけロック画⾯ にパスを表⽰」をやりたかった 25
iBeaconで「受付近く」を判別 • Bluetooth Low Energy (BLE) を使⽤した技術 • Appleウォレットの場合 ◦
受信したビーコンとUUIDが⼀致したパスがロック 画⾯に表⽰される 26 iBeacon ‧UUID: XXX UUID: XXX
UUIDは変えたくなるかも知れない • 変更する場合、全てのパスに埋め込んだUUIDを更新し ないといけない • ⼀括更新とセットで実装した 27
パスの⼀括更新 • ⼀括更新⽤のAPIは無い • パスの数だけ更新処理をバッチで回す ◦ 1更新毎に複数のリクエストがforteeに⾶んでくるの で更新ペースは若⼲配慮している 28
ちなみに: Google ウォレット • Google ウォレットはチケットを構成する情報が2つ に分かれている ◦ 共通情報 (パスクラス)
◦ 各参加者固有の情報 (パスオブジェクト) • 共通情報を更新したい場合はパスクラスをPUT or PATCHリクエストで更新するだけでOK ◦ とても楽 29
伏線回収: パスの更新⽇時 • パス更新時、iPhoneにパスの更新⽇時を伝えない といけない • それまで ◦ パスの更新⽇時 =
参加者レコードの更新⽇時 ◦ ビーコンのUUIDが変わった場合、参加者レ コードは更新されない 🤯 30
お茶を濁した • パスの更新⽇時 = max(参加者レコードの更新⽇時, ウォ レット共通設定の更新⽇時) • もう1つ条件が増えたらリファクタリングするかな ‧‧‧
31
⼀括更新対応の振り返り • iBeacon動かなかった‧‧‧ ◦ リベンジしたい • カンファレンス共通情報を追加しやすい基盤は作れた 32
現在 • ✅ パスの新規発⾏ • ✅ キャンセル時の無効化 • ✅ カンファレンス終了後のアーカイブ
• ✅ カンファレンス共通情報の埋込‧⼀括更新 33
forteeの開発以外にも 34
旅先で実機確認したり 35
各社のパスをコレクションしたり 36
開発⽤のツールを作ったり 37
⽇々ウォレットを楽しんでいます 38
まとめ • ちょっとした好奇⼼で開発したネタが2年続いている ◦ 今でも楽しい ◦ 2年続くと反省点も⾒つかる • 気になったネタがあったら気軽に取り組んでみると良 い出会いがあるかも
39
ご清聴ありがとうございました 40