Skip to content

CAD Development Roadmap

目次案

  1. 概要
  2. 全体アーキテクチャマップ
  3. 機能領域カタログ
  4. 推奨実装順序
  5. 統合優先順位
  6. Drafting から cad-core への移行方針
  7. 機能依存関係マップ
  8. リスクと注意点
  9. 最終到達像
  10. 実装運用ガイド

1. 概要

この roadmap の目的

  • 既存の途中実装 CAD を、cad-core を中心としたドメイン駆動構造へ段階的に統合する。
  • 機能追加とリファクタリングを同時進行させる際の、依存順序と統合ポイントを明確化する。
  • UI 実装中心の開発から、ドメイン中心の継続可能な開発体制へ移行する。

現在の状態

  • 既設 CAD の機能は拡張されているが、UI コンポーネント層にロジックと API 呼び出しが残る。
  • cad-core には interaction、semantic、versioning、permissions、plugin などの中核が揃いつつある。
  • Drafting 側との責務重複が残り、二重実装が発生しやすい。

今後の方針

  • 新規開発は原則 cad-core に集約する。
  • Drafting は互換レイヤーとして最小化し、機能単位で撤去する。
  • persistence、permissions、collaboration、plugin を platform 層として分離する。

2. 全体アーキテクチャマップ

レイヤー構成

レイヤー主責務主な内容
Core DomainCAD ドメインの唯一の真実geometry、entity、document、history、constraints、version semantics
Geometry and Query幾何計算と探索intersections、projection、hit test、snap、spatial index
Interaction and Editing編集操作の実行selection、box selection、transform、grip、vertex editing、undo redo
Document Semantics図面概念の意味層blocks、dimensions、annotations、hatch、layout、paper space
Rendering and Plot表示と出力2D renderer、将来 3D、plot pipeline、exporters
Collaboration and Review共同作業文脈comments、review status、diff overlay、review session
Persistence and Sync保存と同期制御serializers、repositories、autosave、draft、conflict、revision
Access and Permissions認可制御roles、sharing、effective permission、policy guard
Extensibility and Plugins拡張基盤registries、manifest、capability、lifecycle、host bridge
UI and Editor表示と入力のみtoolbar、sidebar、viewport、status 表示、command dispatch

重要原則

  • cad-core は API 通信を持たない。
  • UI は backend DTO を直接構築しない。
  • render primitive は semantic entity の派生結果として扱う。
  • history と versioning を別概念として維持する。

3. 機能領域カタログ

#機能領域目的依存基盤主要責務関連レイヤー状態統合時の注意
1アーキテクチャ / cad-core 中心設計ドメイン中核の確立TS モジュール境界依存方向統制、公開 API 明確化Core Domain統合中UI 直結実装を逆流させない
2internal model / document / editor state永続状態と一時状態の分離entity type、viewport modelsemantic document と editor transient の分離Document Semantics追加済み保存時に editor transient を混入させない
3DXF adapter / import外部 CAD 互換parser、entity mapperDXF から internal model へ変換Adapters追加済みadapter にドメイン規則を埋め込み過ぎない
4renderer 分離(2D / 将来3D)表示責務分離viewport transformsemantic から描画データ導出Rendering統合中renderer に編集ロジックを入れない
5snap作図精度向上geometry、viewport、hit testスナップ候補算出、モード制御Geometry and Query追加済みworld と screen 座標を混同しない
6hit test操作対象決定geometry、spatial indexentity 単位ヒット判定Geometry and Query追加済み描画見た目依存で判定を壊さない
7selection選択状態管理hit test単体選択、複数選択、hoverInteraction追加済みUI 状態と document を混在させない
8box selection範囲選択selection、geometry窓選択、交差選択Interaction追加済み画面拡縮時の判定精度維持
9drag / transform移動変形編集selection、historymove、rotate、grip dragInteraction追加済みundo 単位を transaction で統一
10grip edit形状直接編集selection、hit test、transformgrip 生成、編集反映Interaction追加済みgrip 情報を永続化しない
11vertex editing頂点編集polyline model、history頂点追加削除移動Interaction追加済みtopology 一貫性を保つ
12undo / redo操作の可逆性history engine履歴管理、巻き戻しInteraction追加済みversioning と責務混同しない
13transaction / command grouping複合操作の一貫性history commandコマンド束ね、atomic commitInteraction追加済みUI 単位とドメイン単位を合わせる
14spatial index大規模図面性能bounds 計算hit test と query 高速化Geometry and Query追加済み編集時のインデックス更新漏れ
15block / insert再利用図形管理document model、transformblock 定義、insert 解決Document Semantics追加済み展開結果と定義の不整合回避
16dimension / annotation寸法注記表現style model、renderer寸法生成、注記表示、styleDocument Semantics追加済みplot/export との整合
17constraint / parametric editing制約駆動編集solver、entity refs制約評価、拘束維持Document Semantics統合中solver と直接編集の競合制御
18hatch / fill / pattern面表現boundary 解決、triangulationhatch style、境界判定、描画Document Semantics追加済みDXF/export でパターン互換注意
19plot / export / printing出力基盤layout、style、renderer dataworld to page、plot style、exportRendering and Plot統合中画面描画と印刷仕様を分離
20layout / paper space / title block図面紙面化block、plotmodel/paper 管理、viewport、title blockDocument Semantics追加済みactiveSpace 切替と履歴整合
21collaboration / comment / reviewレビュー作業anchors、review statusthread、marker、review stateCollaboration and Review追加済みgeometry payload と混在保存しない
22versioning / snapshot / diff review版管理と差分snapshot model、diff enginesnapshot、version metadata、diff sessionCollaboration and Review追加済みundo redo と統合しない
23permissions / roles / project sharing安全な権限制御access policy、sharingeffective permission、guardAccess and Permissions追加済みUI 判定のみで制御しない
24plugin / extension architecture拡張可能性registries、capabilityplugin lifecycle、host bridgeExtensibility and Plugins追加済みprivate API を公開しない
25API / backend synchronization / persistence永続化と同期serializers、repositories、sync managerload save、autosave、draft、conflictPersistence and Sync統合中UI 直 API 呼び出しを段階排除

4. 推奨実装順序

Phase 1: cad-core 基盤

  • 対象: 1, 2, 3, 4
  • ゴール: ドメインモデルと adapter 境界の固定
  • 完了条件:
    • cad-core 公開 API が定義済み
    • import/export 基本経路が domain 経由

Phase 2: interaction and editing 基盤

  • 対象: 5, 6, 7, 8, 9, 10, 11, 12, 13, 14
  • ゴール: 編集操作の一貫化と性能確保
  • 完了条件:
    • 編集操作が history transaction 経由
    • 大規模図面で操作遅延が許容範囲

Phase 3: document semantics

  • 対象: 15, 16, 17, 18
  • ゴール: CAD 意味層を UI から独立
  • 完了条件:
    • block、dimension、hatch、constraint が semantic 化
    • renderer は semantic から派生表示

Phase 4: output, layout, plotting

  • 対象: 19, 20
  • ゴール: model space と paper space を統合出力
  • 完了条件:
    • plot pipeline が layout aware
    • export が renderer と疎結合

Phase 5: collaboration, review, versioning

  • 対象: 21, 22
  • ゴール: 共同作業と変更追跡の標準化
  • 完了条件:
    • comment/review と diff session の整合
    • snapshot と review の接続方針確定

Phase 6: permissions, persistence, platformization

  • 対象: 23, 24, 25
  • ゴール: 企業運用可能な CAD platform 化
  • 完了条件:
    • repository と sync manager の本稼働
    • plugin と permissions の境界統制

5. 統合優先順位

