メインコンテンツへ

システムアーキテクチャ

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 AppNuxt 4 / Vue 3(SSR/SPA)メインの利用画面
デスクトップ/モバイルTauri(同じ Nuxt フロントを OTA 更新付きで配布)オフィスに閉じた運用・NAS 直結が要る場面
Go Agentagent/ — WebSocket で Backend に接続NAS のファイル同期(護 (mamoru) 含む)、ローカル CLI(Claude Code/Codex)とのブリッジ
astar CLIcli/ターミナルから MCP ツール群を直接叩く経路。AI agent 経路と同じツール定義・同じ認可を通る
CollaboraWOPI ホスト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柔軟テーブル・検索など製品の中核
AIai(エージェントループ・Plan Mode・メモリ・スキル・マルチプロバイダ)/ mcp(250+ ツール)/ organize(OCR→AI抽出)/ automationAI サブシステム で詳述
コンテキスト源mail / calendar / sync / storage / cloudstorage / phone / realtime / botgateway / webhook事務所の既存業務ツールから情報を取り込む経路
Officeoffice(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 になる
Caffeinein-process キャッシュ。本番に Redis 依存はない
KreuzbergOCR

テナント分離・柔軟テーブル・ID戦略は、それぞれ独立したページで扱います。

このセクションの構成