YAPC::Hakodate 2025 にスピーカー、そしてスマートバンク社がブーススポンサーをしているのもあり、技術広報の目的も持って参加して参りました。本当はもっとブログを早く書きたかったのだけど、福岡から帰ってきた2日後にインフルエンザにかかってしまい、その後ブログを書くタイミングを逸してしまい年末に筆をとっております。
最近のYAPCには YAPC::Hiroshima から参加させていただいています、去年の YAPC::Hakodate の際は登壇させてもらったのですが、今回もプロボーザルを採択いただいて2年連続で登壇する機会をいただけて大変ありがたかったです。
発表内容について
「クレジットカードの不正を防止する技術」というタイトルで発表させていただきました。今年自分が担当していたチームで行ってきたカード決済にまつわる不正に対して検知、対策をどのように行ってきたかをまとめた内容になります。
去年はクレジットカードの製造にまつわる話をさせていただいたのですが、それの反響が大きかったのもあり、自分としてはそれの続編的な形で、皆さんが普段決済しているカードの身近だけど実は知らないを知れる内容にしたいなと思って、資料を作ったりしていました。
不正対策のシステム自体は、初期の頃のベースのシステムを自分が作っていたのですが、サービス規模が大きくなり、不正対策に対してもっと力を入れないといけないフェーズに入ったので、この1年で検知システムの大幅なアップデートや、クレジットマスター攻撃への対処、運用面でもオペレーターの方が操作しやすいように管理ツールも改修したりと様々な取り組みを行ってきたので、それの一旦を公開することができて、良かったなと思っています。
不正対策、特に決済はVisaの電文仕様やカードの特性にも左右されるので、ドメイン知識が求められる領域で、やってくるデータやその傾向を見極めながら泥臭くチューニングする必要があるのですが、ちゃんと対策をすれば着実に成果が出る部分でもあるので、エンジニアリングの本質が詰まっていて非常にやりがいがあるなと感じています。
発表までの過程
実は24年中は組織のマネジメントや採用 / 技術広報に多くのリソースを使っていたため、現場で開発をするという機会はほとんどありませんでした。しかし、25年は年始に不正被害が続いたのもあり、不正対策に力を入れていくことにし自分も開発で手を動かしながら解像度高く課題解決を行えたので、その成果が今発表に繋がったというのがあります。
そして25年はスマートバンク社でもAIを活用した開発がめちゃくちゃ進んだのもあり、そういった意味ではこのタイミングで開発にガッツリ入りながら手触り感を持ってAIコーディングができたのも個人的には良かったと思っています。スマートバンクでは委員会という構造でAI活用を推進する環境整備や予算の策定なども行なっています。
不正対策は開発で決済や入金といったコアな部分を触る機会が多いです。仕様の調査やバックエンドのロジック改修だけでなく、そのロジックをチューニングするフロントエンドの管理機能もセットで構築する必要があり、Claude Code を複数立ち上げてバックエンドのロジックを直しながら、それに合わせた管理ツールも並行して直していくというスタイルが個人的にしっくりきましたね。
発表後の反響
今回もかなりディープなテーマの発表だったのですが、たくさんの方に聞いていただけて良かったです。
発表時にXで実況的に感想をくださった方、発表後に話しかけていただいた皆さんありがとうございました。発表の度に毎回思いますが、大変励みになります。
想像以上に決済時のフローいっぱいあってビックリしてる #yapcjapan #yapcjapanA
— akiroom (@akiroom) November 14, 2025
クレカの認証・不正検知って国際ブランドが持ってるでっけぇ中央サーバーで判定してると思ってました
— Ratete (@RateteDev) November 14, 2025
カード発行会社(イシュア)がするんだね#yapcjapan #yapcjapanA
3DセキュアのDって、3 DomainsのDだったんだ #yapcjapanA #yapcjapan
— syumai (@__syumai) November 14, 2025
3Dセキュアの話をした時に3DセキュアのDがドメインのDなのかと呟いている人が意外と多く、意外と知られていないんだなーと思うなど。 下記ですこし頂いた質問のフォローアップをさせていただきます。
加盟店のIDなどの情報が変わってしまうのどういう理由か?
資料中にものせていますが、決済時に送られてくるパラメータはイシュア側ではほとんどコントロールできず、アクワイアラや加盟店様側の設定が反映されることも多いため、特定のタイミングからいつも来ていた加盟店名と違う加盟店名で決済されるようになった、などはよくあります。
加盟店様も複数のアクワイアラと契約されている場合もあるので、登録毎に情報が違ったり、加盟店様の商材が変わる場合もあるので、その際にパラメータが変わるなどが考えられます。 また、オーソリの時点では加盟店名しか送られて来ず、加盟店IDが null になることもあり、クリアリングが来ないと正確に特定できない場合もあるのです。
3Dセキュアを実施しているが不正が起きる場合はどんな時か?
話す時間のボリューム的に省いたのですが、3Dセキュアもパスワードを入力して認証を求めるチャレンジフローと、リスクが低いと判定しパスワードを求めないフリクションレスフロー(みなし認証)が存在し、フリクションレスフローに進めるかどうかをイシュアがコントロールしています。 決済金額や決済カテゴリ、Visaからのスコアなど色んな要素を判定に使いますが、判定ロジックをすり抜けてみなし認証で決済が通り、結果それが不正だったというパターンもあるので、一概に3Dセキュアだから安心という訳ではないのです。

感想
20分枠の発表で、いざ話し始めてみると想定していたよりも時間を使ってしまい最後慌ただしくなってしまったのが少し反省ですが、非常に楽しく発表させていただきました。 また、初日の最後の発表でしたが、発表を終えたあとの2日目や懇親会は大いに楽しませてもらいました。改めて、オーガナイザーやスタッフの方々ありがとうございました。
LTがあったり、懇親会 + 飲み会に発展して盛り上がれるのは本当にYAPCの良いところだなあと思います。個人的にお話ししてみたかった人の何人かと接点が作れたのも個人的には収穫でした。 また、会社としてもスポンサーとしての関わりや、登壇者が3人、LTが2名と発表する機会をもあり、少しでもYAPCを盛り上げることができたのではと思っています。
個人的にはせっかく2年連続で話す機会をいただけたので、来年も登壇できたらと思っています。 まだまだ、カードや決済関連のディープなネタがあるので、東京開催にむけて来年もしっかり技術研鑽していけたらと思います。