組織をコードのように設計する
アクターモデルとDAOが融合するワークスタイル
著者: 竹洞 陽一郎
Spelldataは、創業時からフルリモートワークを前提にした組織作りと運営を行っています。
その仕組みは、プログラミング言語Erlangの「アクターモデル」と、現代のWeb3における「DAO(自律分散型組織)」の概念を融合させたものです。
中央集権的な管理を排し、個々が自律して動く「コードのような組織」を設計することで、完全在宅勤務でも高い生産性と堅牢性を実現しています。
Erlangとは
Erlangは、並行性と分散システムをサポートする機能言語です。
1986年にエリックソン社のJoe Armstrong、Robert Virding、Mike Williamsによって開発されました。
Erlangは、高度な並行性、フォールトトレランス(耐障害性)、ソフトリアルタイム処理、およびホットスワップ機能を持つことで知られています。
これらの特性は、Erlangが大規模で並行性が重要なシステムに適している理由です。
Erlangは、アクターモデルに基づいた並行プログラミングをサポートしています。
このアプローチでは、独立したプロセスがメッセージを介して通信することで、複数のタスクを同時に実行できます。
また、Erlangは分散システムの開発にも適しており、障害に対する耐性が高くなります。
Erlangは、通信、金融、Web開発、IoTなどの分野で使用されています。
また、Erlangは、WhatsAppやRabbitMQなどの分散メッセージングシステムの開発にも使用されています。
Erlangを知ったのは、私のソフトウェア工学の師匠である、株式会社一の大槻繁さんからです。
確か、Akamaiで働いていた2007年頃だったと思います。
独立したプロセスがメッセージを介して通信するという仕組みに、とても魅了されました。
関数型プログラミング言語である点も心惹かれた要因でした。
アクターモデルとは
アクターモデルとは、並行性と分散システムのための計算モデルで、1973年にカール・ヒューイットによって提案されました。
アクターモデルは、システム内の並行性を管理し、スケーラビリティやフォールトトレランスを向上させることを目的としています。
アクターモデルでは、アクターと呼ばれる計算の基本単位が存在し、アクターは以下の3つの基本的な動作を行います。
- メッセージの送信
-
アクターは、他のアクターに非同期メッセージを送信できます。
このメッセージングは、アクター間の通信と並行性の管理を容易にします。 - メッセージの処理
-
アクターは、受信したメッセージに対して何らかの処理を行います。
この処理は、アクター内で独立して実行され、他のアクターの動作に影響を与えません。
これにより、並行性が維持されます。 - アクターの生成
-
アクターは、新しいアクターを生成できます。
これにより、システムは必要に応じてスケールアウトできます。
アクターモデルは、分散システムや並行プログラミングにおいて、以下のような利点を提供します。
- スケーラビリティ
- アクターの生成が容易であり、システムは必要に応じてスケールアウトできます。
- 並行性の管理
- アクター間の非同期メッセージングにより、並行性が維持され、デッドロックや競合状態が回避されます。
- フォールトトレランス
- アクターが独立して動作し、障害が他のアクターに伝播しないため、システム全体のフォールトトレランスが向上します。
たまたま、2007年にAkamaiの仕事で、アクターモデルの研究で著名な東京大学の米澤明憲先生とお会いする機会がありました。
師匠からErlangを教えてもらったこともあり、アクターモデルについて学び始めたのも、その頃です。
DAO(自律分散型組織)としてのSpelldata
近年、ブロックチェーン技術の発展とともにDAO(Decentralized Autonomous Organization)という言葉が注目されています。
これは「特定のリーダーがおらず、参加者が自律的に意思決定を行い、プログラム(スマートコントラクト)によって運営される組織」のことです。
実は、SpelldataがErlangのアクターモデルを参考に構築してきた組織構造は、このDAOの概念と驚くほど一致しています。
私たちは、株式会社という法的人格を持ちながら、実質的な運営において「実用的なDAO」を実装しています。
アクターモデルとDAOの共通点
Spelldataでは、社員一人ひとりを「アクター」と見なし、以下のようなDAO的アプローチを導入しています。
- シェアードナッシング(Shared Nothing)と分散化
-
DAOやアクターモデルの基本原則は「共有しないこと」です。
従来の中央集権型組織では、上司の承認(共有リソース)がボトルネックになりがちです。
Spelldataでは、各社員(アクター)に権限とリソースを分散させ、他者に依存せずに業務を完結できる「シェアードナッシング」な状態を作っています。
これにより、「上司の承認印を待つ無駄な時間」から解放され、圧倒的な処理速度と快適なワークフローを実現しています。 - スマートコントラクトとしての「業務プロセス」
-
DAOでは「条件Aが満たされたらBを実行する」というルールがプログラムで自動実行されます。
Spelldataにおけるスマートコントラクトは、明確に定義された「業務プロセス」と「ツール連携」です。
勤怠管理、経費精算、購買プロセスなどがZoho Connect等のクラウドツール上でルール化されており、人の恣意的な判断を挟まず、システム的に承認・処理が進みます。 - 非同期メッセージングによる自律協調
-
DAOの参加者が世界中に分散しているように、Spelldataの社員も物理的に離れています。
ここで重要なのが「非同期通信」です。
相手の時間を奪う「会議(同期通信)」を極力減らし、チャットやドキュメント(メッセージ)を送って相手のタイミングで処理してもらう。
これにより、全員が自分のリズムで集中し、最高のパフォーマンスを発揮できます。
ソフトウェアアーキテクチャの組織論への応用
現実世界の事象をプログラミング言語でモデル化することを、「ドメインモデリング」と言います。
通常は、現実世界のビジネスロジックをコンピュータで扱える形に変換し、システムの開発を行います。
Spelldataでのフルリモートワークの仕組みは、その逆の発想に基づいています。
「プログラミング言語(Erlang)やWeb3(DAO)の世界で完成された、優れた効率的なモデルがあるのであれば、逆にそれを現実世界の組織に適用してはどうか?」というアイディアです。
SpelldataがアクターモデルとDAOの融合で実現しようとしていることは以下の通りです。
- 独立性と自律性の強化(社員の裁量)
-
アクターモデルでは、プロセスが独立して動作し、他のプロセスとメッセージを介して連携します。
Spelldataは、社員が自律的に働くことを推奨し、過度な管理や報告業務を減らすことで、個人の独立性を高めています。 - 明確な役割分担(強みへの集中)
-
各アクターが特定のタスクに焦点を当てることで、効率的な処理が可能になります。
組織においても明確な役割分担(ジョブ型雇用)を行い、それぞれのチームや個人が自分の得意分野に集中し、責任を持ってタスクを遂行できるようにしています。 - 高速な意思決定と情報共有(スピード)
-
アクターモデルでは、プロセス間のメッセージングがスムーズに行われることで、高速な意思決定が可能になります。
Spelldataは、社内での情報共有を促進し、ビジネスチャンスを逃さない迅速な意思決定ができる組織を目指しています。 - フォールトトレランスとリカバリー(安定性と助け合い)
-
アクターモデルやブロックチェーンは障害に対して耐性が高く、一部(ノード)に問題が起きてもシステム全体は止まりません。
組織においては、特定の担当者に不測の事態(体調不良や急用)が発生しても、他のメンバーが即座にタスクを引き継げる体制を意味します。
これにより、個人への過度な負担を防ぎつつ、お客様への納期と品質を安定して守り抜くことができます。
結論:持続可能な組織と顧客への価値
Spelldataの組織作りは、ErlangのアクターモデルとDAOの思想を基盤としています。
これは単なるトレンドの追求ではなく、数学的・工学的に証明された「最も効率的で堅牢なシステム」を、人間の組織に適用しようとする試みです。
情報伝達の円滑化、高速な意思決定、そして何より「誰かが倒れてもチームで支え、お客様に迷惑をかけない」という堅牢な基盤(ファウンデーション)。
リモートワークやAI活用が進む現代において、私たちのこの取り組みは、未来の働き方を先取りする有益な事例であると確信しています。