テックブログ

ネット銀行アプリ開発の技術スタック — モバイルバンキングの設計思想とセキュリティ要件

ネット銀行アプリ開発の技術スタック — モバイルバンキングの設計思想とセキュリティ要件

ネット銀行アプリの開発は、高いセキュリティ要件と24時間365日の可用性、そして優れたUXの両立が求められる、金融ITの中でも特に難易度の高い領域です。本記事では、金融情報システム開発に20年以上携わってきた知見をもとに、モバイルバンキングアプリの技術スタック、セキュリティ実装、API設計の全体像を解説します。

ネット銀行の種類と技術的な分類

「ネット銀行」と一口に言っても、その技術アーキテクチャはビジネスモデルによって大きく異なります。開発に着手する前に、まずどのカテゴリに該当するかを正確に把握することが重要です。

ネオバンク(NEOBANK)

ネオバンクは、既存の銀行免許を持つ銀行がBaaS(Banking as a Service)プラットフォームを提供し、異業種の事業会社が自社ブランドで銀行サービスを展開するモデルです。国内では住信SBIネット銀行が2020年からBaaS事業を本格展開し、JALやヤマダデンキなど20社以上とパートナー提携を進めています。

技術的な特徴として、ネオバンクのアプリ開発ではBaaS提供銀行のAPIを呼び出す形になるため、フロントエンド開発とAPI連携設計が主な技術領域となります。勘定系システムはBaaS側が保有するため、パートナー企業側の開発負担は比較的軽い一方、APIの仕様制約の中でいかにUXを差別化するかが腕の見せどころです。

チャレンジャーバンク

チャレンジャーバンクは、自ら銀行免許を取得し、フルスタックで銀行システムを構築するモデルです。国内ではみんなの銀行(ふくおかフィナンシャルグループ)が代表例で、Google Cloud上にクラウドネイティブな勘定系システムを構築した点で業界に大きなインパクトを与えました。

チャレンジャーバンクの開発では、フロントエンドからバックエンド、勘定系コアまですべてのレイヤーを自社設計する必要があります。技術的な自由度が高い反面、FISC安全対策基準への準拠、金融庁の監督指針への対応など、規制面での要件も自社で充足しなければなりません。

BaaS(Banking as a Service)プラットフォーム

BaaSプラットフォーム自体を構築・提供する側の開発もあります。住信SBIネット銀行、GMOあおぞらネット銀行、みんなの銀行の3行が国内の主要プレイヤーです。BaaSプラットフォームの開発では、マルチテナントアーキテクチャ、API管理基盤、パートナー向けのデベロッパーポータルなど、プラットフォームエンジニアリングの知見が不可欠です。

実際のプロジェクトでは、これらのモデルが混在するケースも珍しくありません。既存の地方銀行がデジタルチャネルを刷新する場合、既存勘定系は維持しつつ、フロントエンドのみモダン化するという「ハイブリッド型」のアプローチを採用することが多いのが実情です。

フロントエンド技術スタック

ネット銀行アプリのフロントエンド選定は、単なる技術的な好みではなく、セキュリティ要件・保守性・人材確保の観点から総合的に判断する必要があります。

ネイティブ開発(Swift / Kotlin)

メガバンクや大手ネット銀行では、依然としてiOS(Swift)・Android(Kotlin)のネイティブ開発が主流です。その理由は明確で、生体認証(Face ID / Touch ID / 指紋認証)やセキュアエンクレーブへのアクセス、プッシュ通知の細かな制御など、OSレベルのセキュリティ機能をフルに活用できる点にあります。

実際のプロジェクトでは、ネイティブ開発を選択する場合、iOS / Android それぞれに専任チームを配置するため、開発コストは1.5〜2倍になります。しかし、トランザクション処理の応答速度やオフライン時のセキュアなデータ保持など、金融アプリに求められる厳格な要件を満たすには、ネイティブの優位性は依然として大きいといえます。

クロスプラットフォーム開発(Flutter / React Native)

近年、特にネオバンクやBaaSパートナーのアプリ開発では、Flutterの採用が急速に増加しています。みんなの銀行がFlutterを採用して国内チャレンジャーバンク初のアプリをリリースしたことは、金融業界でのFlutter採用を後押しする大きなきっかけとなりました。

Flutterが金融アプリで評価される理由は以下の通りです。

  • 独自レンダリングエンジン: Skiaエンジンによるピクセル単位の描画制御が可能で、OS間のUI差異が生じない
  • Dart言語の型安全性: null safety対応により、金融計算でのランタイムエラーリスクを低減
  • プラットフォームチャネル: ネイティブコード(Swift / Kotlin)との橋渡しが可能で、生体認証やセキュアストレージへのアクセスも実装できる
  • 単一コードベース: iOS / Android / Webを1つのコードベースで開発でき、保守コストを大幅に削減

