SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Developers Summit 2026 セッションレポート

証券システムをゼロから作るには? RubyとGoで「複雑性」を切り分けるブルーモ証券のアーキテクチャ

【20-B-7】RubyとGoでゼロから作る証券システムー 高信頼性が求められるシステムのコードの外側にある設計と運用のリアル

 金融業は厳しい規制産業であり、証券システムの開発には膨大な法令やルールへの対応が求められる。そのため、既存のベンダーパッケージを導入するのが一般的な方法とされてきた。しかし「Developers Summit 2026」において、ブルーモ証券株式会社の取締役CTOである小林悟史氏は、制約条件を正しく見極めれば、モダンな技術を用いたゼロからの内製開発は十分に可能であることを示した。本稿では、同社がRuby on RailsとGoという2つの言語を組み合わせ、スピードと整合性を両立させたアーキテクチャの全体像と、トラフィック急増やシステム間の連携に立ち向かった事例を紹介する。

厳しい制約条件の下で、既存パッケージに頼らないUI/UXを追求

 証券会社を創業して金融サービスを立ち上げるには、金融商品取引法や個人情報保護法、犯罪収益移転防止法など、数多くの法律や業界団体のルールに従わなければならない。従来、金融機関のシステム開発において外注中心の多重下請け構造が一般的だったのは、既存ベンダーのパッケージを導入すれば、規制の多くの部分に対応できるという背景があったからだ。

 しかし小林氏は「既存のパッケージを入れるだけで多くのルールに対応できますが、我々のような小さい会社だと、なかなかそういうこともすぐにはできません」と述べる。

ブルーモ証券株式会社 取締役CTO 小林悟史氏
ブルーモ証券株式会社 取締役CTO 小林悟史氏

 せっかくゼロから作り上げるのであれば、使いやすいUXで本格的な長期投資ができるという価値をユーザーに届けたい。ブルーモ証券が目指したのは、本格的な長期投資をスマホで手軽に体験できるネイティブアプリの構築だ。米国株やETFに対象を絞ることでドメインを限定しつつ、将来のスケールを見据えると、システムが1つの巨大なモノリスになって身動きが取れなくなることは回避したかった。そのため、立ち上がりのスピードと、内製開発においてメンバーがモチベーションを維持して開発を続けられるモダンな技術選定が必要不可欠だった。

「3つの複雑性」をマッピングして導き出した技術選定

 このような背景のもと、スマホアプリのUI/UXを損なわないよう、フロントエンドにはクロスプラットフォームで一貫した開発ができ、投資アプリとして十分なパフォーマンスを発揮できるFlutterを採用。またインフラには、将来的なマルチクラウドへのポータビリティ確保や、自動復旧・オートスケールの仕組みを整えるため、Kubernetesを導入した。

フロントエンドとインフラの技術選定 フロントエンドとインフラの技術選定
フロントエンドとインフラの技術選定

 技術選定でもっとも迷ったのは、ビジネスロジックを構築するバックエンドの言語選定だった。ここで小林氏らは、ソフトウェア開発においてビジネスロジックレイヤーの採用技術を決めるための考え方である「本質的複雑性」と「偶有的複雑性」という観点を、「本質的複雑性」「機能面における偶有的複雑性」「技術面における偶有的複雑性」の3つに分解して検討。「本質的複雑性」とは取引ロジックや税制対応など、対象となるドメインそのものの難しさ、「機能面における偶有的複雑性」は本人確認や通知など、対象としたドメインに付随する機能面の複雑さや難しさ、「技術面における偶有的複雑性」は言語の制約や環境構築といった採用した技術に起因する難しさだ。

 小林氏は「これらの複雑さをいかにして解決できるかという点が、事業の勝敗を左右します」と語り、この3軸で主要言語をマッピングした図を提示。各言語のメリットとデメリットのトレードオフを客観的に評価し、アーキテクチャの選定へとつなげていったことを説明した。

「本質的複雑性」「機能面における偶有的複雑性」「技術面における偶有的複雑性」のマッピング
「本質的複雑性」「機能面における偶有的複雑性」「技術面における偶有的複雑性」のマッピング

 こうした分析の結果、Ruby on Railsはミドルウェアを選定する必要がなく、強力なエコシステムと豊富なライブラリ(Gem)によって、認証や本人確認の実装に伴う「機能面における偶有的複雑性」を迅速に解消できるという強みが、改めて浮き彫りになった。しかし一方で、動的型付けの特性から、一定の規模感があるチームでドメインロジックを記述していくと「技術面における偶有的複雑性」を誘発しやすいという懸念があった。

 それとは対照的に、Goは言語としての表現力が制限されており属人性が低いことから、長期にわたり保守しやすく、チームの規模が拡大しても問題が起こりにくい。つまり「本質的複雑性」を安定して維持することができる。ただし、シンプルな言語であるがゆえに愚直に大量のコードを書く必要があり、「機能面における偶有的複雑性」の面では不利となる。

Ruby on RailsやGoをはじめとした、各言語の強みと弱み
Ruby on RailsやGoをはじめとした、各言語の強みと弱み

次のページ
Ruby on RailsとGoの強みを活かした合理的なアーキテクチャ

この記事は参考になりましたか?

Developers Summit 2026 セッションレポート連載記事一覧

もっと読む

この記事の著者

森山 咲(編集部)(モリヤマ サキ)

CodeZine編集部所属。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

川又 眞(カワマタ シン)

インタビュー、ポートレート、商品撮影写真をWeb雑誌中心に活動。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/24322 2026/06/15 08:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング