オンライン取り引きのインフラを提供する企業としてのStripe

ダニエル・ヘフェルナン氏:ダニエルと申します。簡単な自己紹介させていただきます。私自身はアイルランド生まれで、実はStripeもアイルランド人が立ち上げたサービスなんですね。僕の後輩が立ち上げました。

2014年に日本でストライプに入社し、日本での立ち上げを担当しました。前職はクックパッドでエンジニアをやってました。これは雑談ですが、4月に次男が生まれます。

(会場拍手)

こちらは本題ですが、「オンライン決済の裏側」という話で、まずはStripeのことを紹介したいと思います。

フワッとした簡単な数字ですが、こちらは何兆円ほど取扱高の規模があるかということです。1,000人ほどでやってるんですね。日本はこの一部で、グローバルで言うと1,000人ということです。

10万社以上がStripeを導入しており、こちらは2009年の最初の本当にコードのコミットから、昨年までの伸びです。これは実際の伸び、ユーザー数の伸びですね。

2015年、日本でサービスを初めてベータ版を展開して、Peatixさんが最初から入ってくれるようなこともありました。2016年にローンチして、全日空さんですね。誰もが知っているところが入ってくださいました。去年は、Amazonさん、さっきAmazon GOの話あったんですけど、そういう大規模のところも徐々に入ってきている状態です。

日本もうれしいことに、いろいろなお客さまにStripeを導入していただいていて、バラツキがあるという印象もあるかと思います。誰もが知っているような会社から、もしかしたら聞いたことがないようなスタートアップまで、例えば急成長しているSmartHR、スペースマーケット、こういうスタートアップもStripeを導入しています。

そして、「Stripeが見ているオンラインの市場」ですが、コマースというのは本来オンラインだと思っており、これは日本の数字ですが、オンラインのEC市場の規模が非常に大きくなっていて、今の世界のなかで4位ぐらいですね。伸びも非常によく出ています。

これは「オフラインの取引がオンラインになっている」だけではなく、「オンライン取引もどんどん増えている」ということだと思います。成長しているビジネスはオンラインを通すことが多いと思っていて、この伸びに合わせてサービスを提供し、この伸びをつくっている会社の支援をしたいと思います。そのインフラを提供している立場にあるということですね。

立場の話になりますが、販売者側がいます。従来だったら、販売者がいろいろなことを気にしなければなりません。例えば、金融機関、カード会社、アクワイアラなど。アクワイアラと話をして、加盟店契約を締結して、NDAを締結して、仕様書を開示してもらって、ご提案いただいて、交渉して、決済代行サービスを見つけて、加盟店番号を渡して……非常に面倒くさいんですよね。

それだけではなく、コンプライアンス、KMIなども気にしなきゃいけないですし、オペレーションも当然あります。海外に展開しようと思ったらだいたいやり直しなんですよね。海外のアクワイアラを探して、また交渉して、また仕様書もらって、またシステムをゼロから構築して、ということになる。

Stripeの立場としては、「これら全部を1つの窓口としてまとめる」というポジションになります。

基本的な基盤として提供しているものが、こういったサービスなんですね。多通貨の対応ですとか、先ほどあった、Apple PayやGoogle Payというモバイルネイティブの決済方法、そういったものを決済基盤として提供しています。

最近はこの決済基盤の上にさまざまなサービスをつくろうとしています。いくつか紹介させていただきますと、例えばConnect。これはスペースマーケットさんやONE PAYさんが使っているサービスですね。pay inのところだけではなくて、pay outも含まれますね。

マーケットプレイスや決済プラットフォーム、そういったプラットフォーム系のものだと、本人確認や振り込み周り、複雑な資金フローへの対応が必要になってきます。

例えば、機械学習の話も先ほどのパネルディスカッションにありましたが、機械学習に基づいた不正検知システムのデータ、これはとくに日本での普及がよくて、日本の人口が減っていくなかで、自分のビジネスを伸ばしていくのがきつくなっていくのかなと思っています。とくにビジネスを増やしていくには、お客さん増やさなければいけませんからね。

