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
73
Scramble4 FOLIO栄枯盛衰今昔物語
krrrr38
0
700
Other Decks in Technology
See All in Technology
全人類(ほぼ)AWS Organizations の上でAWSを利用している、その世界を知る話
htan
1
130
味覇で作るパスタが美味い - 20261001_yabaubuki.dev
livesense
PRO
0
120
More Freedom on the Same Shared GPU Cluster: A Small Team’s Experience with vCluster
nttcom
0
140
契約書画像からの情報抽出に特化した視覚接地モデルを育てる話
sansantech
PRO
1
160
自作バイナリを動かす「入口」8選
puhitaku
1
1.2k
OpenSharing について熱く語る〜AI アセットの共有について〜
kameitomohiro
0
240
AgentCoreで実践するハーネスエンジニアリング
yakumo
1
300
事業活動を AI Ready にする攻めと守りのデータエンジニアリング / data-engineering-for-ai-ready-business
pei0804
7
2.4k
Deep Data Security 機能解説
oracle4engineer
PRO
2
760
実践! SRE × AI - ABEMA における AIOps -
tetsuya28
7
2.7k
ブラウザとサーバーから考えるAI時代のフロントエンド監視
shogo4131
3
720
パッチ更新でterraform initが落ちた日
grimoh
1
110
Featured
See All Featured
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
770
Marketing to machines
jonoalderson
1
5.9k
Code Reviewing Like a Champion
maltzj
529
40k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
The SEO identity crisis: Don't let AI make you average
varn
0
580
How to build a perfect <img>
jonoalderson
1
6.1k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.8k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.2k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
570
Designing Experiences People Love
moore
143
24k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
260
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 で守り続ける