Upgrade to Pro — share decks privately, control downloads, hide ads and more …

LINE eKYCって何だ?~その実力と開発チップスについて~

LINE eKYCって何だ?~その実力と開発チップスについて~

SoftBank Tech Night

November 14, 2022
Tweet

More Decks by SoftBank Tech Night

Other Decks in Technology

Transcript

  1. Who am I ? • ソフトバンク 法人事業統括で働くエンジニアです • LINE開発をしています •

    AI関連のプロダクト開発をしています • 『世界モデル』やシミュレーション技術の調査・研究をしています 2021年7月ソフトバンク(SB Cloud出向)に入社。SB Cloudでは、中国 Alibabaの最先端のAI技術の日本導入をミッションにしていましたが、3か月後に は、 SB Cloudとソフトバンクの合併によりマルチクラウド業務に移行。もともと、 AIエンジニアのロールでの採用ですが、最近はAIプロダクトの開発よりLINE開発 のうほうが多いですw(幸いLINE開発は楽しい) 3 9月末まで、今回登壇さ れた辻さんと一緒にLINE 開発をしていました。10 月から部署ごと異動。
  2. eKYCを取り巻く現在の状況はレッドオーシャン 2020年(※)の富士キメラ総研による「人工知能ビジネス総調査」によると eKYCの市場占有率は 1位:日本電気(NEC) 33.3%(2019年からdown) 2位:ポラリファイ 20.8%(2019年からup) 3位:Liquid 18.8%(2019年からup) 2019年ごろはNECが半数近くのシェアを占めダント一位でしたが、徐々にシェアを下

    げています。4位以下、様々な企業がeKYCに参入している レッドオーシャン(血の 海・市場の奪い合いを指す) ※少し情報が古いですが、今もあまり変わらないようです。最近2022が出版されたようです 6 レッドオーシャン
  3. LINE eKYCの大まかな手順 ⚫(友だちではない場合)LINEの友だち登録 ⚫身分証・顔の撮影 ⚫サービス提供者側で審査 ⚫サービス提供 9 この2つをLINEで実施 LINE eKYCには、身分証の写真と撮影した顔の類似度を

    チェックする仕組みはありますが、審査は人手で行うことを想 定。このため、審査及びサービス提供に必要な情報をDBに 貯めるためのサーバの開発が必要となります(後述)
  4. 2種類の提供モデルについて ニーズにより2種類のモデル(2種類のアーキテクチャ)があります。 ⚫eKYC UIモデル:UI + Webhookの提供➡開発工数低 ⚫eKYC APIモデル:APIのみの提供➡UIページを全て開発するため開発工数高 16 ちなみに、最近更新された新

    しいLINE eKYCの公式サイ トでは、UIモデルは「標準」、 APIモデルがオプションという 表現になっていました。 本日は、時間の都合で、こちら のUIモデルの開発をメインに お話します。
  5. UIモデルの構成 つまり、事業者側では、次の開発、設定が必要です。 ①UIモデルコンソールからeKYCプロジェクト作成と必要な設定を行いデプロイ ②ユニークIDを作成しユーザーに専用URLを送信(Messaging API) ③受信したeKYCデータをDBに保存 17 お客様サーバ CLOVA eKYC

    サーバ 審査及びサービス提供に必要な情報 をDBに貯めるための開発が必要 ▪事業者 ①UIモデルコンソールから eKYCプロジェクト作成と必要 な設定を行いデプロイ ②ユニークIDを作成しユー ザーに専用URLを送信 ▪エンドユーザー ▪LINE社 ③eKYCを実行(随時 eKYCデータをアップロー ド) ④eKYCデータをお客様 サーバに随時送信 緑色の線:LINE 社提供範囲 赤色の線:事業 者で開発や設定を 行う範囲 トーク上から専用 URLでeKYCを 起動 ⑤受信したeKYCデータ をDBに保存 LINE Messaging API
  6. 開発環境の説明:UIモデルコンソールの設定 『UIモデルコンソールからeKYCプロジェクト作成と必要な設定を行いデプロイ』するには、とにもか くにも、UIモデルコンソールが必要です。コンソールのサイトはIP制限をしていて、あらかじめLINE 社に利用しているIPを通知する必要があります。簡単と思ったのですが、くせものだったんで す。。。 UIモデルコンソールの環境準備に数週間を要してしまいました。。 19 LINEさん、つなが らないんですけどー。 理由がわかりません。

    ひょっとして、XXX 側もIP制限してい ませんか? 確認しました。制限 していました。 特殊ケースのため詳細は割愛しますが、ソ フトバンク側のネットワークの設定が特殊 で複数のIP設定が必要でした(SBの方 で困ったらDM下さい!) ※数週間かかったのは、SBでは固定IP取得に 申請や作業等で時間がかかるというのもありま す。
  7. マネージドサー ビスDB (ApsaraDB RDS for PostgreSQL) 開発環境の説明:サーバの構成(テスト環境) 21 本番環境は、CNAP(on Azure)環境

    でコンテナ(K8)構成を予定していましたが、 諸々の部署の環境変化の影響でペンディ ング中。本番環境の説明は省略。 FC(Function Cmpute)はサーバレスと呼ばれる種 類のアーキテクチャです。CI/CDでは通常k8などコンテ ナを利用することが多いですが、テスト的に利用するには サーバーレスのサービスでも十分です。アクセスした分だ けの支払負担なのでコストも非常に安いです。 ユニークID(review id)を生 成しユーザーに専用URLを 送信 受信したeKYC データをDBに保存 『お客様サーバ』と呼ばれるeKYC情報を受信するサーバ構成の説明 Alibaba Cloud Function Compute 発行したユニーク ID(review id) データをDBに保存 エンド ユーザー LINE社のCLOVA eKYCサーバ eKYC情報を受信 LINE Messaging API ※CNAP(Cloud Native Application Platform)はSBのクラウドサービス
  8. 今回実装したユーザーに専用URLを送信する処理 23 ①ユーザーがリッチメ ニューから「eKYC」を タップ LINE Messaging API ②トーク画面に特定のメッセー ジ(eKYCを開始します)を送信

    ③特定のメッセージ (eKYCを開始します)が送 信されたことをトリガーに サーバーから専用URLを 送信※サーバのURLをユーザに 表示するのは望ましくないので、ボ タンテンプレート(画像は仮のサンプ ル)で作成しましたが任意のテンプ レートで作成できます。 ▪サーバー側の処理 ⚫ Messaging APIでトーク画面からのメッセー ジを受信し署名を検証 ⚫ 特定のeKYC開始メッセージか判定 ⚫ Yesの場合、該当ユーザーのreviewidがDB に保存されているか確認 ⚫ DBに保存されている場合は、DBに保存されて いるreviewidで専用URLを生成(復帰用) ⚫ 保存されていない場合、新規にreviewidを発 行し、発行したidをDBに保存 ⚫ 必要なパラメータを付与した専用URLでボタン テンプレートを作成して、ユーザーのトーク画面 に送信
  9. eKYC情報を受信してDBに保存する処理 ▪サーバー側の処理 ⚫メッセージを受信して、ヘッダーの署名を検証 ⚫ヘッダー署名がeKYCの署名か判定 ⚫eKYCデータの「type」を判定 ⚫typeごとに異なるeKYCデータをDBに保存 24 今回の実装では、eKYCデータの受信か、 エンドユーザーから送信されるeKYC開始 メッセージの受信か判定するために署名

    の判定を入れています。 eKYC情報を受信する機能と専用URL を送信する機能は別々の機能なのでマ イクロサービスの設計観点からは、サー バーを別にするほうが正かもしれませんが、 今回は、後続で予定していたコンテナリ リースとの兼ね合いで一緒のサーバーにし ています。(ベストプラクティス求ム) typeの例1) type『PROCESS_START』は、 エントランス画面(本人確認実施について)で"次へ” ボタンが押されたタイミングで受信するデータ typeの例2) type『FACE_FRONT』は、 顔正面の画像を撮影し送信したタイミングで受信す るデータ
  10. DB設計など WebhookでLINE社eKYCサーバーから受信するタイミングやデータについて。 ➡12回のタイミングで、それぞれ異なるJSON形式のデータを受信 - 1回目 エントランス画面(本人確認実施について)で"次へ”ボタンが押されたタイミング - 2回目 顔正面の画像が送信されたタイミング (以下省略)

    それぞれ項目が様々なデータのJSON構造を理解し、パースしてDBにinsertする必要がある。 困ったことに、親ノード子ノードの情報を含むJSON構造のドキュメントが無い。 仕方なく、レスポンスログのJSONデータを解析。。。 ➡けっこう複雑なJSON構造になっており解析がタイヘン。 ➡複雑なので間違う可能性も。 25 つ、つらい。。
  11. LINE社にお尋ねしました 神 26 LINEさん、 親ノード子ノードの階層構 造が整理されたドキュメン トは無いでしょうか? Webhookの階層構造 を整理した資料を作成し ましたので、こちらをご参

    照いただければと思いま す。 LINEさん、ありがとうご ざいます!感謝!! ご提供頂いたeKYCデータのJSONオブジェクト ⚫ Webhook Event Object 20項目 ⚫ DriverLicenseFront object 28項目 ⚫ DriverLicenseBack object 1項目 ⚫ MyNumberCardFront object 27項目 ⚫ ResidenceCardFront object 29項目 ⚫ ResidenceCardBack object 5項目 多くの情報を取得できる一方、JSON構造がけっこうな複雑さなので、 データを適切にパースするために適宜ドキュメントを参照しましょう! 画像データも含め全ての情 報が取得できます。
  12. まとめ • 本日は、LINE eKYCのメリット・特徴、私がつまづいたpoint、LINE eKYC開発のチップスについてお話しました。 • 個人的にはLINE eKYCは、性能が良いだけでなく、使い慣れた公 式アカウントから実行できる有望なソリューションだと思っています。 •

    eKYCは、国の本気のDX推進や様々な社会情勢の中で普及中 • 現在は金融や保険、〇〇Payなど一部に取り入れられているeKYC ですが、今後は『あらゆる』産業へ展開➡様々なアプリで採用されると 考えられる! • 今日の情報共有がLINE eKYC導入のきっかけになりましたら、幸い です!(12/31まで初期費用10万無料キャンペーン中のようです) 27 LINE eKYC
  13. Appendix 様々なカスタマイズが可能 時間の関係で、紹介しきれませんでしたが、様々なカスタイマイズが可能です。 ※2022年8月時点の検証で確認した結果 ⚫「通知メッセージの表示」にて、任意で、「このアンケートについての説明」や「お問い合 わせ」のURLリンクの表示が可能 ⚫撮影する顔写真の方向は、「正面」、「ランダム」両方またはいずれかを選択可能 ⚫撮影する身分証明書の方向は、「表面」、「表面ランダム」、「裏面※」、「裏面ランダ ム※」、「厚み」から選択可能 ※マイナンバー選択時は個人番号が記載されている

    裏面はスキップ ⚫「ランダム」ではAIで自動で方向が指示されますので方向の選択不可(アクション撮影 とも呼ばれる方法) ⚫サーベイ(アンケート)にて入力する本人情報について、項目及び詳細な内容(必 須項目かどうか、説明、ラベル、初期値、補足説明文)の設定が可能。 ⚫中断しても再開可能な「途中復帰可能時間」を最大24時間で自由に設定可能 ⚫顔写真とIDカードの近似値を判定する際の閾値を設定可能。 29