システムアーキテクチャ
Astar は 3 層で構成されています。クライアント層(Web・デスクトップ・NAS 連携・CLI・Office 編集)、アプリケーション層(Kotlin/Spring Boot のモジュラーモノリス)、データ層(PostgreSQL を中心としたストレージ群)です。このページは全体の見取り図で、各トピックの深掘りは兄弟ページと バックエンドガイド / モジュール索引 に分けています。
全体構成
クライアント層
Web App (Nuxt 4) + Tauri (デスクトップ/モバイル配布)
Go Agent (NAS ファイル同期 / ローカル CLI ブリッジ)
AI Agent (MCP 経由: Claude Code / Codex / astar CLI)
Collabora (WOPI でブラウザ内 Office 編集)
↓
アプリケーション層
Spring Boot(モジュラーモノリス、Spring Modulith)
core/ 配下 約47モジュール + shared/
↓
データ層
PostgreSQL 17(JSONB + RLS + pgvector)
MinIO(dev)/ Cloudflare R2(本番)— S3互換オブジェクトストレージ
Kreuzberg(OCR)
さらに詳しい構成図・規模指標は docs/ARCHITECTURE.md(実測照合済み)を参照してください。
クライアント層
| コンポーネント | 実装 | 役割 |
|---|---|---|
| Web App | Nuxt 4 / Vue 3(SSR/SPA) | メインの利用画面 |
| デスクトップ/モバイル | Tauri(同じ Nuxt フロントを OTA 更新付きで配布) | オフィスに閉じた運用・NAS 直結が要る場面 |
| Go Agent | agent/ — WebSocket で Backend に接続 | NAS のファイル同期(護 (mamoru) 含む)、ローカル CLI(Claude Code/Codex)とのブリッジ |
| astar CLI | cli/ | ターミナルから MCP ツール群を直接叩く経路。AI agent 経路と同じツール定義・同じ認可を通る |
| Collabora | WOPI ホスト | Word/Excel 等をブラウザ内でネイティブ編集 |
Web と Tauri は同じ Nuxt コードベースです。Go Agent は「NAS が正 (SSoT)」というストレージ設計(データモデル 参照)を成立させるための常駐プロセスで、ファイル同期に加えて Claude Code/Codex のようなユーザー自身のサブスクリプションを使うローカル CLI プロバイダのブリッジも兼ねます。
アプリケーション層
Kotlin + Spring Boot 4 のモジュラーモノリス(Spring Modulith)です。core/ 配下に約47モジュール、共通処理を shared/ に持ちます。1つのデプロイ単位でありながら、モジュール間の依存方向はアーキテクチャテスト(ArchUnit)で強制されています。
主なモジュールグループ:
| グループ | 代表モジュール | 役割 |
|---|---|---|
| コンテンツ基盤 | editor / table / dataset / template / tag / trash / export / search / share / workspace | 階層ドキュメント・JSONB柔軟テーブル・検索など製品の中核 |
| AI | ai(エージェントループ・Plan Mode・メモリ・スキル・マルチプロバイダ)/ mcp(250+ ツール)/ organize(OCR→AI抽出)/ automation | AI サブシステム で詳述 |
| コンテキスト源 | mail / calendar / sync / storage / cloudstorage / phone / realtime / botgateway / webhook | 事務所の既存業務ツールから情報を取り込む経路 |
| Office | office(WOPI + POI 直接編集)/ pdf | 書類編集・PDF処理 |
| 組織レイヤー | auth / membership / tenant / user / rolesync / serviceaccount / billing / notification | 認証・認可・課金など。差別化軸そのもの(下記参照) |
各モジュールは api(Controller/DTO)→ domain(Service/Model/Repository interface)→ infrastructure(実装)の3層構造で、層を飛ばした呼び出しは規約違反です。詳しくは バックエンドガイド/層構造。
設計原則: Astar は Anthropic 公式 / Claude Code と機能で競合しません。差別化軸は組織レイヤー(RLS・権限・MCP・コンテキスト保持)のみです。
データ層
| ストア | 用途 |
|---|---|
| PostgreSQL 17 | メインデータストア。JSONB による柔軟スキーマ + Row Level Security によるテナント分離 + pgvector によるセマンティック検索 |
| MinIO(dev)/ Cloudflare R2(本番) | ファイルストレージ。S3互換API。NAS モードでは Go Agent 経由で事務所のハードウェアが SSoT になる |
| Caffeine | in-process キャッシュ。本番に Redis 依存はない |
| Kreuzberg | OCR |
テナント分離・柔軟テーブル・ID戦略は、それぞれ独立したページで扱います。
このセクションの構成
- マルチテナンシーと RLS — Row Level Security の仕組みと、なぜこの方式を選んだか
- 認可モデル — primitives-only 認可(2026-07-01 再設計)
- AI サブシステム — マルチプロバイダ・エージェントループ・MCP・サンドボックス
- データモデル — dual-ID、JSONB柔軟テーブル、Exposed ORM