Yahoo! JAPANのID連携を支える技術と仕組み

パスワードレス普及への取り組み/ヤフーのデータ戦略を支えるID連携 #2/2

Yahoo! JAPAN Tech Conference 2019
に開催

2019年1月26日、Yahoo! JAPANが主催するイベント「Yahoo! JAPAN Tech Conference 2019」が開催されました。今回のテーマは「未来につづく話をしよう」。Yahoo! JAPANの100以上のサービスを支えるエンジニアやディレクターたちが、自社のサービス開発事例の一端を紹介します。プレゼンテーション「パスワードレス普及への取り組み/ヤフーのデータ戦略を支えるID連携 」に登壇したのは、サービス統括本部IDソリューション本部三原一樹氏と、本間洋光氏。Yahoo! JAPAN IDにまつわる取り組みの裏側を語りました。講演資料はこちら

Yahoo! JAPANのデータ戦略を支えるID連携

本間洋光氏:では、ここからは「Yahoo! JAPANのデータ戦略を支えるID連携」についてお話いたします。

まずはじめに自己紹介をさせてください。

本間洋光と申します。先ほどのスピーカー三原と同じく、サービス統括本部IDソリューション本部でエンジニアをやっています。Yahoo! ID連携の開発・運用を主に担当しています。Yahoo! JAPANには新卒で2016年の4月に入社し、現在、4年目になっています。

私からは、こちらにある3つのお話をさせてください。まずはじめに、タイトルにもあるように「Yahoo! JAPANのデータ戦略とYahoo! JAPAN ID」がどう関わっているのか。2番目に、ID連携の仕組みとそれをYahoo! JAPAN社内でどう使っているのか。3番目に、そのID連携をYahoo! JAPAN社外で利用してどんなことができるのかといったことを、事例を交えながらお話ししたいと思います。

ではさっそくですが、最初の「Yahoo! JAPANのデータ戦略とYahoo! JAPAN ID」から始めていきます。

基調講演等でもありましたように、Yahoo! JAPANが提供しているサービス数は100を超え、非常に多くのサービスをユーザーのみなさまにご利用いただいています。その領域は、Yahoo!ニュースなどのメディア系のサービス、あるいは「ヤフオク!」「Yahoo!ショッピング」のようなEコマース系のサービスもあります。また、Yahoo!ウォレットのような決済系のサービス、あるいはクレジットカード事業など、決済や金融系の事業を展開しています。

これらのサービスをより多くのお客さまにさらに便利に使ってもらうためには、サービス利用によってたまるデータを活用し、品質を上げていくべきだと考えられます。それをここでは「Yahoo! JAPANのデータ戦略」と呼びます。

Yahoo! JAPANが提供するサービスをYahoo! JAPAN IDをベースにご利用いただき、そのデータを蓄積し、活用してサービスなどの質の改善につなげる。その結果として多くのお客さまにご利用いただけるようになれば、さらにデータがたまる、という循環をグルグル行いながらデータ活用していくことを「データ戦略」と呼んでいます。

このデータ戦略の実現においては「利用者を識別してデータを保持する」ことでデータを活用しやすくなります。また、複数サービスあるいは複数デバイスで同じIDでログインし、サービスを利用していただくことが大事になります。

この話を図示すると、Yahoo! JAPANが提供している多種多様なサービスをYahoo! JAPAN IDをベースにご利用いただくことで、多量の利用データがたまります。またPCやスマホ、タブレット、最近出てきたインターネットにつながるテレビなどといったデバイスを同じYahoo! JAPAN IDでご利用いただくことを考えています。

また、最近では違った見方をされることも増えてきましたが、ヤフーはPC向けのサービスから出発したため、「PCには強いけど、スマホアプリはちょっとね」といったように捉えられていた時期もありました。

しかしスマートフォンの登場以降、ユーザーが日常的に使うようになったアプリでのご利用が非常に重要になったため、PCやスマホのブラウザよりもさらにリッチな体験ができる「スマホのアプリ」でログインしてもらうことに注力しました。そのために行ってきたことをいくつかご紹介したいと思います。

アプリをインストールするメリット

まず「そもそもアプリをインストールしてもらわないといけないよね」というところで、スマホのブラウザでYahoo!ニュースをご覧いただいているお客さまに対しては、右側のキャプチャーの下の帯に「ブラウザよりも快適に」とアプリをインストールできるボタンを配置しました。「よりシンプルにアプリを使ってみませんか?」ということを訴求しています。

また、ブラウザがログイン状態であれば、そのセッションを使ってアプリもログインさせるような仕組みを提供しています。

また、「そもそもログインすることでお客さまになにかしらのメリットがないといけないよね」ということがもちろんあるかと思います。ログインしているからこそ使える機能がいくつかあり、そのうちの1つをご紹介しますと、Yahoo! JAPANアプリで表示されているタイムラインは一人ひとり異なるものを表示するというものです。

この「すべて」の項目で表示されている上のほうは共通のものですが、スクロールしていくとひとりひとりぜんぜん違ったコンテンツが表示されるようになっています。これはお客さまがより見たいであろうコンテンツをレコメンドして表示するような仕組みです。

Yahoo! JAPANは多くのサービスを提供していてアプリが多数存在しているため、既にお持ちのアプリがログイン済みならそのセッションを活用し、Yahoo! JAPAN提供の別のアプリを新しくインストールした際にボタンタップ1つでログインできる仕組みを提供しています。

これらの施策等の効果もありYahoo! JAPANのログインユーザー数は、先ほどのお話にもありましたが、直近の数字では4,500万ほどのユーザーにご利用いただいています。

ここまでの話をまとめると、まず「データを活用してこそサービスの品質上げられるよね」という前提でよりスマホアプリにフォーカスして利用を促進しています。また、ログインして利用してもらうことによってデータを活用しやすい状態にシフトしてきたということです。

ID連携の仕組み

2番目に、ID連携の仕組みとYahoo! JAPAN社内での利用についてお話しします。

先ほどからアプリのログインの話をしてきているのですが、Yahoo! JAPANのアプリのログインではYahoo! ID連携という仕組みを利用しています。

ユーザーから見ると、あるアプリでログインボタンを押すとYahoo! JAPANのログイン画面が出てきて、そこに、ID、SMS認証やパスワードなどを使ってログインするようにしか見えませんが、その裏側ではYahoo! ID連携が使われています。

Yahoo! ID連携とは、OpenID Connectという業界標準仕様に準拠したプロダクトです。これは、ユーザーの同意に基づいた属性情報の連携、あるいはWeb APIのアクセスコントロールが可能になる技術やプロダクトのことです。

あるユーザーがWebサイトやアプリケーション等をサービス利用する際に、そのユーザーの識別・認証や認可をIDプロバイダが担い、IDプロバイダがその認証結果・属性情報をWebサイトやアプリケーション等に連携することでログインできる仕組みです。

OpenID Connect

このOpenID Connectについて、もう少し詳しくご説明します。OpenID Connectの、便宜上「人物」と呼んでいるものが大きく分けて4つあります。

まず、User-Agentからです。End-Userがいて、そのユーザー(End-User)が使いたいサービスのことをRelying Party(以下、RP)と呼びます。また、ユーザーのIDを管理するサービスとしてID Provider(以下、IdP)が登場し、また、そのIdPが管理するユーザーの属性情報を返却するWeb APIとしてUserInfo APIが定義されています。

「これらがどういうふうに情報をやりとりしてID連携が可能になるのか?」を、Authorization Code Flowをベースにお話しします。

このフローではまずはじめに、ユーザーがRP上でログインボタンを押すと認証・認可の処理へ遷移します。

そうすると、User-AgentからIdPにAuthorization Requestが行き、IdPはIDやパスワード等を用いてユーザーの認証、または同意を取得します。

ユーザーが同意した認可情報、ここでは例えば「どういったユーザーの属性情報を返却してよいか?」といった認可の情報が紐づくAuthorization Codeを、リダイレクトでRPへ返却します。

RPは、Authorization Codeと事前にRPやIdPが発行しているClient IDを使って、Token Requestを行います。

そのレスポンスとして、Web APIでアクセスするためのAccess Token、それからそのAccess Tokenを更新するためのRefresh Tokenを返却します。

