型で守る設計の魔法!関数型ドメインモデリングで開発をもっと楽しく安全に

型で守る設計の魔法!関数型ドメインモデリングで開発をもっと楽しく安全にのサムネイル

詳細情報

日時 2026年9月21日 22:30 - 22:50
テーマ 関数型ドメインモデリングのすすめ
発表者 somnicatさん
集会名 SW_Arch ソフトウェアアーキテクチャ集会
発表資料 ファイル

VRChatのメタバース空間で、ソフトウェア設計の未来を感じる熱い夜がやってきました!
2026年9月21日に開催された「SW_Arch ソフトウェアアーキテクチャ集会」にて、Webアプリケーションエンジニアのsomnicatさんが登壇。
「関数型ドメインモデリングのすすめ」というテーマで、私たちの開発を劇的に楽にする魔法のような考え方を共有してくれました。
難しいと思われがちな「関数型」と「ドメインモデリング」が組み合わさることで、どんなワクワクする変化が起きるのか、そのエッセンスをたっぷりお届けします!

業務の言葉がそのままコードになる楽しさ

ドメインモデリングと聞くと少し身構えてしまうかもしれませんが、実はとっても人間味あふれる活動なんです。
somnicatさんによれば、それは「業務の専門家と同じ言葉を使ってシステムを表現すること」だそうです。
例えば、会社の業務で「申請」「承認」「差し戻し」という言葉が使われているなら、プログラムの中でもそのままの名前で呼んであげます。
会話と設計、そしてコードが同じ言葉でつながることで、開発者と利用者の心の距離がぐっと縮まるんですね。
「このコードのこの部分は、あの業務のあのルールなんだ!」と直感的に理解できる世界は、想像するだけで楽しくなりませんか?

「ありえない状態」を型で封じ込める魔法

今回の発表で最も驚きだったのが、「Make illegal states unrepresentable(あり得ない状態を表現不可能にする)」という考え方です。
従来の作り方だと、例えば「下書き状態なのに承認者が決まっている」といった、現実ではありえないデータがシステム内で作れてしまうことがありました。
これを防ぐために、私たちは今までたくさんの「もし〜だったら」という条件分岐(if文)を書いて、必死に守ってきたんです。
でも、somnicatさんは「それを型の定義1か所に引き上げよう」と提案します。
状態ごとに専用の型を用意して、それを束ねることで、そもそも「おかしな組み合わせ」が物理的に作れない構造にするのです。
これなら、うっかりミスでバグを生んでしまう心配もありませんし、コンパイラが常に私たちの味方になって守ってくれます!

業務の流れを「パイプライン」で描く

関数型の考え方を取り入れると、データの変化はまるで美しい水の流れのようになります。
「未検証のデータ」が関数を通ると「検証済み」になり、さらに別の関数を通ると「承認済み」になる。
この流れが、関数の入り口と出口の型(シグネチャ)を見るだけで一目でわかるようになるんです。
「承認済みのものは二度と承認できない」といったルールも、関数の形そのものが物語ってくれます。
コードを一行ずつ読み解かなくても、型を眺めるだけで「このシステムで何ができるのか」が伝わってくる。
まるで設計図がそのまま生きているかのような、そんなスマートな開発体験が待っています。

技術の都合を外側に追い出して「純粋」を守る

システムを作っていると、どうしてもデータベースや通信の都合に振り回されがちですよね。
しかし、ドメインモデリングの真髄は「業務のルール」を一番大切な中心に据えることにあります。
somnicatさんは、技術的な都合を徹底的に外側に追い出し、中心部を「純粋」に保つことの大切さを語ってくれました。
純粋な関数は、外の世界(データベースなど)に直接触れることができません。
この「できない」という制約こそが、実はシステムを壊れにくくし、テストを簡単にする最強の武器になるのです。
大切な業務ロジックが、特定の技術に依存せず、いつまでも美しく保たれる。
そんな理想的なアーキテクチャが、関数型の知恵を借りることで実現できるんですね。

コンパイラと一緒に、もっと自由な開発へ

「レビューや記憶で守っていたものを、コンパイラに守らせる」
この言葉には、開発者への優しさが詰まっていると感じました。
人間の記憶力には限界がありますが、型という仕組みを使えば、私たちはもっと創造的な仕事に集中できるようになります。
TypeScriptやKotlin、Rustなど、私たちが普段使っている多くの言語で、この関数型ドメインモデリングは今日からでも始められます。
「何を変えるか」ではなく「何が何であるか」を記述するスタイルへ。
somnicatさんが示してくれたこの道は、私たちの開発をより安全で、より楽しいものに変えてくれるはずです。
皆さんもぜひ、この新しい設計の旅に出かけてみませんか?

発表スライド(PDF)

SW_Arch ソフトウェアアーキテクチャ集会の他の発表もチェック!

VRChatで学ぶ!設計の楽しさを広げるアーキテクチャ雑談議

テストが楽しくなる!関数型アーキテクチャで実現する「美しく強い」設計術

AI時代のエンジニアの価値とは?理論を育てるアーキテクチャの重要性

VRChatで学ぶ!アーキテクト1年生が教える「設計」を楽しく始めるコツ

SW_Arch ソフトウェアアーキテクチャ集会の開催情報・参加方法

SW_Arch ソフトウェアアーキテクチャ集会のポスター

SW_Arch ソフトウェアアーキテクチャ集会

開催日: 2026年9月21日

開催時間: 22:00 - 23:00

開催曜日: 月曜日

開催周期: 毎月第3月曜日

ソフトウェアアーキテクチャについて語る集会です。隔週月曜日、第1, 3月曜日に開催しています。 現役のアーキテクトから、アーキテクチャに興味を持ち始めた初心者の方まで、ゆるっと語りましょう。

ソフトウェアアーキテクチャについて語る集会です。隔週月曜日、第1, 3月曜日に開催しています。 現役のアーキテクトから、アーキテクチャに興味を持ち始めた初心者の方まで、ゆるっと語りましょう。