海外展開やECを始めるとなると、不正利用ですね。国内はそんなにありませんが、海外に出て行くと不正利用に遭ってしまうことがあります。これは人間がすべての取引を見て、さばいて、検知することが非常に難しくて、機械学習に基づいたシステムでなければ対策を設けることが非常に厳しいです。

そして定期支払いの機能、SaaSというバーチカルは、日本でまだそれほど普及しているわけではありませんが、SmartHRなどのスタートアップが最近すばらしい伸びを出して、SaaSビジネスを日本でうまくやってるところが、どんどん出てきてると思います。そういったSaaS企業の基盤になることが、この定期支払いのAPIになります。

簡単なStripeの紹介でした。

Stripeが考える四つの重要な柱

今日の本題として「裏側、安全・安心を支えるテクノロジー」を紹介したいと思います。

僕はもともとエンジニアで、こういう裏側やどういう技術で成り立っているのかなどに自然に興味を持ってしまいます。それでなかなかマニアックな話をしがちですので、お詫びを事前に申し上げたいと思いますけど(笑)。

(会場笑)

そこそこ深いところまでいきたいと思います。

まず簡単に始めますが、「Stripeで決済はどうなっているのか」から紹介したいですね。カード番号があって、ピタゴラスイッチがあって、YesかNoが出ると思うんですね。

(会場笑)

例えばStripeのAPI、これが非常に簡単な例です。カードで実行するとこのような感じになります。タイマーを付けているので、実行してみます。はい、いきます。……なにか終わりました。まあ、よくわからないですよね。1秒以内に終わってしまったので。スローモーションでやってみましょう。スローモーションでいきます。はい……これでもわからないですよね(笑)。

(会場笑)

でも、なにかしらがあったということです。「この間になにがあったのか」ということを、今日は紹介したいと思います。

大きく分けると、この3つになります。Stripe APIインフラの部分がまずあります。カードネットワーク、これが外部のVISAやMaster、そういうネットワークとのやり取りが発生する部分です。

最後に先ほどのRadarの話になりますが、そのまま全部カードを通しているわけではなく、不正使用の対策が必要なので、不正使用を検知して止めてくれるシステムも入っています。この3つに分けて紹介します。

まずAPIのところですね。今日はせっかくGoogle Cloudさんの話なので、このインフラの話をしないといけないなと思います。

この4つのことを大事にしてシステムを設計しています。

まずはSecurityがないといけません。カード決済なので、Securityが基本にあると思います。それをStripeが大事にすることによって、お客さんのSecurityも保証されるわけですね。

それからAvailabilityも非常に力を入れています。Stripeはお客さんの売上の一部を手数料として頂戴するので、StripeのAPIが障害に遭ってダウンしてしまうと、弊社の収入がゼロになるわけです。そういったインセンティブもあって、しっかりとAvailabilityを保証しないと、弊社のボトムラインやトップラインにも影響があります。

それからScalabilityですね。先ほどのお客さんの紹介にもあったと思いますが、小規模なところから大規模なところまで入っているので、非常に伸びている会社がStripeを使えるようにしないといけません。なので、このScalabilityが非常に大事なところです。

また、どんどん新しい商品も出していかなければなりません。そこはVelocityのところになってくると思います。

これは、ちょっとテンションはあると思うんですけれども、この4つを意識して、インフラを構築しています。

具体的にどうなっているかといいますと、この「フロントエンドサーバーがいくつかあって、バックエンドが1つあります」と。このバックエンドにほとんどのアプリのコードが入ってます。

それほどめずらしい構成ではありませんが、複数のアベイラビリティゾーンを設けて、ロードバランサ―がフロントに立っていて、アプリサーバーと複数のデータベースがあるように設計しています。

このように構成することによって、障害などを対策することができるんですね。1つのアベイラビリティゾーンがなくなっても、他のものが存在しますし、データベースサーバーも複数存在することによって、障害を避けることができます。

障害ということで、金融業界に限ったものを、2016年、2017年、今年と3つピックアップしました。よくありますね。これは発生するとみんな痛い目に遭ってしまうので、インフラでないようにしたいと考えています。

