#3」が開催されました。第3回となる今回のテーマは「モバイル決済の裏側」。急速に成長するモバイル決済分野でサービスを展開する企業が一堂に会し、自社サービスの仕組みや技術スタックなど、知られざる裏側を語ります。開発苦労話」に登壇したのは、株式会社Origamiの亀井浩明氏。Payリリース直後の開発秘話と、「お支払いコード」の入力方法の変遷の歴史を明かしました。Pay最初期に苦労したこと亀井浩明氏:では始めたいと思います。改めまして、Origamiの亀井です。私がOrigamiに入ったのは4年ぐらい前の2015年8月1日で、今年の2月からはエンジニアグループのマネージャーをやっています。それ以前はバックエンドとWebフロントエンド中心で開発を行っていました。Payの話をしていきます。Origamiという会社は、もしかしたらご存知かもしれませんが、Pay事業の前はECを行っていました。Payの開始が2015年10月です。Payのシステムはほとんど完成しており、あとはリリースを待つ段階でした。私が入る前に何があったのか、Slackのログを追ってみましたが、実はサービス開始前はそこまで苦労はしていません。普通の開発と同じような試行錯誤はありましたが、発表するほどおもしろい内容ではなかったので、本日は主にリリース後の話をさせていただきます。お話ししたいことはたくさんありますが、とりあえずかいつまんで、サービス開始直後の話とiBeacon問題について話したいと思います。サービス開始直後に直面した問題まずはサービス開始直後に出てきた問題についてです。2015年10月にサービスを開始したのですが、この時点では、そもそも日本はでスマートフォンで支払いを行うイメージ自体が存在していない状況でした。今ではスマートフォンで支払いをするのはPayPayさんやLINEさん、楽天さんなど、当たり前になっていますが。当時は加盟店さんも少なかったので、修正や新しい機能を付けても、とくにサーバサイドのリリースをしても、まず決済が起きませんでした。放っておくと何十分も経ってしまいます。単純に決済がないだけならいいのですが、もしかしたら何か問題が起きているかもしれません。決済が起きない限りそれがわからない状況でした。これをどうにかしないといけない。決済が起きないなら、自ら起こしていくしかありません。具体的にどんなことを行ったかというと、サーバのリリースをするときに、当時は表参道にオフィスがあったので、オフィスから歩いて5分ぐらいのところにあるOrigami加盟店のカフェで検証をしていました。Payを使って商品を購入してもらいます。その結果どうなったか、問題が無かったかどうか、Slackでやり取りしていました。自分たちで決済を起こして「本番稼働は大丈夫かな?」と検証していました。テストはしていましたが、本番でやらなければ安心感が得られなかったので、そういったことをやっていました。これは今でも実施しています。Kiosk」という売店があるので、そこで実際に購入して本番確認をしています。それでもすごく大きな変更があった場合、POS経由で決済するような機能や大きな加盟店様が入るときには、社内の売店ではテストできないケースもあります。Pay加盟店まで走って実際に決済をしてみて問題がないことを確認するということを、私だけかもしれませんが今もやっています。他に初期にあった問題としては、お店のオーナー様は契約をしているのでOrigamiが何なのかを知っていて「使えるよ」ということがわかるんですが、店員さんはオーナーさんとは別の人なので、そもそも存在を知らなかったり、あるいは操作に慣れていないので怖い、みたいなことがあるので「Origamiでお願いします」と言っても「今できないんですよ」みたいな話になったりしました。あとはそもそもユーザ数が少なかったので、実際に使おうと思っても端末の電源が切れていて電源を起動するところから始まったり、ひどいときには充電が切れているのでつなぎ直して、そうするとけっこう混んでるお店だと後ろのほうまで並んでしまって「すみません。あとで現金でお願いします」みたいなこともあったりしました。混んでいないときは、私は20分も30分も粘って決済をしていただいたりしていました。Payの基本的なMPMの仕組みを話したいと思います。仕組みは簡単で、加盟店様の端末に金額を入力いただいて、お支払いコードを発行していただきます。購入されるお客様は、発行されたお支払いコードを自分のスマートフォンなどの端末に入力することで決済完了となります。大事なことは、このお支払いコードをどうやってお客様が入力するかという点において、とくに制約はないということです。何らかの方法で入力をすれば良いと。本当の初期は、直接手でコードを入力するかたちでした。これは今でも、カメラが壊れているケースなどに備えて最終手段として提供していますが、幸いなことにほとんど使われていませんただ、「手で入力するってどうよ?」という話が比較的早い段階からあって、iBeaconというBLEを使った通信でお支払いコードを入力する方法に移行しました。現在はQRコードを使っていて、iBeaconは完全に廃止しております。Energy」上のプロトコルです。iBeaconのデバイスはUUID・Major・Minorという3つの値を飛ばしています。アプリ側はそのiBeaconデバイスの距離を大・中・小の3段階で取っています。iBeaconはAppleの商標のものではありますが、BLEでしかないのでAndroidでも受信はできます。iBeaconを使うと何が良いかと言うと、一応非接触っぽいことができます。その結果、「先進的だよね」という評価が得られました。悪い点は電波なので、どう飛ぶのかさっぱりわかりませんでした。そのために受信状況がかなり不安定でした。この、目に見えない電波を使うというのがかなり面倒くさい話でして、発信状況もわからなければ、実際に受信しているのかどうかもわかりませんでした。決済がすごく失敗しやすかった。いうと、iPadの世代や種類によって、BLEの発信源のチップの位置が微妙に異なるんですね。店員さん側で「この辺りにかざしてください」みたいなアドバイスをしてくれたりして、向こうでハックを生み出してくれたのですが、すごく申し訳ないですし、お店側のiPadが変わるとルールが変わってしまうので、ますます申し訳ないという感じになります。ユーザ側からしても、Android端末にとっては無理矢理使っているようなものなので、受信能力に幅がありました。先ほど大・中・小のレンジで取ると言いましたが、あれはAppleがiOSでやっているから、ある程度統一性を持った距離を取っていますが、Androidはそんなことは考えていないので、端末によってバラつきがありました。「この端末だとこの距離でも反応するのに、この端末だと近づけないと反応しない」みたいな。この問題に対処するために、端末を大量にレンタルをしてソフトウェア的に受信感度の調節を行いました。何十台と借りましたね。私はアプリ開発ではないので「大変だった」という話しか聞いていませんが、大変だったそうです。これでもうまく行きませんでした。そのうち、電波を見る能力がチームメンバーの中で生まれたりして......。(会場笑)これは過去のSlackのログから取ってきたんですが、4月ぐらいに「DさんがiBeaconの電波が見えるって言ってましたよ」とか、Androidの電波の感度の調整をやっていた人が「iBeaconの放射方向が見えてきた」「目覚めたか」みたいな話をしたり、「iBeacon、見えないの?」みたいな煽りを入れたり。そんなアホみたいなことはやってなれないので、ある日社長と雑談している時に、「正直に言ってほしいんだけど、今iBeaconとQR2つ使ってるけど、どっちがいいと思う?」と聞かれたので、私と周囲にいた人と「QRにしましょう」という話をして、iBeaconからQRへ移行しています。QRコード決済の良いところ実は2015年9月時点でQR版のプロトタイプはできあがっていました。10月のリリース前にはプロトタイプができてます。これは9月1日入社のメンバーがサクッと作ったようでして、ログを見たら9月10日には外部にプレゼンをやっていたようです。私はその場にはいませんでしたが、すごい勢いで作っていたようです。プロトタイプでしかないのでデザインを整えたり加盟店様への案内を考えて、並行期間を経て徐々にQRに移行し、現在ではiBeaconはまったく使っていません。(スライドを指して)こちらが歴代のアプリの画面です。向かって左側のものは最初のリリース時点のもので、当時はまだECがメインだったので下が支払いタブみたいな感じになっています。次がiBeaconの全盛時代で、お支払いアイコンも電波が出ている雰囲気になっています。iBeaconを完全に廃止していき、QRがメインになると、アイコンもなんとなくQRみたいな感じになって、現在これに加えてバーコードのCPM用のボタンも用意されております。QRの利点は枯れている技術なのでカメラさえ使えれば読めることです。適切なエラー訂正レベルを選べば非常に早いですし、安定もしています。失敗したのか、なぜ成功したのか判断がしやすくて、「QRが汚れていたのでダメでした」みたいなエラーが表示されます。慣れると肉眼でデコードできるそうですが、私はできません。他にも苦労はいっぱいありましたが、非常に楽しいサービスを作っているなぁと感じています。Positive」というこの3つのValueをモットーにがんばっております。ありがとうございました。JAPANに関する記事をまとめています。JAPANに関する新着記事が公開された際に、通知を受け取ることができます。