Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
証券システムを10年Scalaで作り続けるということ - 関数型まつり2026
Search
krrrr38
July 10, 2026
Technology
1.3k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
証券システムを10年Scalaで作り続けるということ - 関数型まつり2026
krrrr38
July 10, 2026
More Decks by krrrr38
See All by krrrr38
クラウド時代における一時権限取得
krrrr38
1
460
FOLIOにおけるAWS活用事例 - SBI Tech Day 2025
krrrr38
0
86
Scramble4 FOLIO栄枯盛衰今昔物語
krrrr38
0
700
Other Decks in Technology
See All in Technology
フロントエンドカンファレンス関西2026 - 速すぎるUIに、待ち時間を
teamlab
PRO
0
220
LLM-as-a-Judgeは本当に信頼できるのか――評価器を評価する話
taka_aki
2
950
Codex を使った障害対応机上演習の実際
orgachem
PRO
0
170
What Is JetBrains Air
x5gtrn
PRO
0
130
JAWSUG TOHOKU 青森支部 「LoGoチャット」のAWS移行で 乗り越えたこと
taketakekaho
0
360
20261017福岡devIO 「AIは"良いダッシュボード"を作れるか?
jtakeda
0
210
ストレスなくAIと付き合いたい!こんなときどうしてる?
namiki64
4
650
AI駆動で「他アプリの音を加工できる」アプリを作った
satomasahiro2005
0
180
フィンテック養成勉強会#68
finengine
0
180
Conditional PED-ANOVA: Hyperparameter Importance in Hierarchical & Dynamic Search Spaces
pfn
PRO
0
150
Benchmarking Disaggregated Serving on vLLM + Dynamo with a Real Coding-Agent Workload
nttcom
1
210
事業成長とデータ活用を止めないためのマネジメントへ挑戦
hiracky16
0
420
Featured
See All Featured
Faster Mobile Websites
deanohume
310
32k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
610
The untapped power of vector embeddings
frankvandijk
2
1.9k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.6k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
330
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
640
Navigating Weather and Climate Data
rabernat
0
560
The World Runs on Bad Software
bkeepers
PRO
72
12k
WENDY [Excerpt]
tessaabrams
14
40k
WCS-LA-2024
lcolladotor
0
900
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.7k
Build your cross-platform service in a week with App Engine
jlugia
234
19k
Transcript
Copyright © 2026 FOLIO Co., Ltd. All Rights Reserved. 証券システムを10年Scalaで作り続けるということ
関数型まつり 2026 / Ken Kaizu @krrrr38
2 本日の流れ • 自己紹介 • 株式会社FOLIO について • FOLIO と
Scala – 開発の歴史 • 証券システムと各コンポーネントの特性 • Part 1: 口座開設・契約管理チームの Scala - 状態を取り扱う • Part 2: 証券口座管理チームの Scala - データ処理 • Part 3: Scala を使い続けるための組織と人 • まとめ 関数型言語の活用事例として本日話をしたいこと ・Scalaをどのように使っているのか ・Scalaを使い続けるための施策
3 自己紹介 • 海津 研 / Ken Kaizu • @krrrr38
• 株式会社FOLIO • 執行役員CTO • フィナンシャルテクノロジー本部 • 株式会社FOLIO ホールディングス • 情報戦略部 • 2018年1月より株式会社FOLIO • バックエンド・インフラがメイン
4 株式会社FOLIO 事業概要 ※当社の事業紹介を目的としたものであり、投資勧誘を意図するものではありません。画像はサンプルです。2026年4月時点の情報です。
5 会社紹介 - 総取扱資産残高・導入先 グループ内総取扱資産残高 4RAP導入先 ※「総取扱資産残高」とは、「FOLIOが直接お客さまに提供する投資一任運用サービスに関連してお預かりしている資産(ROBOPRO 等)」、「銀行・証券会社等の金融機関における、4RAPを活用した投資一任運用サービスの預り資産」、「FOLIOが投資助言業を行 っている金融商品の資産(ROBOPROファンド等)」の合計金額を指します。 ※
2026年6月時点の情報です ※ 2026年4月時点の情報です
改めて、FOLIOでは \ 10年 / Scala を使い続けています
7 どこで Scala が使われている? 証券システム • 口座開設 • KYC(公的個人認証 etc)
• 入出金 • 銀行との繋ぎ込み • 契約管理 • 投資一任契約管理 • 注文管理 • 執行管理 • … バックエンドシステムは ほぼ全てScala
8 Scala 採用の流れ 創業期 • オンライン証券会社を立ち上げる • 証券会社接続 FIX Protocol
• 2015年時点ではJavaかC/C++がデファクト • 言語ネイティブな堅牢性を求めScalaを採用 • Scala2.11, sbt, twitter finagle, apache thrift, java8 • オンプレ環境 共通libraryによるマイクロサービス展開
9 Scala 採用の流れ B2Bビジネス立ち上げ • Scala2.12, akka-http, play framework •
cats, fs2, scala future, akka-actor, refined • EKS, api-gateway, openapi, transfer family 中は堅牢に、外は枯れた技術を用いた安定したサービス提供
10 Scala 採用の流れ ~現在 • Scala2.13, Scala3、sbt2 ビジネスの成熟に合わせ、モダンな技術へ更新を図る
11 サービスに求められる責務とコンポーネント特性 ビジネスドメイン毎のアプリケーションチーム 口座開設チーム … 証券基盤チーム
12 サービスに求められる責務とコンポーネント特性 ビジネスドメイン毎のアプリケーションチーム 口座開設チーム … 金融に関わるユーザー・口座開設・申請・審査といった状態を取り扱う 証券基盤チーム
13 サービスに求められる責務とコンポーネント特性 ビジネスドメイン毎のアプリケーションチーム 口座開設チーム … 証券基盤チーム 全証券口座の大量データ処理を行う
いずれの要件に対しても Scala を活かすことが出来る
15 Part 1 — 口座開設チームの Scala 業務の流れ 1. 申込情報の登録 氏名・住所・本人確認資料…
2. 本人確認 ワ型KYC・eKYC・郵送KYC 3. 反社チェック・口座開設審査 4. 証券口座番号の払い出し 5. 取引可能化 「状態」が本質のドメイン。Scala の型システムで漏れなく表現する
16 状態を持つ集約を取り扱う 「状態」がドメインの本質 • Scalaの型システムを利用 • 例)審査待ちは承認可 • 直和型を使った表現 •
例)sealed trait • 直積型を使った表現 • 例)case class • 型によるエラー表現 • 例)承認は失敗しうる • → 返り値がEither
17 Repository / Usecase 操作 集約毎に一貫性を持たせる • Repositoryは集約を扱う • 操作の結果は型で表現
• Optionを返すなら空になりうる • Effect型はfor式で簡潔に記述 • flatMap / map の糖衣構文 いずれもScalaの言語標準機能で実現可能
18 Part 2 — 証券基盤チームの Scala 投資一任運用の1日のライフサイクル • 注文受注 •
注文をキューイング • 注文締め • 当日注文の確定処理 • システム注文の作成 • 執行・約定処理 • 市場発注・約定取込み • 残高・評価額算出 • 全口座の残高・損益・…を計算 毎日、全口座における金銭計算をズレなく処理する
19 fs2.Stream によるデータ処理 「データの流れ」を実装する • fs2.Streamを利用した実装 • メモリ処理を一定に保つ • 型でリソース開放を保証
• パイプラインは関数合成 「不変条件」の型表現 Refinement types / 篩型 • 業務ルールを型で表現する • 意図を型で伝える • 不正な値は処理させない
20 運用を支える開発ノウハウ • 副作用を正しく型で表現する • エラー有無は型で分かるように • トランザクション境界を見極める • 一貫性のあるデータの取り扱い
• 分散トランザクションを避ける • API呼び出し・DBトランザクション • 綺麗に書けることを強制しない • 処理のわかりやすさ以外も考慮する • 障害時の深い調査も容易にする 型と無理の無い実装で防ぎ、リコンサイルで検証する
21 Part 3 — Scala を使い続けるための組織と人 未経験者を歓迎し、関数型の素養を育てる組織 採用 — Scala
経験者じゃなくても大丈夫 • 2025年度入社バックエンドエンジニア • Python / Go / Java 出身 • Scala経験者は少数派 • FOLIOが成し遂げたいことへの共感 • 「人生を豊かにすることに関わりたい」 • 「 証券システムに関わりたい」 • 「堅牢なシステムを作りたい」 • コーディング面接 • 12種類の言語実装を用意
22 オンボーディング • 言語機能を理解する • 未経験者向け scala_text • 社内書籍共有 •
ドメインを理解する • ドメインマスター講座 • 社内技術を理解する • backend newbie • 社内技術で開発をする • 開発ガイドライン • AI Review・設計書
23 オンボーディング • 言語機能を理解する • 未経験者向け scala_text • 社内書籍共有 •
ドメインを理解する • ドメインマスター講座 • 社内技術を理解する • backend newbie • 社内技術で開発をする • 開発ガイドライン • AI Review・設計書
24 オンボーディング • 言語機能を理解する • 未経験者向け scala_text • 社内書籍共有 •
ドメインを理解する • ドメインマスター講座 • 社内技術を理解する • backend newbie • 社内技術で開発をする • 開発ガイドライン • AI Review・設計書
25 オンボーディング • 言語機能を理解する • 未経験者向け scala_text • 社内書籍共有 •
ドメインを理解する • ドメインマスター講座 • 社内技術を理解する • backend newbie • 社内技術で開発をする • 開発ガイドライン • AI Review・設計書
26 オンボーディング • 言語機能を理解する • 未経験者向け scala_text • 社内書籍共有 •
ドメインを理解する • ドメインマスター講座 • 社内技術を理解する • backend newbie • 社内技術で開発をする • 開発ガイドライン • AI Review・設計書
関数型言語を 活かせる組織になる
28 10 年を踏まえて やりたいこと・守りたいものは、ずっと同じ 変わったもの • チームごとに適正のあるアーキテクチャ • クラウドシステムの利活用 変わらないもの
• Scala をコア開発に使う • 堅牢なシステムを型で守る思想 • 組織を成長させ続けるための開発 • ビジネスを伸ばすための技術活用
次の10年も、 証券システムのコア機能は Scala で守り続ける