> ## Documentation Index
> Fetch the complete documentation index at: https://docs.jinba.io/llms.txt
> Use this file to discover all available pages before exploring further.

# システムアーキテクチャ

> Jinba Flowのコンポーネントがどのように連携するか

Jinba Flowは、ワークフロー自動化を実現するために連携する4つの主要コンポーネントで構成されています。

## コンポーネント概要

<CardGroup cols={2}>
  <Card title="フローエディタ" icon="pen-to-square">
    チャット、グラフ、YAMLを使用してワークフローを作成するビジュアルインターフェース
  </Card>

  <Card title="マニフェスト" icon="file-code">
    ワークフロー定義のYAML表現
  </Card>

  <Card title="ランナー" icon="gears">
    マニフェストを処理しステップを実行する実行エンジン
  </Card>

  <Card title="API / MCP" icon="server">
    ワークフローのトリガーと連携のための外部インターフェース
  </Card>
</CardGroup>

## データフロー

```mermaid theme={null}
flowchart LR
    Editor["エディタ<br/>(設計)"] --> Manifest["マニフェスト<br/>(YAML)"]
    Manifest --> Runner["ランナー<br/>(実行)"]
    Runner --> API["API / MCP<br/>(デプロイ)"]
    API -.->|フィードバックループ| Editor
```

## コンポーネント詳細

### 1. フローエディタ（設計時）

フローエディタはワークフロー作成のための3つの方法を提供します：

| 方法          | インターフェース       | 最適な用途              |
| ----------- | -------------- | ------------------ |
| **チャットパネル** | 自然言語           | 素早いプロトタイピング、非技術者向け |
| **グラフエディタ** | ビジュアルドラッグ＆ドロップ | フロー構造の理解           |
| **YAMLパネル** | 直接コード編集        | 精密な制御、バージョン管理      |

3つの方法すべてが同じ出力を生成します：**マニフェスト**。

### 2. マニフェスト（架け橋）

マニフェストはワークフローを定義するYAMLドキュメントです：

```yaml theme={null}
steps:
  - id: step_id
    tool: TOOL_NAME
    input:
      - name: param
        value: "{{reference}}"
    needs: [dependency_step]
    when: "condition"
    forEach: "{{collection}}"
```

| フィールド     | 目的           |
| --------- | ------------ |
| `id`      | ステップの一意識別子   |
| `tool`    | 実行するツール      |
| `input`   | ツールに渡すパラメータ  |
| `needs`   | 他のステップへの依存関係 |
| `when`    | 条件付き実行       |
| `forEach` | コレクションのループ   |

### 3. ランナー（実行時）

ランナーはマニフェストを解釈しワークフローを実行します：

<Steps>
  <Step title="パース">
    マニフェストYAMLを読み込み検証
  </Step>

  <Step title="解決">
    `needs`フィールドから依存グラフを構築
  </Step>

  <Step title="実行">
    トポロジカル順にステップを実行、可能な場合は並列化
  </Step>

  <Step title="処理">
    エラー、リトライ、条件スキップを管理
  </Step>

  <Step title="返却">
    結果を収集し呼び出し元に返す
  </Step>
</Steps>

**主な機能：**

* 独立したステップの並列実行
* 変数解決（`{{steps.*.result}}`）
* ワークスペースシークレットからのクレデンシャル注入
* タイムアウトとリトライ管理

### 4. API / MCP（デプロイ）

公開されたワークフローは2つの連携インターフェースを提供します：

| インターフェース     | エンドポイント                                              | ユースケース      |
| ------------ | ---------------------------------------------------- | ----------- |
| **REST API** | `POST /api/v2/external/flows/{flowId}/published-run` | プログラム的な連携   |
| **MCPサーバー**  | Model Context Protocol                               | AIエージェントツール |

**認証：**

* すべての外部呼び出しにAPIキーが必要
* キーはワークスペースにスコープ
* レート制限が適用

## 実行フロー

<Steps>
  <Step title="トリガー">
    API呼び出し、スケジュール、MCP呼び出し、または手動実行で開始
  </Step>

  <Step title="ロード">
    ランナーが公開済みマニフェストバージョンを読み込み
  </Step>

  <Step title="検証">
    入力パラメータを定義されたスキーマに対して検証
  </Step>

  <Step title="実行">
    依存グラフに従ってステップを実行
  </Step>

  <Step title="返却">
    APIレスポンスまたはMCP結果として結果を返す
  </Step>
</Steps>

## セキュリティ境界

| 境界                | 保護                  |
| ----------------- | ------------------- |
| **エディタ → マニフェスト** | スキーマ検証で無効なYAMLを防止   |
| **API → ランナー**    | APIキー認証が必要          |
| **ランナー → ツール**    | ワークスペースごとのクレデンシャル分離 |
| **ランナー → 外部**     | 安全なサンドボックス実行環境      |

## ワークスペース分離

各ワークスペースは以下を維持します：

* **クレデンシャル**：APIキーとOAuthトークン
* **フロー**：ワークフロー定義
* **バージョン**：公開されたスナップショット
* **実行履歴**：実行ログと成果物

ワークスペースは互いに完全に分離されています。

## 次のステップ

<CardGroup cols={2}>
  <Card title="実行モデル" icon="timeline" href="./execution-model">
    ステップの実行方法を詳しく学ぶ
  </Card>

  <Card title="APIリファレンス" icon="code" href="/ja/pages/basics/api">
    APIエンドポイントについて学ぶ
  </Card>
</CardGroup>
