Expiring Coins
アプリ内コインに有効期限がついているのを見て、ケチだな、と思ったことはないだろうか。
金を払って買ったコインが半年で消える。ユーザー体験として最悪だ。なぜこんな設計にするのか。答えは資金決済法にある。
資金決済法は前払式支払手段を規制する。プリペイドカード、商品券、そしてアプリ内のコイン。有償で発行したコインが未使用のまま積み上がると、届出義務が生じる。未使用残高が1,000万円を超えたら、その半額以上を供託金として預けなければならない。帳簿の保存や利用者への情報提供もついてくる。地味だが重い。
ただし抜け道がある。発行日から6ヶ月以内しか使えないなら、この規制の適用除外になる。だから多くの企業はコインに有効期限をつける。ケチなのではない。合理的なのだ。
おもしろいのは、有償と無償の扱いの違いだ。
ユーザーが100円でコインを買い、キャンペーンで10円ぶんのボーナスがつく。画面上は「110コイン」。だが内部では、この100コインと10コインはまったく別の存在として管理される。有償の100コインは前払式支払手段。対価の支払いがない無償の10コインは原則として該当しない。供託の計算対象も有償ぶんだけだ。ユーザーから見れば同じ「コイン」なのに、法的には別の生き物が同居している。
ここにプラットフォームの壁が加わる。
Apple App Storeのガイドラインでは、アプリ内課金で購入した通貨に有効期限を設けることが明確に禁じられている。法律は「期限をつければ規制外」と言い、Appleは「期限をつけるな」と言う。Google Playにはこの制限がない。同じアプリでも、プラットフォームごとにコインの寿命が違う。
結果として、iOSでは有償コインを無期限にして届出と供託を真正面から受け入れる企業が多い。無償コインにだけ期限をつける。コインの表示ロジックよりも、供託金の計算と報告書の生成のほうがずっと複雑だったりする。画面に映らない裏側にこそ、コードが積み上がる。
法律とプラットフォーム規約とユーザー体験。三つの制約が交差する場所で書くコードに、華やかさはない。でもここを間違えると事業が止まる。いちばん地味で、いちばん怖い種類のバグだ。