概要
- PureGymの入館体験 の非効率さとUXの問題点を指摘
- 8年間変わらないPINコード と毎分更新されるQRコードのセキュリティ矛盾
- Apple Wallet連携による入館高速化 の実現プロセス
- API解析・自作バックエンド・自動化 の技術的アプローチ
- エンジニア視点の教訓 と倫理的ジレンマ
47秒:悪役誕生の瞬間
- PureGymの入口 でアプリ起動、電波の悪さに苦戦
- WiFi接続→アプリ起動→QRコード表示 まで47秒かかる現実
- 無駄なフィード・通知・オファー表示 が体験をさらに悪化
- 6日/週のジム通いで毎週282秒 を無駄に消費
- Amazon Freshのシームレス体験 との対比によるUXへの不満
8年間変わらないPINの謎
- 8桁PINコード が8年間変更不要で利用可能
- QRコードは1分ごとに更新、まるで機密情報のような扱い
- 物理キーパッドは古いPINでOK、デジタルは過剰なセキュリティ
- セキュリティ・シアター (見せかけの安全性)の典型例
- APIパスワードも8桁PIN で、実質的なセキュリティの形骸化
mitmproxyで見えた真実
- QRコードのスクリーンショット運用に失敗
- PureGymのQRコードは動的で1週間有効、1分ごとに更新
- GitHub上にAPI情報が多数公開、エンジニアの不満の証拠
- API認証はベーシック認証+PINのみ、実質的な無防備
- mitmproxy等で通信を解析、QRコードの生成ロジックを特定
PassKit:Apple Wallet連携
- Apple WalletのPassKitは自己更新・通知・位置連動可能
- Pass作成にはJSON、画像、署名、Webサービスが必要
- 証明書取得と署名作業は非常に煩雑
- .pkpassファイル(ZIPアーカイブ)で動作
- Walletパスはロック画面表示や自動更新も可能
Swift製バックエンドの構築
- Node.jsではなくSwift(Vapor)でサーバー構築
- デバイス登録・Push通知・パス配信のAPIを実装
- QRコード更新時にサイレントPushで自動反映
- ユーザーは操作不要で常に最新のQRコードを利用可能
- Apple Watchとも自動連携、3秒で入館完了
ジム位置情報とロック画面表示
- PureGym全店舗の座標をAPIから取得・スクレイピング
- 最寄り店舗情報をパスに追加し、ロック画面自動表示を実現
- ショッピングセンター内店舗の場合、買い物時も表示されるジレンマ
Apple Watch連携
- Walletパスは自動でApple Watchに同期
- サイドボタン2回で即表示・スキャン可能
- 入館時間は3秒、従来比93%短縮
効果測定
- 従来:47秒→Wallet運用:3秒
- 週6回通うことで年間3.8時間の短縮
- 他の会員から「公式アプリ?」と23回聞かれる現象
- 著作権や公式非対応の説明も同数回発生
ボーナス:Home Assistant連携
- ジム混雑状況APIを利用し、Home Assistantに表示
- 混雑状況データで効率的なジム通いを実現
- 自分の“避け力”のデータ分析も可能
不都合なエンジニアの真実
- 週末だけで解決した問題、企業は何年も未対応
- ユーザー体験はJiraやKPIよりも重要
- 外部エンジニアのプロトタイピング力の高さ
- 公式未対応の理由(優先度・KPI・ロードマップ)も推察
倫理的ジレンマ
- 利用規約違反の可能性、明日にもAPI変更で利用不可リスク
- 個人利用に限定、サービス公開はせず説明対応
- キャッシュ活用・自動化制限・破損時の覚悟
- パッケージ化の是非は保留
エンジニア視点でのUX改善・API解析・自作連携の実践例 として、現状アプリの課題、セキュリティの矛盾、Apple Wallet連携のメリット、そして倫理的な配慮までを網羅的に解説。