既設CADから cad-core へ優先統合

  1. save/load 経路の serializer/repository 化
  2. selection、transform、history の command 化
  3. layout、plot、export の pipeline 化

Drafting から除去しやすい領域

  • Symbol 保存 API 呼び出し
  • autosave のタイマー制御
  • DTO 変換ロジック

二重実装になりやすい領域

  • hit test と snap
  • layer visibility/lock など editor 設定
  • layout normalize ロジック

統合リスクが高い領域

  • constraint solver と既存手動編集の競合
  • versioning と collaborative review の整合
  • permissions の UI 判定と backend 判定の不一致

6. Drafting から cad-core への移行方針

基本方針

  • cad-core を唯一の中核実装にする。
  • Drafting は旧仕様互換層として段階的に解体する。
  • 新規機能は原則 cad-core へ実装する。
  • UI、interaction、renderer、persistence は cad-core 公開責務のみ使用する。

移行ステップ

  1. API 呼び出しを persistence/repositories に移動
  2. payload 変換を serializers へ移動
  3. interaction ロジックを command transaction に寄せる
  4. Drafting 内ドメインロジックを削除し facade 呼び出しへ置換
  5. 参照ゼロ化後に Drafting 実装を撤去

7. 機能依存関係マップ

主要依存

  • snap は hit test、geometry、viewport に依存
  • hit test は spatial index、entity bounds に依存
  • selection は hit test と history transaction に依存
  • grip edit は selection、hit test、transform、history に依存
  • vertex editing は transform、history、constraint に依存
  • block/insert は internal model、transform、renderer、hit test、spatial index に依存
  • dimension/annotation は style model、renderer、plot/export に依存
  • hatch は geometry、boundary、renderer、export adapter に依存
  • layout は plot、export、block、annotation に依存
  • versioning は persistence、collaboration、review に接続
  • permissions は mutation、export、version、plugin 実行に接続
  • plugin は registries、permissions、transaction、persistence に接続

依存方向ルール

  • UI から Core Domain へは facade 経由のみ
  • Core Domain から API へは依存しない
  • Plugin は capability 制御された host API のみ使用

8. リスクと注意点

  • Drafting と cad-core の責務混在
    • 対策: ドメインロジックの配置先を cad-core に固定
  • semantic entity と render primitive の混同
    • 対策: renderer 入力を derived data に限定
  • screen 座標と world 座標の混同
    • 対策: transform ユーティリティを単一路線化
  • UI から直接ロジックや API を叩く設計
    • 対策: repository/service 経由の lint ルール化
  • history と versioning の混同
    • 対策: undo redo と snapshot を別ストアで管理
  • collaboration と geometry の混同
    • 対策: payload と保存先を論理分離
  • export と screen renderer の混同
    • 対策: plot pipeline を出力正として統一

9. 最終到達像

  • cad-core が唯一のドメイン中核実装
  • interaction は command transaction を通じて実行
  • renderer は semantic から派生した表示層
  • persistence は serializers、repositories、sync manager で分離
  • collaboration、versioning、permissions は独立しつつ統合
  • plugin は capability 管理下で安全に拡張
  • model space、paper space、review、diff、export を統合した CAD platform
  • Drafting は撤去済み、または最小互換シェルのみ

10. 実装運用ガイド

PR 単位の推奨

  • 1 PR 1 レイヤー変更を原則とする
  • domain 変更と UI 変更を同時に大規模実施しない
  • adapter と serializer の変更は contract テストを付与

完了判定の共通基準

  • domain API の型が明確
  • history、permissions、persistence との整合が取れている
  • 既存 UI の回帰がない
  • 依存方向が architecture map に反していない

Last updated:

この記事の著者

MECHPHAISTOS | センサーを使わない保全

Yoshitaka Notoです。保全業務に携わり、AI時代の3Kと呼ばれるメンテナンス保全をもっと楽にしたい。 そういった保全ツール開発してます。