一方、React Nativeは既存のWeb開発チーム(JavaScript / TypeScript経験者)が多い組織では有力な選択肢です。ただし、金融アプリではブリッジ経由のネイティブ通信がパフォーマンスのボトルネックになるケースがあり、特にリアルタイムの残高更新や高頻度のAPI通信が必要な画面では注意が必要です。

BFF(Backend For Frontend)設計

モバイルバンキングアプリの開発において、近年必須のアーキテクチャパターンとなっているのがBFF(Backend For Frontend)です。

BFFは、モバイルアプリ専用のバックエンドレイヤーとして機能し、以下の役割を担います。

  • API集約: 複数のマイクロサービスからのレスポンスを、モバイルアプリに最適な形に整形して返却
  • 認証トークン管理: アクセストークンのリフレッシュやセッション管理をサーバーサイドで実施
  • デバイス固有のロジック: iOS / Androidのプッシュ通知トークン管理、デバイスフィンガープリント検証
  • レート制限: クライアントごとのAPIコール制限を実装し、不正アクセスの緩和策として機能

実際のプロジェクトでは、BFFはNode.js(Express / Fastify)やGo言語で実装されることが多く、API Gatewayの背後に配置する構成が一般的です。BFFを導入することで、モバイルアプリ側の実装をシンプルに保ちながら、バックエンドの複雑性を吸収できるため、開発チーム間の責務分離も明確になります。

バックエンド・API設計

ネット銀行のバックエンドは、勘定系システムとの接続、外部サービスとの連携、トランザクション管理など、金融固有の要件に対応する必要があります。

API設計: RESTとGraphQL

金融APIの設計において、現時点での主流はREST APIです。その理由として、以下の点が挙げられます。

  • 監査証跡の取得容易性: HTTPメソッド(GET / POST / PUT / DELETE)とURIの組み合わせでAPIの意図が明確になり、アクセスログからの監査証跡抽出が容易
  • キャッシュ戦略: HTTPキャッシュヘッダーを活用した標準的なキャッシュ制御が可能
  • FAPI準拠: Financial-grade API(FAPI)のセキュリティプロファイルがOAuth 2.0 + REST APIを前提に設計されている
  • 既存システムとの親和性: 勘定系システムやSWIFTネットワークとの接続で広く利用されているプロトコル

GraphQLは参照系の画面(ダッシュボード、取引履歴一覧など)で部分的に採用されるケースがあります。特にBFFレイヤーでGraphQLを採用し、モバイルアプリからの柔軟なデータ取得を実現しつつ、バックエンドのマイクロサービスとはRESTで通信するというハイブリッド構成も見られます。ただし、更新系(振込・決済)のAPIにGraphQLを採用する金融機関はほぼなく、これはmutationの監査やレート制限の実装が複雑になるためです。

マイクロサービスアーキテクチャ

大規模なネット銀行システムでは、機能ドメインごとにサービスを分割するマイクロサービスアーキテクチャが一般的です。典型的なサービス分割は以下のようになります。

  • 認証・認可サービス: OAuth 2.0 / OIDC準拠のトークン発行・検証
  • 口座管理サービス: 口座開設、口座情報照会、残高照会
  • 振込・送金サービス: 他行振込、行内振替、定期振込
  • 通知サービス: プッシュ通知、SMS、メール配信
  • 取引履歴サービス: 取引明細の保存・検索・CSV出力
  • 外部連携サービス: 全銀システム接続、電子決済等代行業者向けAPI

サービス間通信には、同期通信にはgRPCまたはREST、非同期通信にはApache KafkaやAmazon SQSなどのメッセージキューを使い分けます。特に振込処理のようにトランザクションの整合性が重要な処理では、Sagaパターンを用いた分散トランザクション管理が必要になります。

API Gateway

API Gatewayはネット銀行システムの「玄関口」として、以下の機能を集約します。

  • ルーティング: リクエストを適切なマイクロサービスに振り分け
  • 認証・認可: JWTの検証、スコープベースのアクセス制御
  • レート制限: APIごとの呼び出し回数制限
  • リクエスト / レスポンス変換: 外部向けAPIと内部APIのフォーマット変換
  • ロギング・監査: すべてのAPI呼び出しの記録

実装技術としては、Kong、AWS API Gateway、Apigeeなどが採用されています。金融機関ではオンプレミスとクラウドのハイブリッド構成が多いため、マルチ環境に対応できるKongやNGINX Plusの採用実績が多い印象です。

セキュリティ要件と実装

ネット銀行アプリの開発において、セキュリティは最も重要かつ広範な要件です。2025年7月には金融庁が監督指針を改正し、フィッシング耐性のある多要素認証の必須化を打ち出すなど、求められるセキュリティ水準は年々高まっています。

