こんにちは、GMOあおぞらネット銀行でエンジニアをしているT.Kです。
少し前からChatGPTが大きな話題となりましたが、まだ私の業務には直接接点は持てていない状況ですが、現在の作業が落ち着いたら利用シーンを想定して何某仕組みを構築してみたいと妄想している日々です。
最近の主な仕事は昨年構築した分析基盤の利用シーンが増えてきた事もあり、こちらに関係した作業を日々対応しています。当社分析基盤自体は利用開始から1年超が経ち、利用出来るデータ量も増え利用できるシーンがかなり広くなってきた事が要因です。
とは言え、社内利用はまだまだこれからと言う状況の為、実績作りを兼ねて、当社金融犯罪対策室からあると助かると言われた『不正口座ネットワーク可視化』機能を構築してみました。今回はこちらに関してブログを書いていきたいと思います。
まだ社内で少しお披露目した程度の状況ではありますが、比較的社内では高評価を頂いているので、AML業務の負荷軽減&精度向上に貢献できればと期待しいる機能となります。
取組みの背景
分析基盤とAMLスコアリングモデルに関しては、以前のブログで少し触れている事柄になりますが、今回の取組みはコチラに機能を追加する試みとなります。
昨年のAMLスコアリングモデル機能展開以降、分析基盤の活用拡大の活動を中心に作業を行い、各チームからヒヤリングを元に連携データのバリエーションを増やし、社内レポート等への利用の道筋は見えて来てはいる状況でしたが、実業務利用まで持っていくモデルケースを増やしたく、今回の取組みに着手しました。
前述の通り、お題となる『不正口座ネットワーク可視化』と言う文言のみから出発した為、どのような機能であるべきかの調査からとなりました。また、取組み自体が正式な開発依頼では無い為、私の空き時間を利用してのコソコソプロジェクトとしてスタートとなりました。
不正口座ネットワーク可視化とは
"不正口座ネットワーク"とはその名の通り、不適切な取引が行われている口座間取引を意味します。そして、その取引関係を簡易に確認出来る仕組みを構築する事が、今回の『不正口座ネットワーク可視化』の目標となります。
各金融機関では、各機関の基準で不正口座として判断した口座を凍結するなどの対応を行いますが、不正口座と取引のある口座も同様に怪しいと考える事がベースコンセプトとなっています。
"不正口座ネットワーク"の調査時に、複数の海外サービスを確認しましたが、機能だけではなく魅せ方も非常に素晴らしく、将来的にはぜひ参考にしたいと感じるサービスが多くありました。
少し脱線しました。話を戻したいと思います。今回の取組みに当り、不正口座と取引のある口座の明確な呼称が見当たらなかった為、当社では疑惑口座と仮称しました。下記は簡単な不正口座と疑惑口座のイメージとなります。
仮に当行口座Bが不正口座認定されると、当行口座Bと取引のある口座(グレー)群を疑惑口座として色付けを行います。次に疑惑口座他行口座Eと取引のある当行口座Cも関連口座として紐付けを行い、必要時に担当者にその情報を提示する事を初期ゴールとして設定しました。
また、現状は特定のリストベースで疑惑口座取引表示を行っていますが、疑惑口座を整理した事で、当行の口座全体に同様にフィルタリングを掛ける事が可能となります。
事前準備
1. 調査
不正口座ネットワーク可視化機能開発に当り、最初に取り掛かったのは下記2点の調査・確認でした。
1-1.想定するデータが当社に存在するのか
想定データは大きく分けて2種、不正口座データと取引データと考えました。
不正口座データは当社担当部署が白黒を付与している情報なので懸念はありませんでしたが、取引データに関しては利用を想定する下記データがどのような形で存在するかが懸念でした。
No |
項目 |
---|---|
1 |
仕向銀行コード |
2 |
仕向支店コード |
3 |
仕向口座番号 |
4 |
被仕向銀行コード |
5 |
被仕向支店コード |
6 |
被仕向口座番号 |
7 |
取引金額 |
8 |
取引日時 |
調査の結果、当社が被仕向けとなるデータに欠落が存在しましたが、それらは当社要因ではなく外部要因の為、将来の課題とし存在するデータを利用して今回の仕組み構築を進める事としました。
1-2.存在する場合どのように取得・整理するのか
データの取得に関しては、必要なデータが複数テーブルに分散された状況ではありましたが、担当部門の方に協力頂く事で、なんとか整理を行うことが出来ました。
最終的に不正口座ネットワーク可視化で利用する主なテーブルは下記4種としました。
No |
テーブル名 |
説明 |
---|---|---|
1 | 不正口座検知履歴 | 審査部門による結果履歴 |
2 | 不正口座 | 不正口座検知履歴からNG対象のみを保存 |
3 | 入出金履歴 | 各種必要な取引情報を集約 |
4 | 疑惑口座 | 不正口座と取引を行っている口座 |
2. 利用サービス検討、及び期待効果の整理
当初、今回の機能構築にはDataFlowの利用を考えていたのですが、諸々検証を行ったところ当社環境下ではDataFlowワークベンチが想定通り挙動しなかった為、データ連携時の仕組みと同様にCloud Function利用方針としました。
※原因は、当社が設定しているセキュリティが主な要因であり、通常は利用に問題はありません。
処理の流れとしては、既存のデータ連携完了メッセージをPub/Subで受け取る仕組みとしました。
今回の取組みにおける期待効果は、新しい角度からのデータを担当者に提供する事による『AML業務の精度向上』となります。
前回の取組みでは、担当者の判断を教師データとしたスコアを算出しましたが、今回は疑惑口座との取引状況、及び不正口座との一致属性情報などを表示できるように構成を行いました。
対応にあたり気を付けたのは、出来るだけ少ない画面・機能で作業を完結できることを念頭に置きました。
開発作業
開発は下記流れで作業を行いました。
1. テーブル作成
一旦、仮置きとなりますが想定データを保存する為のテーブルを作成しました。
当初は確定のつもりで作成した各テーブルですが、後続処理を行っていく間に改善すべき事柄が明確となり、結局最終的にはかなりダイナミックに変更する事になりました。
2. Pub/Sub作成
次に、ロジック起動用のトリガーとしてPub/Subを作成しました。
今回の仕組みの正規リリースでは既存Pub/Subをトリガーとしますが、開発時に利用すると他機能も実行されてしまう為、デモ用のPub/Subを用意しました。Pub/SubやCloud Schedulerには、手動で処理を起動する仕組みがあるので、開発時には利用すると便利です。
3. Google Cloud Storage用意
実際にBigQueryへデータを登録する為の処理を、実行するCloud Functions内にSQLを記述する事も可能ですが、コードの可読性やSQL管理、及び個人的な拘りからサイズの大きいSQLは外部ファイルへ切り出し管理する構成としました。
Cloud Functionsは比較的デプロイに時間が掛かるサービスですが、外部ファイルにSQLを切り出す事で少しデプロイの必要性を低減しています。
4. Cloud Functions作成
今回のCloud Functionsでは、実行対象SQL情報をBigQueryに、実際に実行するSQLをGoogle Cloud Storageに切り出した事でかなりシンプルな構成となりました。
5. 画面作成
当初Looker Studioの機能を十分に理解せずに、画面作成に着手したのですが、Looker Studioで画面作成を進める内にデータをうまく作成すると簡単に特定情報と連動したデータを見せる事が出来る事がわかり、集計SQLやテーブル定義を複数回再作成しました。
各処理実行時間
不正口座ネットワーク可視化の仕組みは日次で実行されますが、今後のデータ量増加による負荷向上を考慮して現時点での日次処理完了目標を1分以内としました。
メイン処理にBigQueryを利用する為、かなりマシンパワーで押しきれるかと考えていたのですが、構築当初は10分掛かっても完了しない状況でした。原因は全て実行するSQLにあった為、永続関数の利用を止めたり、VIEWテーブルを利用したりと、社内SQLマスターにアドバイス頂き全面的に見直しを行う事で、全体処理時間を平均45秒程度まで改善する事が出来ました。
処理名 |
処理時間 |
---|---|
不正口座整理 | 5秒 |
疑惑口座整理 | 10秒 |
取引データ整理 | 5秒 |
その他処理 | 15秒 |
まとめ
今回の取組みは"不正口座ネットワーク可視化"と言うキーワードから、あるべき姿を想像して全てを構成した為、アウトプットが当社担当者のイメージとどの程度一致しているかが最大の不安要素でした。結果として、新しい角度からアプローチしているデータである事と、既存の仕組みを踏襲している事で担当者からは上々評価を頂きました。
現在は、担当者側で改修要望を整理頂いており、それらの改修後あたりで既存業務への組込みを進めて頂く予定となりました。特殊な事情での取組みであった為、通常はあり得ないSTEPを経ての取り組みである事が不安要素の大きな原因ではありますが、メイン担当者1人(私)で約1ヵ月程度の工数ででINからOUTまでを出せるクラウド(GCP)サービスは偉大だなと感じました。
今回の取組みで整理を行った各種データは他機能でも有用である為、社内分析基盤活用が促進されるよう有効に利用していきたいと考えています。
ーーー
一緒にGMOあおぞらネット銀行で働いてくれる仲間を募集しています。
社内勉強会はもちろん、GMOグループの勉強会にも参加できます。ご興味のあるエンジニアの方は、当社採用ページをぜひ一度ご覧ください。