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

第2回 DSP Sandboxで考える銀行システム

第2回 DSP Sandboxで考える銀行システム

講義資料です。

ta28masa

May 28, 2021
Tweet

More Decks by ta28masa

Other Decks in Technology

Transcript

  1. 3 © 2021 IBM Corporation 1-2.DSPとその価値 IBMの提唱する「次世代アーキテクチャ」では、デジタルサービス層がフロントサービスの柔軟・迅速な開発を可能にします。 デジタルサービスプラットフォーム(DSP)は、このデジタルサービス層をクラウド上に構築、共同利⽤するソリューションです。 [ 価値

    ] フロントサービスとの容易な接続性 オープンAPIにより外部接続を標準化 事前準備された機能・サービス 重要な差別化要素となる 新しい⾦融サービス開発への専念が可能 デジタル開発の効率化 共通サービスの共同利⽤ 安全・安⼼のクラウド利⽤ DSP基盤 ソフトウェア / コンテナ層 アプリケーション層 CICD 資⾦移動 ⼝座管理 諸届 共通機能 ⽣体認証 多要素認証 認証 AI 分析 既存業務 新業務 ユーティリティ部品 API API API API API API フロントサービス (特定銀⾏) ホワイトラベル (銀⾏間) 外部サービス (FinTech 等) IBM⾦融業界 ソリューション 基 幹 系 連 携 バ ック エ ン ド ア ダ プ タ ー 銀⾏ 勘定系システム 共同化 基幹系システム フロントサービス層 デジタルサービス層 ビジネスサービス層
  2. 4 © 2021 IBM Corporation 1-3.DSP Open API Sandbox環境 DSP

    OpenAPI Sandboxは、このDSPの応答を擬似的に体験できる環境です。 本シリーズでは、この環境を⽤いてどのようなことができるかを「実際に動かして」体験していただきます。 基盤 ソフトウェア / コンテナ層 アプリケーション層 CICD 資⾦移動 ⼝座管理 諸届 共通機能 ⽣体認証 多要素認証 認証 AI 分析 既存業務 新業務 ユーティリティ部品 API API API API API API 基 幹 系 連 携 バ ック エ ン ド ア ダ プ タ ー Sandbox 擬似応答環境 第1回 第2回 第3回 第4回 第5回 2 課題に寄り添った継続的改善 1 早期のプロトタイピングと洗練 3 より具体的で実現可能性の⾼い企画⽴案 コスト、リスク、サービスインまでの時間の低減が期待できます。 実際に動くプロトタイプをでの実証と、早期のフィードバックから、 より的確なゴールへ到達できるようになります。 利⽤者に近い⽴場の⽅が迅速かつ継続的に改善を続けることで、 社内外のシステム評価を⾼めることができます。 広がる活躍の機会
  3. 5 © 2021 IBM Corporation 1-4.全5回のゴール 本シリーズ全5回で、APIを使⽤したフロントサービス開発に関して、知識・スキルを広げていただけるように準備しています。 第1回 さわってみようDSP Sandbox

    • APIとは何か、なぜ良いのかを語れる • フロントサービス層の銀⾏システムになったつもりでAPIを呼び出せる ⾃分だけの経験、知識、問題意識、 アイディアと掛け合わせて 今までにない顧客体験を「共創」しよう︕ APIはわかった︕ でも実際どうやって 使うの︖ 第3回 DSP Sandboxでメッセージングアプリ残高照会 • DSP SandboxのAPIを使って、残高照会サービスを構築できる • 他のAPIと組み合わせた銀行サービスについて具体的にイメージできる 第4回 DSP Sandboxでモバイルアプリを作ろう • DSP Sandboxのサービスを呼ぶモバイルアプリを作れる • モバイルアプリのアーキテクチャについて語れる 第5回 自分だけのSandboxを作ろう • Open APIを活用して自在に応答を操作できるスタブを作れる • APIファースト開発について語れる 第2回 DSP Sandboxで考える銀行システム 銀行の各種サービスで、システムがどう連携するかをイメージできる、図示できる 銀行のシステム間の「責務」について語れる
  4. 9 © 2021 IBM Corporation 2-2. システムの動きを記述する⽅法 前ページで登場した図は、「シーケンス図」という、UML(Unified Modeling Language)の⼀種であり、

    登場⼈物やコンポーネント間のやりとりを時間軸に沿って表現する図です。 時間の流れ 登場⼈物 各登場⼈物にとっての時間軸 各登場⼈物が仕事をしている時間 要求 応答
  5. 10 © 2021 IBM Corporation 2-3. シーケンス図に含まれる情報 シーケンス図には、ITの⼈だけが扱うものと考えてしまうのはもったいない、⾮常に多くの情報が含まれています。 ⾝近なシステムについて試しに書いてみると、意外と知らなかったことが判明します。 [ユーザ体験]

    - 画⾯遷移 - 画⾯項⽬ - 操作 など [システム境界] - 接続元・接続先 - 授受データ など、 外から⾒た挙動や、 内部処理も整理 [通信タイミング、頻度] UI/UX設計 機能設計 セキュリティ設計 パフォーマンス設計 基盤配置
  6. 11 © 2021 IBM Corporation 2-4. 少しだけハンズオン : PlantUMLで描いてみましょう @startuml

    サンプル title サンプル hide footbox box フロントエンド actor "ユーザ" as User end box box "<color:#ffffff>フロントサービス層</color>" #4cafea participant "インターネットバンキング等" as IB end box box "<color:#ffffff>デジタルサービス層</color>" #2d70ba participant "APIゲートウェイ" as APIGW participant "普通預金MS" as MS_Depo <<Sandbox>> end box box "<color:#ffffff>ビジネスサービス層</color>" #07215c participant "勘定系" as GL end box group 第1回ハンズオン autonumber "[000]" User ++ User -> APIGW ++ : 入出金明細照会(APIキー,口座番号,期間) APIGW -> APIGW : APIキー検証 APIGW -> MS_Depo ++ : 入出金明細照会(口座番号,期間) MS_Depo --> APIGW -- : 明細 APIGW --> User -- : 明細 User -- end group @enduml Web版のPlantUMLで、書いてみましょう。(コメント欄に流します) 1) PlantUML Web Serverにアクセス http://www.plantuml.com/ 2) 右のコードをコピー、ブラウザに貼り付け、[Submit]押下 (1)貼る (2)押す (3)表⽰
  7. 13 © 2021 IBM Corporation 3-1. はじめに 以降、シーケンス図を使いながら銀⾏のユースケースを⾒ていきます。 是⾮、第⼀回でアクセスしたDSP Open

    API 開発者ポータルのAPI仕様と⾒⽐べてみてください。 基盤 ソフトウェア / コンテナ層 アプリケーション層 CICD 資⾦移動 ⼝座管理 諸届 共通機能 ⽣体認証 多要素認証 認証 AI 分析 既存業務 新業務 ユーティリティ部品 API API API API API API 基 幹 系 連 携 バ ック エ ン ド ア ダ プ タ ー 擬似応答環境 https://ibm.biz/portal_devcom
  8. 15 © 2021 IBM Corporation 3-2. 認証・認可(1) – 契約者⼝座情報照会 API製品

    > DSP Open API > 顧客管理MS > 契約者⼝座情報照会 こちらのAPIで、契約者をキーに⼝座番号などを取得できます。
  9. 16 © 2021 IBM Corporation 3-2. 認証・認可(1) – 契約者⼝座情報照会 DSP

    Open APIにおいてAPI毎の特徴を捉えるためには、common(Request/Response)Headerの下を⾒ます。 契約者⼝座情報照会では、UserIDを送ると⼝座情報が取得できます。 (リクエストに⼝座情報を含めると、その⼝座の情報が取得できます。)
  10. 17 © 2021 IBM Corporation 3-3. 認証・認可(2) 指紋認証、顔認証 先程の指紋認証と⽐較しましょう。顔認証(FaceID)も同様です。 Webアプリケーションサーバの代わりにBFFがAPIキーを保持しています。

    (1)指紋OKなら トークンを使⽤ (2)トークンOKなら APIキーを使⽤ (3)APIキーOKなら アクセスを認可 ※1つの実装例です。 初回登録時に トークンを⽣成・保管
  11. 18 © 2021 IBM Corporation 3-4. 認証・認可(3) FinTechからのログイン FinTech、ここでは⾃動で銀⾏残⾼・明細を取ってきてくれる家計簿アプリをイメージしてください。 APIゲートウェイの外が「銀⾏管轄外」となることから、OAuth2.0などを実装することが推奨されます。

    ※1つの実装例です。 (1)FinTechは⾃⾝の 認証を実装 (2)アクセストークンを 使⽤してアクセス 初回登録時・有効期限切れの タイミングでOAuth2.0等で アクセストークンを提供 (3)外部APIGWは トークンを検証 「他の顧客の情報に アクセスさせない」 APIゲートウェイの 責務
  12. 19 © 2021 IBM Corporation 「Webスクレーピング」 はAPIを使わない接続⽅法です。責務の違いと内包する問題を考えてみましょう。 (余談) FinTechとWebスクレーピングで繋ぐ 銀⾏側の対処不要

    ⼀般顧客向けインバンアプリとして稼働 セキュリティー懸念 ⾦融機関のアカウント情報を FinTech企業が預かる システム負荷 ステートフルで複数画⾯に亘るリクエスト を⼀⻫取得され、キャパシティー超え 不安定性 画⾯を変更するとクロウラーは正常稼働し ない上、銀⾏のシステム障害に⾒える ガバナンス喪失 接続元を把握できない 「欧州決済サービス指令(PSD2)」 「2017年改正銀⾏法」 (1)FinTechが顧客の インバンID/PWを保管 ユーザは初回登録時に インバンのID/PWを提供 (2)インバンは通常の Webアクセスと区別しない ログイン時でなく、夜間などに ⼀⻫に取得する可能性あり
  13. 20 © 2021 IBM Corporation ※1つの実装例です。 3-5. モバイルバンキングの振込 最初に振込限度を超過 していないかをチェック&表⽰

    登録振込 or 都度振込 ⾦融機関照会はしない︖ → 応答時間・保守性・⼀貫性の天秤 振込 振込開始 本⽇のお振り込み ¥0 振込限度額 20万円 新規振込先 [振込先選択] お⺟さん 〇〇銀⾏ 1234567 ⼤家さん △△銀⾏ 0123456 〇〇銀⾏ 〇〇銀⾏ [振込先⾦融機関選択] 〇〇銀⾏ [メニュー] [振込先]
  14. 21 © 2021 IBM Corporation 3-5. モバイルバンキングの振込(つづき) ※1つの実装例です。 各種チェック :

    ⽀店存在確認、 振込額以上に残⾼が残っているか 宛先銀⾏へ⼝座存在確認 ⼿数料計算 実環境では 勘定系での会計処理も 〇〇⽀店 〇〇⽀店 [振込先⽀店選択] 〇〇⽀店 DSPを使って⽀店検索も可能 [振込先詳細⼊⼒] ⼝座番号 : ___ ⾦額 : _____ 確認 [振込内容確認] 〇〇銀⾏〇〇⽀店 ⼝座番号 : 1234567 ⾦額 : 5000円 ⼿数料 : 100円 名義⼈ : ハコザキ タロウ パスワード: ____ 振込実⾏ [振込完了] 振込を受け付けました トップへ
  15. 22 © 2021 IBM Corporation 3-6. 広がるユースケース ペイメントアプリのチャージ 法⼈向けFinTech 未来の営業店のあり⽅とは︖

    タブレットを使った接客など 新しい働き⽅との融和 ペーパレス推進、タブレット・モバイル活⽤ ワークフローシステムとの連携 デジタルサービス層が提供する機能を使って何ができるか、アイディア次第でユースケースは広がります。 未来のATMとは︖ 更なる安全性、利便性、ユーザーフレンドリーなど
  16. 25 © 2021 IBM Corporation 4-2.次回予告 第3回 DSP Sandboxでメッセージングアプリ残高照会 •

    DSP SandboxのAPIを使って、残高照会サービスを構築できる • 他のAPIと組み合わせた銀行サービスについて具体的にイメージできる
  17. 26 © 2021 IBM Corporation 4-3.次回以降の予告 第2回 DSP Sandboxで考える銀行システム •

    銀⾏の各種サービスで、システムがどう連携するかをイメージできる、図⽰できる • 銀⾏のシステム間の「責務」について語れる 第3回 DSP Sandboxでメッセージングアプリ残高照会 • DSP SandboxのAPIを使って、残高照会サービスを構築できる • 他のAPIと組み合わせた銀行サービスについて具体的にイメージできる 第4回 DSP Sandboxでモバイルアプリを作ろう • DSP Sandboxのサービスを呼ぶモバイルアプリを作れる • モバイルアプリのアーキテクチャについて語れる 第5回 自分だけのSandboxを作ろう • Open APIを活用して自在に応答を操作できるスタブを作れる • APIファースト開発について語れる 第一回 さわってみようDSP Sandbox • APIとは何か、なぜ良いのかを語れる • フロントサービス層の銀⾏システムになったつもりでAPIを呼び出せる ⾃分だけの経験、知識、問題意識、 アイディアと掛け合わせて 今までにない顧客体験を「共創」しよう︕ APIの使い⽅はピンと来た。 動くものを作りたい︕︕ APIがどこから呼ばれ、どのように組み込まれていくか、のイメージがついたので、 次からいよいよ動くものを作りましょう。
  18. 27 © 2021 IBM Corporation 4-4.次回の準備 • DSP Open API開発者ポータルへのアクセスをお願いします。

    第⼀回で作成したAPIキー(Client-IDとClient-Secret)を準備しておいてください。 • IBM Cloudアカウント(無料)の取得をお願いします。 3分程度のビデオによるアカウントの取得⽅法もご参照ください。 • LINE開発者登録をお願いします(⼿順)。 • LINEアプリをお持ちでない⽅は、ご⾃⾝のスマートフォンにLINEをインストールしてください。 • (推奨) GitHub経由でソースコードをお渡ししますので、GitHubアカウントの作成こちらを推奨します。 次回使⽤するコードはテキストファイル1ファイルのみのためWebブラウザ経由・ログインなしでのダウンロードでも 問題ありません。 • 基本的に前提知識・学習が無くても良いよう計画していますが、下記の知識があるとよりスムーズです。 Node.js Node.jsのプログラムを配布して演習に使用 します。コードを読めるとスムーズです。 https://nodejs.org/ja/about/ https://qiita.com/non_cal/items/a8fee0b7ad96e67713eb IBM Cloud Functions (FaaS) 配布したプログラムの稼働環境です。 https://www.ibm.com/jp-ja/cloud/functions LINE Messaging API LINEからのメッセージを扱います。 https://developers.line.biz/ja/services/messaging-api/ Webhook LINE Messaging APIからWebhookで上記 Node.jsプログラムに送ります。 https://qiita.com/soarflat/items/ed970f6dc59b2ab76169 https://kintone-blog.cybozu.co.jp/developer/000283.html お⼿元のLINEにて 動作確認を していただきます︕
  19. 29 © 2021 IBM Corporation Appendix 1.いただいたコメント イベント開催前に押さえておくべき基礎知識を周知されてはいかがでしょうか Open APIはじめての⽅々には、ハンズオンは少し難易度⾼いかな︖と思いました。

    何をやっているのかの理由が⽂書に書かれていると良いかと思いました 当⽇のイベント動画を公開していただけると助かります。 推奨の参考リンクを事前にご紹介できるよう、準備します。 なるべく事前準備を必須としないことで、気軽にお越しいただける事を期待している事情もあります。 第4、5回では事前にインストールいただく項⽬もありますので、早めにガイドできるように致します。 まず触れて動くものを⾒ていただくことで理解を深めていただきたい、との期待を込めています。 講義後にご⾃⾝の興味に従って⾊々と試してみる(第⼀回であれば別のAPIも試してみる、など)ことを おすすめします。 表現の配慮が⾜りず、申し訳ありません。 今後のハンズオンに反映させていただきます。 申し訳ありません。現時点でインターネット経由での公開の予定はございません。
  20. 30 © 2021 IBM Corporation Appendix 2. 関連リンク コンテンツ ご参考ページ

    1. シーケンス図 https://it-koala.com/sequence_diagram-1775 https://www.itsenka.com/contents/development/uml/sequence.html https://www.ogis-ri.co.jp/otc/swec/process/am- res/am/artifacts/sequenceDiagram.html 2. PlantUMLガイド https://plantuml.com/ja/sequence-diagram 3. Visual Studio Code https://azure.microsoft.com/ja-jp/products/visual-studio-code/ 4. PlantUML (VS Code Extention) https://marketplace.visualstudio.com/items?itemName=jebbs.plantuml (Windows) https://qiita.com/opengl-8080/items/98c510b8ca060bdd2ea3 (Mac) https://qiita.com/wariichi/items/e55a728b10b310c822f2 5. 2017改正銀⾏法 https://www.kantei.go.jp/jp/singi/keizaisaisei/miraitoshikaigi/sankankyougik ai2019/fintech/dai1/siryou3.pdf https://thefinance.jp/law/170906 6. PSD2 https://www.imes.boj.or.jp/research/papers/japanese/kk36-3-3.pdf https://en.wikipedia.org/wiki/Payment_Services_Directive 7. OAuth2.0 https://ja.wikipedia.org/wiki/OAuth https://www.atmarkit.co.jp/ait/articles/1708/31/news124.html
  21. 31 © 2021 IBM Corporation 免責事項 公開している資料は個⼈の⾒解であり、必ずしも所属法⼈の⽅針や意向を表すものではありません。 IBM Developer Dojoは開発者の⽅を対象に、IBM

    Cloudを主とした技術情報をお伝えする⽬的で開催し ております。講師や運営スタッフにより、開催毎に最適と判断した内容でお届けしています。 ハンズオンを伴う講義はお客様の費⽤負担が発⽣しない環境と⼿順にてご案内しております。 クラウド上に構築した製作物は、お客様ご⾃⾝で適切に削除をお願い致します。 クレジットカード情報の登録を伴わない場合は費⽤は⼀切発⽣しませんが、ご登録いただいているお客様 はご注意下さい。 講師陣は皆様のご利⽤状況を個別に確認することはできません。ご理解とご協⼒をお願い致します。 当シリーズではサードパーティのサービスやソフトウェア(LINE API、React Native、VS Codeなど)を使 ⽤しますが、本番環境での使⽤をこれに限定するものではありません。 ご⾃⾝の状況等を鑑み、適切にご判断いただきますよう、お願い申し上げます。 当シリーズで提供するソースコードは講義⽤のものです。実際の⾦融機関で使⽤するにはセキュリティや エラーハンドリングなど数々の考慮、設計、実装が必要です。このハンズオンでは『動くものを作ってみ る』ことに主眼を置いていますので、そういった点は含まれないことをご了承ください。 本⽇はご参加いただき、誠にありがとうございました。