認証・認可の設計

金融アプリの認証基盤は、一般的なWebサービスとは異なるレベルのセキュリティが要求されます。

FAPI(Financial-grade API)準拠

FAPIはOpenID Foundationが策定した、金融グレードのAPIセキュリティプロファイルです。全国銀行協会の「オープンAPIのあり方に関する検討会」報告書でも、「OAuth 2.0に加え、FAPIへの準拠が望ましい」と明記されています。みんなの銀行は国内銀行として初めてFAPI 1.0 Advanced認定を取得し、業界のベンチマークとなりました。

FAPIが通常のOAuth 2.0と異なる主なポイントは以下の通りです。

  • PKCE(Proof Key for Code Exchange)の必須化: 認可コード横取り攻撃の防止
  • リクエストオブジェクトの署名: JWS(JSON Web Signature)による認可リクエストの改ざん検知
  • Holder of Key(HoK)トークン: アクセストークンとクライアント証明書を紐付け、トークン窃取時の不正利用を防止
  • mTLS(Mutual TLS): クライアント・サーバー双方向の証明書認証

生体認証とパスキー

2025年の金融庁監督指針改正により、ログイン、出金、出金先口座の変更といった重要操作時にフィッシング耐性のある認証が求められるようになりました。具体的には以下の実装が推奨されています。

  • パスキー(FIDO2 / WebAuthn): 公開鍵暗号に基づく認証で、フィッシングサイトでは認証が成立しない仕組み
  • デバイス内生体認証: Face ID / Touch ID / 指紋認証をローカルで実行し、認証結果のみをサーバーに送信
  • リスクベース認証: デバイス情報、IPアドレス、行動パターン(行動的生体認証)から不正の兆候を検知し、追加認証を要求

実際のプロジェクトでは、生体認証とパスキーを組み合わせた「パスワードレス認証」への移行が加速しています。ただし、高齢者など生体認証デバイスを持たないユーザーへの代替手段の確保も設計段階で考慮する必要があります。

通信経路のセキュリティ

金融アプリの通信経路では、多層防御(Defense in Depth)の考え方が基本です。

  • TLS 1.3の強制: TLS 1.2以下の接続を拒否。Certificate Pinningにより中間者攻撃を防止
  • mTLS(相互TLS認証): API GatewayとBFF間、マイクロサービス間でクライアント証明書による相互認証を実施
  • WAF(Web Application Firewall): SQLインジェクション、XSS、APIアビューズの検知・遮断
  • DDoS対策: AWS Shield Advanced / Cloudflareなどの専用サービスでL3/L4/L7レイヤーのDDoS攻撃を緩和

アプリケーションレベルのセキュリティ

モバイルアプリ自体のセキュリティ対策も重要です。

  • ルート検知 / Jailbreak検知: 改ざんされた端末での動作を検知・制限
  • コード難読化: ProGuard(Android)/ Swiftコンパイラ最適化による逆コンパイル対策
  • セキュアストレージ: iOS Keychain / Android Keystore を使用した機密データの暗号化保存
  • 画面キャプチャ防止: 残高表示画面など機密情報表示時のスクリーンショット・画面録画の制限
  • デバッガ検知: 動的解析ツール(Frida等)のアタッチを検知してアプリを終了

オープンバンキングとAPI連携

2018年の改正銀行法施行により、日本でもオープンバンキングの制度的基盤が整備されました。ネット銀行アプリの開発においては、自社アプリの開発だけでなく、外部事業者へのAPI提供を見据えた設計が求められます。

電子決済等代行業の仕組み

銀行法では、電子決済等代行業を以下の2類型に分類しています。

  • 参照系サービス(1号業務): 口座情報の取得。家計簿アプリ、会計ソフトなどが該当
  • 更新系サービス(2号業務): 振込指図の伝達。決済代行サービスなどが該当

2024年5月時点で電子決済等代行業者は122社が登録されており、銀行側はこれらの事業者との契約締結義務と、API提供に関する基準の公表義務を負っています。

技術的な観点では、参照系APIと更新系APIでは求められるセキュリティレベルが大きく異なります。参照系ではOAuth 2.0による委任認可で十分なケースが多い一方、更新系では前述のFAPI Advanced準拠に加え、トランザクション署名(利用者の意図確認)が必要となります。

API連携の技術的実装

オープンバンキングAPIを提供する際の技術要件は以下の通りです。

API仕様の標準化

全国銀行協会が策定した「オープンAPI推奨電文仕様」に準拠することが推奨されます。仕様はRESTful API形式で、JSON形式のリクエスト / レスポンスが標準です。APIドキュメントはOpenAPI Specification(Swagger)形式で公開し、デベロッパーポータルでのAPI試行環境(サンドボックス)の提供も求められます。

