# データベース設計書

## 概要

本ドキュメントは、Dear ImGuiプロジェクトのデータベース設計に関する設計書です。

Dear ImGuiは、C++向けのImmediate Mode GUI（IMGUI）ライブラリであり、ゲームエンジンやリアルタイム3Dアプリケーションにおけるツール開発やデバッグUI構築を目的としています。

**本プロジェクトはデータベースを使用していません。**

Dear ImGuiはGUIライブラリであり、以下の特徴を持ちます：

- 純粋なUIレンダリングライブラリであり、データ永続化機能はアプリケーション側の責務
- 外部データベース（MySQL、PostgreSQL、SQLite、MongoDB等）への依存なし
- ORMやデータモデル定義なし
- SQLファイルやマイグレーションスクリプトなし

### データ永続化機能について

Dear ImGuiは、限定的なデータ永続化機能として**INIファイル形式の設定保存**を提供しています。これはデータベースではなく、テキストベースの設定ファイルです。

保存される設定内容：
- ウィンドウの位置とサイズ（ImGuiWindowSettings）
- テーブルのカラム幅と並び順（ImGuiTableSettings）

これらの設定は、アプリケーション終了時に自動的にINIファイルに保存され、次回起動時に読み込まれます。

## テーブル一覧

| テーブル名 | 対応エンティティ | 説明 |
| --- | --- | --- |
| （該当なし） | - | 本プロジェクトにはデータベーステーブルが存在しません |

## 各テーブル定義

本プロジェクトにはデータベーステーブルが存在しないため、テーブル定義はありません。

## 備考

### Dear ImGuiの設計思想

Dear ImGuiはImmediate Mode GUIパラダイムに基づいており、UIの状態をフレームごとに再構築します。このアプローチにより：

1. **状態の最小化**: UIの状態をユーザー側で保持する必要がほとんどない
2. **同期の排除**: UI状態とアプリケーション状態の同期問題が発生しない
3. **シンプルな統合**: データベースなどの外部依存なしで統合可能

### 参考：INI設定の内部構造

Dear ImGuiが保存するINI形式の設定は以下の構造体で管理されています（参考情報）：

#### ImGuiWindowSettings（imgui_internal.h）

ウィンドウ設定を保持する内部構造体：
- ウィンドウID
- 位置（X, Y）
- サイズ（幅、高さ）
- ビューポートID
- ドッキング関連設定

#### ImGuiTableSettings（imgui_internal.h）

テーブル設定を保持する内部構造体：
- テーブルID
- カラム設定
- ソート設定

これらはデータベーステーブルではなく、アプリケーション実行時のUI状態を保存するための内部データ構造です。

### データベース機能が必要な場合

Dear ImGuiを使用するアプリケーションでデータベース機能が必要な場合は、アプリケーション側で独自に実装する必要があります。Dear ImGuiはUI層のみを提供し、データ永続化層はアプリケーションの責務となります。