あとはですね、Stripeでフラッシュセールというものがあります。国内はまだそんなにありませんが、モデルさんがInstagramで化粧品を、「5分後に販売します」と発表して、いきなりすごい取引数が入ってきたりすることがあるんですけれども、ここに耐えるシステムじゃないといけないんですね。

ISO 8583の通信周りの面倒を簡単なコードで解決

僕の一番好きなところで、カードネットワークのところに入ります。「ISO 8583」を知っている人いますか?

(会場挙手)

あ、いた。すごい。

先ほど「Google PayがPayment Request APIとどういう関係があるのか?」といった、こういう標準の話があったんですけれども、「ISO 8583」、ISOなんで標準なんですね。これは、世界中で導入されている標準です。

日本ではドメスティックなCAFISやCARDNETが存在していますが、国内のVISAであれば数割がISO 8583で動いてますし、越境になるとISO 8583の通信になりますね。

「じゃあ、これ、どんなものか」を例で見ます。これがStripeのコードですね。Stripeを導入すると、こういうコード書きます。開発でなくとも読めると思います。

これが1,400円。カード番号がこれです。有効期限とCVCがこんな感じです。ここの黄色いところが、ISO 8583に変換されて、ISO 8583の電文ができて、カードネットワークへ飛んでいくんですね。

これはその電文ですけど、読めないですよね。これを自分でつくろうとするとけっこう大変ですけど、これをつくるシステムを本来はつくらないといけないんですね。StripeのAPIを使うと、簡単に書いてStripeがこんな変換をしてくれます。入っている内容がここですね、先ほどのカード番号、金額が入っているんですね。

大事なメッセージなど、いろいろなメッセージタイプが入ってるんですけれども、この「0100」のところが非常に大事です。

これはオーソリゼーション・リクエストというところですね。これを一緒に並べて比較すると、こういうStripeのコードがあって、各項目がこう変換されます。項目が増えました。御社は気にしなくてもいいところで、Stripeが埋めてあげているところですね。

これにはいろいろなものが入っていますが、コンバージョン率を最大限にするものだったり、ちゃんとしたルーティングになるようにしたり、いろいろと工夫を入れて、こういう難しいISO 8583のものをつくって、ネットワークに飛ばします。

このオーソリゼーション・リクエストに対して、オーソリゼーション・レスポンスが返ってきます。これもなかなか読みづらいですが、このなかには「ちゃんとオーソリゼーション取れたのか?」「どんな理由でエラーになったのか?」という内容が入ってきています。

この内容をStripeが読みやすいJSONに変換して返します。これだったら、「ネットワークステータスがApproved by networkになっている」「CVCチェックが通った」など。最新のシステム、例えば、NodeやRubyで書かれているシステムだったら、非常に読みやすいJSONに変換されています。

さらにこれはVISAのISO 8583でも、Masterでも、AMEXでも、どのブランドでも、統一したJSONフォーマットになるので、海外展開しても、カードブランド増やしても、自分のフォーマットを変えたりいじったりする必要がまったくない状態になります。

なぜAIが取り引きを止めたのか人間が判断できる

それではですね、最後に、機械学習のところにちょっと入りたいと思います。

これはですね、Radarという商品だと、さっき紹介したんですけれども、これはいくつかの要素があります。まず、機械学習アルゴリズムに基づいて構築されているものです。これは先ほどの理由で、人間だけで見て、対策が十分できるものではないという問題があって、機械学習を導入しています。

それから、リアルタイムでインサイト、その判断理由を見られるのが大事なポイントです。AIを調べようとすると「ブラックボックス化」という情報が出てくると思いますね。AIはなかなか「どういう理由で判断をしてくれたのか」が見えないものですが、Stripeが導入してるAIシステムであれば、主な理由を出してくれるので、「勝手に売上が止められた」という感覚がなくなります。

売上が止められても、例えば、「このカードが直近の24時間で世界中で使われてしまって、不正に遭ってる可能性が高いから止めましたよ」ということがわかると、納得がいきますね。

それからですね、ルールを設けることもできるんですね。完全にAIに任せるだけではなくて、自分でカスタムルールをつくれるということです。例えば「機械学習アルゴリズムの結果としてリスクが高い、かつ、金額が10万円以上、かつ、デビットカードでこの3つの国のなかで発行されてれば、人間がレビューするようにしろ」という複雑なルールも、管理画面でつくることができます。