同意管理(Consent Management)

利用者がどの電子決済等代行業者に、どの口座の、どの範囲のデータアクセスを許可したかを管理する同意管理基盤が必要です。実装としては、OAuth 2.0のスコープを活用しつつ、より細粒度のアクセス制御を実現するためにリッチ認可リクエスト(RAR: Rich Authorization Requests)の採用も検討に値します。

Webhookとイベント通知

リアルタイム性が求められる連携(入金通知、残高変動通知など)では、ポーリングではなくWebhookベースのイベント通知を実装します。Webhook配信の信頼性を担保するため、リトライ機構、べき等性の確保、署名検証の仕組みを組み込む必要があります。

可用性・パフォーマンス要件

「銀行が止まる」ことは社会インフラの停止を意味します。ネット銀行アプリの開発では、一般的なWebサービスとは桁違いの可用性とパフォーマンスが要求されます。

可用性目標: 99.99%(フォーナイン)

ネット銀行のバンキングシステムに求められる可用性は99.99%(年間ダウンタイム52.6分以内)が一般的な目標値です。これを実現するための設計原則は以下の通りです。

  • マルチAZ / マルチリージョン構成: 単一のデータセンター障害で全面停止しない冗長構成
  • アクティブ-アクティブ構成: 複数拠点で同時にリクエストを処理し、障害時の切り替え時間をゼロに近づける
  • サーキットブレーカーパターン: 障害が発生したマイクロサービスへのリクエストを自動的に遮断し、カスケード障害を防止
  • グレースフルデグラデーション: 一部サービスの障害時でも、参照系機能(残高照会)は継続提供し、更新系機能(振込)のみを一時停止するといった段階的な縮退運転

DR(Disaster Recovery)設計

FISC安全対策基準に基づき、大規模災害時のシステム復旧計画を策定する必要があります。

  • RPO(Recovery Point Objective): データ損失許容量。勘定系データはリアルタイムレプリケーションでRPO=0を目指す
  • RTO(Recovery Time Objective): 復旧目標時間。参照系は4時間以内、更新系は24時間以内が一般的な基準
  • 定期的なDR訓練: 年1回以上の切り替え訓練を実施し、手順書の実効性を検証

パフォーマンス要件

モバイルバンキングアプリのパフォーマンスは、UXに直結する重要な非機能要件です。

  • API応答時間: 参照系APIは200ms以内、更新系APIは500ms以内(P95)
  • 同時接続数: 給与振込日(25日前後)のピーク時に通常の3〜5倍のトラフィックに耐えられる設計
  • オートスケーリング: Kubernetes(EKS / GKE)を活用したPodの自動水平スケーリング
  • CDN活用: 静的アセット(約款PDF、ヘルプコンテンツなど)はCDNで配信し、オリジンサーバーの負荷を軽減

金融ISACとの連携

金融ISAC(Information Sharing and Analysis Center)は、日本の金融機関によるサイバーセキュリティ情報の共有・分析を行う組織です。ネット銀行を運営する上では、金融ISACへの参加を通じて以下の活動が推奨されます。

  • 脅威情報の共有: 不正アクセスの手口、フィッシングサイトの情報、マルウェアのIOC(Indicators of Compromise)の共有
  • インシデント対応の演習: 金融ISACが主催するサイバー演習への参加
  • セキュリティベンチマーク: 業界全体のセキュリティ水準と自社の対策レベルの比較

実際のプロジェクトでは、金融ISACから共有されるIOC情報をWAFやSIEMに自動反映する仕組みを構築し、新しい脅威への対応速度を高めている金融機関も増えています。

まとめ

本記事では、ネット銀行アプリ開発の技術スタックを、フロントエンドからバックエンド、セキュリティ、オープンバンキング、可用性設計まで網羅的に解説しました。

ネット銀行アプリの開発は、技術的な難易度だけでなく、金融規制への準拠、セキュリティ要件の充足、24時間365日の安定運用という三重の要求を同時に満たす必要がある、極めてチャレンジングな領域です。特に2025年以降は、FAPI準拠の認証基盤構築やパスキー対応、金融庁のフィッシング対策強化指針への対応など、セキュリティ面での要件がさらに高度化しています。

こうした高い要求水準に対応するためには、金融業界特有のドメイン知識と、最新の技術トレンドの両方を兼ね備えたエンジニアリング体制が不可欠です。テンファイブ株式会社は、金融情報システム開発に20年以上にわたって携わり、TISインテックグループ、東京スター銀行、三菱総研DCSなど金融機関向けの開発実績を積み重ねてきました。ネット銀行アプリの新規開発やモダナイゼーション、セキュリティ基盤の構築についてご相談がございましたら、お気軽にお問い合わせください。

テンファイブ株式会社 公式サイト