また併せて、IdPは「どのクライアントにどのユーザーを認証しますか?」といった情報が含まれるID Tokenを返却します。このID Tokenにはシグネチャーが含まれているので、RP側でIdPが認証したユーザーの認証結果をID Tokenを用いて検証します。

最後にAccess Tokenを用いてUserInfo APIから属性情報を取得し、UserInfo APIはその認可した情報を返す、といった流れになります。

Yahoo! JAPANの提供するアプリでは、RPもUserInfo APIもIdPも、同一事業者であるYahoo! JAPANが提供しています。そのため、ユーザーに実際どういった属性情報を返却するかは、あくまで同一事業者内での情報の連携ですので「明示的に同意を取る」といったことはしておらず、その流れは今お話ししたOpenID Connectのフローで動いています。

Yahoo! JAPANの提供するアプリのログインは最終的にこのOpenID ConnectのID連携を使って、Webでもアプリでも同じIDでログインできるようになっています。また、アプリならではの仕組みとして、ログイン中のアプリのセッションを活用する仕組みを提供しています。

社外におけるID連携の活用事例

3番目に、社外におけるID連携の活用事例をお話しします。

「そもそもこのID連携を社外でもご利用いただくと、どういったことができるんだっけ?」というとまず、Yahoo! JAPAN以外が提供するサービスでもふだん利用しているYahoo! JAPAN IDでログインできるようになります。

また、Yahoo! JAPAN IDに紐づく属性情報がユーザーの同意のもと連携が可能になり、例えば、あるサービスで会員登録などをする際にわざわざ住所情報を入力せずに利用開始できる、といったメリットがあります。

また、これは連携先サービスのポリシー次第ではありますが、Yahoo! JAPAN IDでログインしただけで別途IDやパスワード等を入力することなく、利用開始できるサービスもあります。

具体的には、他社サイトでのログインの例として、ヤマト運輸さまがご提供されている「クロネコメンバーズ」というサービスでのログインフローをご説明します。

通常ではクロネコIDとパスワードを使ってログインしますが、一番左のキャプチャの下にあるYahoo! JAPANのロゴのログインボタンを押していただくと、Yahoo! JAPANのログイン画面に遷移します。そこでIDやパスワード、あるいはSMS認証等を使ってログインし、また「Yahoo! JAPANからクロネコメンバーズにこういった情報を連携しますが、よろしいですか?」といったことを確認する画面が表示されます。

ここでは、例えば「お名前やメールアドレスなどを連携しますが、いいですか?」ということを聞いていて、右下の「同意してはじめる」というボタンを押していただくと、クロネコメンバーズ上でもログイン状態になる仕組みです。

ヤマト運輸との連携のしくみ

以上を踏まえ先ほどのフローを説明した図でいいますと、社外パートナーの提供のアプリやサービスだと、RPが社外のアプリやサービスになり、IdP・UserInfo APIをYahoo! JAPANが提供しています。

ここでのポイントは、Yahoo! JAPANのアプリでも社外が提供するサービスでもまったく同じ仕組みが採用されていて、Yahoo! JAPANでも裏側で使っている仕組みがそのまま社外でもご利用いただけるという点です。

Yahoo! JAPANのデータ戦略として冒頭にお話ししたとおり、Yahoo! JAPAN内でのサービス提供にデータを活用するという話でした。つまり、社内においてもYahoo! JAPAN IDをベースにデータをサービスへ提供していて、その社外のデータもユーザーの同意のもとにおいてYahoo! JAPANでも活用する、そういったことを念頭に置いています。

そういった中で1つ事例をご紹介します。

先ほども出たヤマト運輸さまとの取り組みについては、ヤマト運輸さまもクロネコIDという別のID基盤をお持ちです。Yahoo! JAPANでもYahoo! JAPAN IDをベースとしたID基盤を持っていて、これらをID連携で連携させてヤマト運輸さまがお持ちのお荷物の配送情報や「いついつ届けますよ」といった情報をYahoo! JAPANのサービス上で確認するといった仕組みを提供しています。

そもそもこれを「やりたい」「やるべきだ」と判断した理由は、まずECの利用増加に伴って、配送業者さまが扱われるお荷物の量が増えているという現状があります。また、国交省の報告によると、宅配便の再配達率は約15パーセントと言われていて、この再配達自体を減らしたいという思いがありました。

