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.2k
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
450
FOLIOにおけるAWS活用事例 - SBI Tech Day 2025
krrrr38
0
47
Scramble4 FOLIO栄枯盛衰今昔物語
krrrr38
0
690
Other Decks in Technology
See All in Technology
俺の仕事は AIに奪われないし、たぶんその BIも要らない
hikaruri
0
500
beyond jj: config & tools ecosystem
indirect
0
500
開発投資の期待値を上げるプロダクトロードマップづくり ~プロダクトエンジニアが越境して事業を伸ばす~
kekekenta
1
190
HHKBエバンジェリストになる方法
941
0
110
HRC_Frontend_Conference_Fukuoka_2026.pdf
ts020
0
730
DEFCON34-Write-up_HYCu-MYCu
daikiokazaki
0
160
AIに任せた品質は、誰が見立てるのか - AI時代のテストマネジメント
nakanao
2
1.9k
山手線を徒歩で一周してわかった、 位置情報アプリは「足」が最強のデバッガー
hinakko
0
160
品質と信頼性を地続きにする
grimoh
0
520
AIによるクリエイティブ生成を行う上での試行錯誤
plaidtech
PRO
0
160
AI 時代のスタートアップエコシステ厶から考究する技術的負債との向き合い方
m3m0r7
PRO
3
2.1k
データ_AIの事業の勝敗をわけるもの
nek0128
1
400
Featured
See All Featured
The World Runs on Bad Software
bkeepers
PRO
72
12k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.6k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Building the Perfect Custom Keyboard
takai
2
870
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
46k
Side Projects
sachag
456
43k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.9k
Paper Plane
katiecoart
PRO
4
53k
Writing Fast Ruby
sferik
630
63k
Designing for Performance
lara
611
70k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
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 で守り続ける