それからですね、レビューの話ですけれども、これは本当に簡単に、どんどん取引が入ってきて、オペレーションチームが見て、その売上を受け付けて、納品をしたいのか、それとも、「これ、ちょっとリスクが高いから、拒否しましょう」という判断にするのかが、必要な部分だけ人間に見てもらって対応できるんですね。

オンラインの不正利用は、日本は世界的な数字で言うとまだ少ないんですけれども、非常に伸びていて。えーじさんの画面で出ていましたが、経産省の「新しい実行計画を出してください」があって、こういう割販法の改正で対応が進んでいるんですけれども、日本はこれから注目されるところだと思いますね。

実際、オンラインの不正カードの情報は不正情報の取引所みたいなものがあるんですね。これは1つなんですけど、UIがけっこういいですよね(笑)。

(会場笑)

いろんなカードが、これでまとまって販売されてるんですね。これは漏れてしまったカード番号がまとまって販売されたり、機械的にカード番号をたくさんつくって、どこかのサービスで試して成功したものをまとめて販売してたりというようなものですね。決済方法が出てないんですけど、Stripeじゃないですね(笑)。

(会場笑)

こういうところは本当に存在します。機械学習のプラットフォーム……日本の数字なんですけれども、1月から3月の間に39億円ぐらいの損失が出ているんですね。これはアメリカ。この10倍以上は出ています。

この機械学習プラットフォームの主な要素なんですけれども、決済プラットフォームとは別のシステムを導入してるわけではないんですね。決済と不正検知が、同じダッシュボードのなかでオペレーションできるというところが、大事なところだと思います。かつ、Stripeネットワークと連携しているので、取引がStripeのユーザーからどんどん入ってくるので、それを全部見て、システムを改善していくこともできるようになっています。それから、自分でタギングする必要もないので、バイアスが生じにくい構成になっています。

もっと細かく言うと、たくさんの特徴を見て、(スライドを指して)これはいくつかピックアップしたものですが、当たり前なIPアドレス・デバイスIDも入っていて、プロクシー検知やもっとマニアックなところも入っているんですね。

このプロクシー検知のところが、1つおもしろいところなので紹介したいと思います。プロクシーというのは、例えばTorとかですね。普通のプロクシーもいっぱいあると思いますが、これを検知することが難しく、Stripeはブラウザまたは端末のなかにコードも置いていますから。

普通だったらElementsというJavaScripitがブラウザに入っていて、決済情報がStripeに飛んでトークンが返ってくる仕組みがあるんですね。プロクシーを入れると、間にプロクシーサーバーが入って、通信が全部プロクシーを通るということなんですね。それでこの2つ目のケースを検知したいということです。

これ、どうできているかといいますと、StripeとこのElementsのなかで、通信が2種類でできるんです。単なるStripeからpingして、pingが返ってくることを見ることもできるし、ブラウザがStripeにpingして、そのpingのタイム、リターンタイムを見ることもできるんですね。

Stripeがpingしてみてプロクシーに当たって返ってくると、時間がかかりません。しかし、実際のブラウザがプロクシーを通ってStripeと通信すると時間が長くなっていることがわかりますね。こういうラウンドトリップタイムを見ることによって、プロクシーを検知して、それを1つの特徴として入れることができるんです。

これでたくさんのユーザーネットワークの情報を活かして、全部の特徴を集めて、データをベクトル化して、機械学習のアルゴリズムを学習させてるわけです。データがあればあるほど、Stripeの機械学習のアルゴリズムがうまくいくので、「たくさんのデータをお渡ししてください」とお願いしています。

時間がなくなってしまったので飛ばしてまとめさせていただきます。

以上の3つの要素がありまして、Stripeが順番に、インフラが決済情報を受け付けて、カードネットワークに渡して、カードネットワークで変換して、決済処理をして、最後に機械学習の判断が入って、不正使用かどうかを判断して、その全部の結果として「OKかNGか」を返す仕組みになっています。

はい。ご清聴ありがとうございます。

(会場拍手)