椿 一生(ZIKUU Project)
Version: 2025-10-09
要約(Abstract)
現代のWebアプリケーション開発は、React、Next.js、GraphQL、Prisma、Socket.io、Zustandなど、異なる思想・抽象・流儀をもつ多数のフレームワークの寄せ集めによって成り立っている。
それぞれの技術は個別には成熟しているが、システム全体として見ると統一的な設計思想を欠き、開発者は「ドメインの設計」よりも「異なる技術を接続する作業」に多くの労力を費やしている。
本論文では、NeXT/Apple が 1990 年代に提唱した WebObjects/OpenStep の思想を現代Web技術上に再構築する試みとして、ZIKUU Web Architecture(ZWA) を提案する。
ZWA は、DomainEventBus, Repository, Editing Context, Domain-aware Component という少数の抽象により、UI・データ・通信・状態管理・イベントを統一的なドメイン語彙の上で扱う。
本提案はデザインパターンの集合ではなく、「思想を身体化した設計」を目指すものである。
ZWA は、技術の多様性を活かしつつ、システム全体に一貫した「世界観」と「美意識」をもたらすことを目的とする。
1. 序論(Introduction)
Web技術はこの20年間で爆発的に多様化した。
開発者は、ReactによるUI、GraphQLやRESTによる通信、ZustandやReduxによる状態管理、Socket.ioによるイベント伝達などを組み合わせ、システムを構築している。
しかしこれらは、それぞれ異なる思想・抽象レベル・流儀の上に設計されており、統一的な世界観を共有していない。
その結果、開発者はドメイン設計よりも「異なるツールの調停」に時間を費やし、コードベースは「技術のパッチワーク」と化す。
本研究が提案する ZIKUU Web Architecture(ZWA) は、思想を技術に優先させ、設計における「世界観の整合」を再び取り戻すことを目的とする。
2. 歴史的背景:WebObjects の世界観
1990年代後半、NeXT/Apple が開発した WebObjects および OpenStep は、UI・データ・通信・分散通知を一つのオブジェクトモデル上で統合した画期的な環境であった。
2.1 WebObjects の構成要素
機能領域 | コンポーネント | 役割 |
---|---|---|
UI | WOComponent | HTMLテンプレートとObjective-Cクラスを1対1対応させ、UIとロジックを統一管理 |
データ | EOModel | オブジェクトとDBテーブルのマッピングをモデルとして定義 |
通信 | PDO(Portable Distributed Objects) | ネットワーク越しにオブジェクトを透過的に共有 |
通知 | NSDistributedNotificationCenter | プロセス間・マシン間イベントをObserverモデルで伝達 |
この構造により、開発者は「UI・データ・通信・通知」を単一の抽象レイヤで扱うことができた。
また、KVC(Key-Value Coding)、Delegation、Informal Protocol といった統一拡張機構により、少数のクラスで柔軟な拡張が可能だった。
3. 現代の課題
現代のWebアプリケーションは、UI(React/Vue)、状態管理(Zustand/Redux)、通信(REST/GraphQL/WebSocket)、データアクセス(Prisma/TypeORM)など、
多数の異なる技術を組み合わせることで成立している。
これらはそれぞれ優れた技術であるが、思想が統一されていないため、全体として一貫性を欠く。
開発者は、ツールごとに異なる「流儀」を覚え、接着コードや中間層を介して統合せざるを得ない。
この構造的分断こそが、現代Web開発の最大の非効率要因である。
4. 提案:ZIKUU Web Architecture(ZWA)
ZWA は、WebObjects/OpenStep の思想を継承し、現代Web技術上に再構築したアーキテクチャ憲章である。
以下の原則を中核に据える。
- 世界観の統一:UI・データ・通信・イベントを共通語彙と抽象で統一する。
- 思想中心の設計:技術よりも思想を先に定義する。
- ドメインモデル中心:全層で単一の型体系と言語を共有する。
- 観測可能な同期:状態変化はすべてイベント(Observerモデル)で扱う。
- UI=ドメインの窓:1コンポーネント=1ドメイン。
- 編集文脈(Editing Context):ローカル編集と差分同期を標準機構化。
- 抽象の昇華:REST/GraphQLなどの様式差をRepository/EventBusに吸収。
- 美意識:動作するだけでなく、構造が整合していることを価値とする。
5. コア抽象と構造
抽象名 | 役割 |
---|---|
DomainEventBus | 通信様式を隠蔽したObserverモデル。全イベントを統一語彙で発行。 |
Repository | ドメインオブジェクトへの唯一の窓口。データ取得・更新・購読を統一。 |
Editing Context | クライアント側のローカル編集とSaga的コミット管理。 |
Domain-aware Component | ドメインと1対1対応するUIコンポーネント。購読・操作を内包。 |
これら4要素により、UI・通信・永続化の差異を完全に抽象化する。
6. 対応関係(過去→現代→ZWA)
概念 | WebObjects | 現代技術 | ZWA 再構成 |
---|---|---|---|
UI | WOComponent | React/Angular | Domain-aware Component |
データ | EOModel | Prisma / TypeORM | Domain Model + Repository |
通信 | PDO | GraphQL / gRPC | Repository経由の型共有通信 |
通知 | NSDistributedNotification | Socket.io / PubSub | DomainEventBus |
状態 | EOEditingContext | Redux / Zustand | Editing Context |
7. 最小構成例
7.1 DomainEventBus
class EventBus {
private map = new Map<string, Set<Function>>();
subscribe(event: string, handler: Function) {
(this.map.get(event) ?? this.map.set(event, new Set()).get(event))?.add(handler);
}
publish(event: string, payload: any) {
this.map.get(event)?.forEach(h => h(payload));
}
}
export const DomainEventBus = new EventBus();
7.2 Repository(概念例)
class TicketRepository {
async getById(id: string) { /* REST/GraphQL の背後実装 */ }
async updateTitle(id: string, title: string) {
const updated = await this.getById(id);
DomainEventBus.publish("TicketUpdated", updated);
}
}
UI層は通信様式を知らず、RepositoryとEventBusのみを利用する。
8. 実装モデル(階層構造)
UI (Domain-aware Component)
↓
Repository Port
↓
Application / Editing Context
↓
Domain Model
↓
Infrastructure (ZDC, EventBus Adapter)
上位層は不変であり、通信や永続化の実装を交換しても影響を受けない。
9. 考察
ZWAは、設計を「思想的整合」と「大粒度抽象」に基づいて再構成するものである。
多様なツール群の上に再び一本の哲学的軸を通し、WebObjects的な統一性を現代技術上で再現する。
これにより、開発者はライブラリ間の“接着”ではなく、ドメイン語彙を中心とした設計行為に集中できる。
10. 関連研究・位置づけ
本研究は、Evans (2004) の Domain-Driven Design に通じる思想を基盤としつつ、
システム全体の世界観整合性と美意識に重点を置く点で独自である。
また、Bonérらによる Reactive Manifesto (2014) の「反応性・観測性」原則をUI・通信層にまで拡張している。
ZWAは、WebObjectsに代表されるオブジェクト指向設計の精神を、型安全かつ非同期なWeb環境に再適用する試みである。
11. 結論
ZIKUU Web Architecture は、現代Web開発の複雑なツール群を統合し、
少数の抽象(DomainEventBus/Repository/Editing Context/Domain-aware Component)に基づく
思想的に統一されたアーキテクチャモデルを提示した。
本提案により、開発者は通信・状態・データアクセスを超えた統一的なドメイン思考に基づいて
アプリケーションを設計できる。
ZWA は、WebObjects の理念を現代に再生し、
「設計とは哲学の具体化である」という原点を取り戻すことを目的とする。
参考文献
- Evans, E. (2004). Domain-Driven Design: Tackling Complexity in the Heart of Software. Addison-Wesley.
- Bonér, J., Farley, D., Kuhn, R., & Thompson, M. (2014). The Reactive Manifesto.
- Apple Computer, Inc. (1996–2001). WebObjects Developer Documentation.
- 椿 一生 (2025). ZIKUU Web Architecture Charter. ZIKUU Project 内部文書.