そこで、Yahoo! JAPANのサービスをご利用いただいているユーザーさまに、配送情報やお荷物の情報を「Yahoo! JAPANアプリ」で「荷物がいつ届くか」より確認しやすい機能を提供したいと考えました。

具体的には、「Yahoo! JAPANアプリ」をご利用いただいているお客さまには、Push通知で「いつ頃荷物が届きますよ」といったことをお伝えし、その荷物の詳細が確認できる機能をご用意しています。

またPush通知以外でも、荷物の配送予定の詳細が確認できる画面があります。

また、Yahoo! JAPANではカレンダーに荷物の到着予定・配送予定を自動的に登録して、そこから確認しやすくするサービスも提供しています。

配送情報連携の仕組み

この配送情報連携の仕組みをもう少し詳しくご説明すると、まず一番左に、お荷物の情報がクロネコメンバーズ上にございます。そこをYahoo! JAPAN IDとクロネコIDでYahoo! ID連携を使って連携させ、Yahoo! JAPAN IDごとに配送情報をWeb APIで受け取るといった仕組みを提供しています。

配送情報APIで受け取った荷持の情報を「Pulsar」というメッセージングシステムを使ってパブリッシュし、それを各アプリのバックエンドでサブスクライブして、「Yahoo! JAPANアプリ」によるプッシュ通知を受信できるようにする、Yahoo!カレンダーのアプリに配送予定を登録する、といったことを行っています。

この配送情報のAPIが誰でも叩けるものだとよくないので、そのアクセスコントロールと「配送情報自体をYahoo! JAPANで利用してもいいですか?」といったユーザーの同意を取る仕組みに、このYahoo! ID連携を活用しています。

ですから、一番右のキャプチャーのYahoo! JAPANがユーザーさまに取っている同意の情報に「Yahoo! JAPANが提供するアプリで、配送情報を表示してもよいですか?」といったことを確認する文言が書かれています。こちらに同意いただいたお客さまに限って、こういった仕組みが使えるようになっています。

そうしてクロネコメンバーズIDとYahoo! JAPAN IDをID連携で紐づけて、このユーザーの同意に基づいてAccess Tokenを発行していて、それに配送情報APIにアクセスできる権限をつけて発行しています。

ID連携を用いた社外とのデータ利活用ということで、配送情報をYahoo! JAPANのサービスで活用できる仕組みをご紹介しました。また、ユーザーの同意に基づいたデータ連携とアクセスコントロールをID連携で実現するといった事例をご紹介しました。

ID連携で圧倒的な「便利」を届ける

話をまとめます。

「データを活用したユーザー体験の向上のためには、ログインしてサービスを利用してもらうことがどうしても大事になってくるよね」ということで、ログインして使ってもらいやすい社内の施策をいくつか紹介しました。

また、今後は社外ともデータの利活用の面で連携していきたいと考えているため、ID連携を活用した社外と連携した例として、ヤマト運輸さまとの配送情報連携の例をご紹介しました。

今後もYahoo! JAPANでは、社内外でID連携を活用したデータ活用・サービス提供を行い、ユーザーさまに圧倒的な「便利」をお届けしていきたいなと思います。

前半に三原からYahoo! JAPAN IDをパスワードレスで安全にご利用いただける施策についてご紹介し、そのYahoo! JAPAN IDを使って「どういったデータ活用をしたいのか」「どういったデータを社外と連携していきたいのか」といったことをご説明しました。

本セッションは以上になります。どうもありがとうございました。

(会場拍手)

Occurred on , Published at

Yahoo! JAPAN Tech Conference

Yahoo! JAPAN Tech Conferenceに関するログをまとめています。コミュニティをフォローすることで、Yahoo! JAPAN Tech Conferenceに関する新着ログが公開された際に、通知を受け取ることができます。

スピーカーをフォロー

関連タグ

人気ログ

人気スピーカー

人気コミュニティ

ピックアップ

編集部のオススメ

ログミーTechをフォローして最新情報をチェックしよう!

人気ログ

人気スピーカー

人気コミュニティ

ピックアップ

編集部のオススメ

そのイベント、ログしないなんて
もったいない!
苦労して企画や集客したイベント「その場限り」になっていませんか?