こんにちは。スマートバンクで iOS / Android エンジニアをしている nakamuuu です。 先週からスタートした inSmartBank ブログでは、『家計簿プリカ B/43』のモバイルアプリについてもさまざまなトピックをお伝えできればと考えています!
この記事では 9月17日(金)〜19日(日)に開催された iOSDC Japan 2021 に登壇させていただいた話を書いていこうと思います。
iOSDC Japan 2021とは?
iOSDC Japan はiOS関連技術をコアのテーマとした国内最大規模のデベロッパーカンファレンスです。今年は昨年に引き続きオンライン開催でしたが、100本を越えるトークを中心に参加者間での交流や様々なコンテンツを通して大きな盛り上がりを見せていました。
僕自身、これまでも iOSDC Japan には一般参加者として数回参加してきたのですが、今年は初めてスピーカーとして登壇させていただきました。当日、セッションを聞いてくださった皆様、ありがとうございました!
登壇内容の振り返り
セッションでは「シームレスな体験を実現する本人確認フローの構築 〜家計簿プリカB/43でのeKYC開発実例〜」というタイトルで B/43 での本人確認フロー(eKYC)の構築についてお話ししました。
内容は Speaker Deck のスライドや iOSDC の YouTube チャンネル に後日公開予定の動画をご覧いただければと思いますが、このブログでもお話ししたことを簡単に振り返っていきます。
1. 従来の本人確認の課題とeKYCについて
セッションの初めでは eKYC と呼ばれるオンライン完結型の本人確認について、従来の本人確認の課題も含めて前提の説明をしました。
- 従来は主に「対面での本人確認」と「郵送での本人確認」のいずれかの形式で利用者の本人確認をしていた。
- 対面でのチャネルを持たないWebサービスは「郵送での本人確認」を採用してきたが、利用開始までにタイムラグが発生するのが課題であった。
- B/43 のような金融サービスでの本人確認の法的根拠となる「犯罪収益移転防止法」が2018年11月に改正され、オンライン完結型の本人確認(eKYC)の実施が可能になった。
- 犯罪収益移転防止法の改正が、eKYC が金融系のWebサービスを中心に普及していく大きな契機となる。
- B/43 においても本人確認書類と顔写真の撮影を伴う形でオンラインで完結する本人確認(eKYC)に対応している。
2. 家計簿プリカ B/43 での本人確認フローの設計思想
続けて B/43 で本人確認フローを構築するにあたっての設計思想について、外部SDKを採用せずに自前での構築を選んだ経緯を中心にお話ししました。
- 複数のベンダーが品質の高いeKYCのモバイルSDKを提供していて、中には審査ツールや本人確認の業務自体がパッケージ化されたものも存在する。
- 「家計管理の問題解決」をターゲットとする B/43 の利用者の中にはWebサービスの利用に不慣れな方も多い。
- “シームレスなオンボーディング体験” のために自前での本人確認フロー(eKYC)の構築を選択した。
- 本人確認フローの構築においてはサービスの申し込みの一環として溶け込ませるためのデザイン上の考慮に多くの時間をかけた。
- アプリのインストールから申し込み完了までの全体のフローを俯瞰した中で、本人確認だけが分断されたコンテキストになるのを避けたいと考えた。
- 承認フローの最適化を通した運用コストの軽減や、Amazon Rekognition(顔写真解析)を用いた申請内容の正当性の担保など、管理画面を含めたサーバーサイドにおいても多くの工夫をした。
- モバイルアプリだけでなくサーバーサイドや運用のオペレーションも含めて大きくコストをかけて本人確認フローを作り上げていく意思決定をした。
3. iOSアプリでの実装における技術面での工夫 / Tips
ここまでプロダクト寄りの話が続いてきましたが、後半は技術面でのトピックとして各撮影画面での Vision.framework / ML Kit の活用について紹介しました。
- B/43 の本人確認フローは「本人確認書類の撮影」「氏名・住所の入力」「顔写真の撮影」の大きく3つのステップに分かれている。
- 「本人確認書類の撮影」と「顔写真の撮影」でのカメラでの撮影やその画像の解析を伴う部分についての技術面での工夫 / Tipsを紹介する。
- B/43 の本人確認の撮影画面はシャッターボタンを持たず、条件に合致したタイミングで自動で撮影が行われる。
- 本人確認書類と顔写真のそれぞれの撮影に Vision.framework の矩形検出 / ML Kitの顔検出機能を活用した。
- 撮影画面での処理の流れ自体はシンプルで Vision.framework / ML Kit の典型的なサンプルコードとそう大差のない実装。
- 矩形や顔の位置などの情報を元にした “撮影条件” の閾値を探るのに苦労した。
- 撮影条件が厳しすぎるとユーザーが撮影を完了できずに大きな離脱要因になり、逆に条件が緩すぎると本人確認として不適切な画像を扱ってしまう。
- それぞれの撮影ごとに “検出された矩形や顔がどの位置にどういった形で存在すれば撮影完了とするか” の細かな条件を定めている。
- 撮影条件の組み合わせやその閾値は社内テストやユーザーテストを繰り返すことで地道に探っていった。
- AVCaptureSession からリアルタイムに出力される画像は画面上のプレビュー用途のものなので、端末を動かした際などのブレが抑制されていない。
- 撮影条件に合致したタイミングの画像を工夫なく扱うと、ぶれぶれの写真をサーバーにアップロードすることになる。
- Vision.framework / ML Kit から得られる情報が一定時間近似し続けない限りは撮影完了しないように構築することでアップロードされる画像のブレを抑制した。
4. eKYCの自前での運用から得られた成果と今後の課題
最後に自前で構築した本人確認フロー(eKYC)から得られた成果と今後の課題を振り返って、セッションのまとめとしました。
- 本人確認フローの離脱率を低く保ち続けられているのが成果として挙げられる。
- 離脱ポイントの発見やその改善を開発チームの中で一貫して行える体制を築けたのが大きい。
- 一方で他のeKYCのソリューションと比べると、その機能性や信頼性などにまだ改善点があると認識している。
- 機能面であれば、OCRを活用した住所の自動入力や、非接触でのマイナンバーカードの読み取りなどへの対応も考えられる。
- 運用フローの軽減や本人であるかを判定する精度の向上などで、堅牢性や信頼性を高めていく改善も継続して行う必要がある。
…といった流れでセッションを進めさせていただきました。
最後に
今回の登壇で触れた本人確認を含むオンボーディングフローは B/43 のコアとなる機能と同じくらいこだわりを持って作り上げたものです。デザイナーやサーバーサイドエンジニアなど他職種のメンバーからもこの領域についてお話しする機会があると思うのでお楽しみに…!
スマートバンクでは一緒に B/43 を作り上げていくメンバーを募集しています!カジュアル面談も受け付けていますので、お気軽にご応募ください 🙌 smartbank.co.jp