# 画面設計書 1-該当なし

## 概要

本ドキュメントは、mrubyプロジェクトにおける画面（UI）機能の調査結果を記載した設計書である。mrubyは組み込み向け軽量Ruby言語実装であり、画面機能を持たないプロジェクトであることを、ソースコード調査に基づいて記録する。

### 本画面の処理概要

本プロジェクトには画面（UI）機能が存在しない。以下に調査結果の詳細を記載する。

**業務上の目的・背景**：mrubyはISO標準に準拠した組み込み向け軽量Ruby言語実装である。アプリケーションに組み込んで利用されるライブラリ/言語エンジンとしての用途を主目的としており、ユーザーインターフェース（GUI/Web UI）を提供する設計ではない。README.mdにおいても「You can link and embed mruby within your application」と明記されており、組み込みライブラリとしての位置づけが明確である。CLIツール（mruby、mirb、mrbc）は提供されるが、これらはテキストベースのコマンドラインインターフェースであり、画面設計の対象となるGUI/Web画面ではない。

**画面へのアクセス方法**：画面機能が存在しないため、該当なし。mrubyの利用はコマンドラインから `mruby`（インタプリタ）、`mirb`（対話型シェル）、`mrbc`（コンパイラ）を実行する形態、またはC言語アプリケーションにライブラリとしてリンクする形態をとる。

**主要な操作・処理内容**：
1. 画面操作は存在しない
2. mrubyが提供する機能はRubyスクリプトの実行（VM、コンパイラ、ガベージコレクタ、コアライブラリ）である
3. 外部からの利用はC API（`mrb_open()` → `mrb_load_string()` / `mrb_load_file()` → `mrb_close()`）を通じて行われる

**画面遷移**：画面機能が存在しないため、画面遷移は存在しない。画面遷移図.mdにおいても「画面（UI）機能を持たないため、画面遷移は存在しません」と記載されている。

**権限による表示制御**：画面機能が存在しないため、該当なし。

## 関連機能

| 機能No | 機能名 | 関連種別 | 関連する操作・処理 |
|--------|--------|----------|------------------|
| - | - | - | 画面機能マッピング.csvにデータなし。mrubyプロジェクトには画面に紐づく機能が存在しない |

## 画面種別

該当なし（画面機能が存在しないプロジェクト）

## URL/ルーティング

該当なし（Webフレームワークを使用していないため、URLルーティングは存在しない）

## 入出力項目

該当なし（画面入出力は存在しない）

## 表示項目

該当なし（画面表示項目は存在しない）

## イベント仕様

該当なし（画面イベントは存在しない）

## データベース更新仕様

### 操作別データベース影響一覧

| 操作（イベント） | 対象テーブル | 操作種別 | 概要 |
|----------------|-------------|---------|------|
| - | - | - | mrubyはデータベースを使用しない。データは全てメモリ上（mrb_state構造体）で管理される |

### テーブル別更新項目詳細

該当なし（データベースを使用しないプロジェクト）

## メッセージ仕様

該当なし（画面メッセージは存在しない。mrubyのエラーメッセージはC言語のstderr出力またはRuby例外として処理される）

## 例外処理

該当なし（画面に関する例外処理は存在しない。mruby自体の例外処理は `src/error.c` で実装されている）

## 備考

- mrubyプロジェクトの全ディレクトリ（`src/`、`mrblib/`、`mrbgems/`、`include/`、`examples/`、`doc/`、`test/`、`build_config/`、`tasks/`、`tools/`）を調査済み
- HTML/テンプレートファイル（`.html`、`.erb`、`.haml`、`.slim`）：検出されず
- フロントエンドファイル（`.jsx`、`.tsx`、`.vue`）：検出されず
- GUIフレームワーク関連コード（GTK、Qt、SDL、wxWidgets、ncurses）：srcディレクトリ内で検出されず
- Webフレームワーク関連コード：検出されず
- mrbgems（拡張ライブラリ）にもUI関連のgemは含まれていない
- `tools/` ディレクトリにはLR構文解析器（lrama）のみが存在し、UI関連ツールは含まれていない

---

## コードリーディングガイド

本プロジェクトには画面機能が存在しないが、プロジェクト構造を理解するために参照すべきファイルと、推奨する読み解き順序を以下に示す。

### 推奨読解順序

#### Step 1: データ構造を理解する

mrubyの中核データ構造は `mrb_state` 構造体であり、VM状態の全てを保持する。

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 1-1 | mruby.h | `include/mruby.h` | mruby全体のAPIと型定義。`mrb_state` 構造体の宣言、`mrb_value` 型定義を含む。画面関連の型や関数が一切定義されていないことが確認できる |
| 1-2 | value.h | `include/mruby/value.h` | Ruby値の内部表現。全ての値がメモリ上の構造体で表現されており、UI出力用の仕組みは含まれない |

**読解のコツ**: mrubyはC言語で記述されたプロジェクトであり、`include/` 配下のヘッダファイルが公開APIを定義する。`MRB_API` マクロが付与された関数がパブリックAPIである。

#### Step 2: エントリーポイントを理解する

mrubyの初期化フローを追うことで、プロジェクトに画面機能が含まれないことを構造的に理解できる。

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 2-1 | state.c | `src/state.c` | `mrb_open_core()` 関数（39行目）がmruby VMの初期化を行う。メモリ確保、GC初期化、コアクラス初期化のみで、UI初期化処理は一切含まれない |
| 2-2 | init.c | `src/init.c` | `mrb_init_core()` 関数（29行目）がコアモジュールの初期化を行う。symtbl、class、object、kernel、string等のコア機能のみ初期化され、UI関連の初期化は存在しない |

**主要処理フロー**:
1. **state.c:39行目**: `mrb_open_core()` -- mrb_state構造体のメモリ確保とゼロ初期化
2. **state.c:26-36行目**: `init_gc_and_core()` -- GC初期化とコンテキスト作成、`mrb_init_core()` の呼び出し
3. **init.c:29-49行目**: `mrb_init_core()` -- 16個のコアモジュール初期化（symtbl, class, object, kernel, enumerable, symbol, string, exception, proc, array, hash, numeric, range, gc, version, mrblib）

#### Step 3: ソースディレクトリ構成を理解する

プロジェクト全体の構成を把握し、画面関連コードが存在しないことを確認する。

| 順序 | ファイル | パス | 読解ポイント |
|-----|---------|------|-------------|
| 3-1 | vm.c | `src/vm.c` | 仮想マシン（バイトコード実行エンジン）の実装。画面描画・UI処理は含まれない |
| 3-2 | gc.c | `src/gc.c` | ガベージコレクタ実装。メモリ管理のみでUI処理は含まれない |
| 3-3 | print.c | `src/print.c` | 出力処理。stderrへのテキスト出力のみで、GUI出力機能は含まれない |

### プログラム呼び出し階層図

```
mrb_open() / mrb_open_core()    [state.c]
    |
    +-- mrb_gc_init()            [gc.c]         -- GC初期化
    |
    +-- mrb_init_core()          [init.c]       -- コアモジュール初期化
    |       |
    |       +-- mrb_init_symtbl()     [symbol.c]
    |       +-- mrb_init_class()      [class.c]
    |       +-- mrb_init_object()     [object.c]
    |       +-- mrb_init_kernel()     [kernel.c]
    |       +-- mrb_init_string()     [string.c]
    |       +-- mrb_init_array()      [array.c]
    |       +-- mrb_init_hash()       [hash.c]
    |       +-- mrb_init_numeric()    [numeric.c]
    |       +-- ... (他コアモジュール)
    |
    +-- mrb_init_mrbgems()       [state.c]      -- gem初期化（UI gemなし）

    ※ UI/画面関連の初期化関数は呼び出し階層に一切存在しない
```

### データフロー図

```
[入力]                      [処理]                           [出力]

Rubyソースコード -------> mrb_load_string() / mrb_load_file()
                                |
                                v
                          パーサ (parse.y)
                                |
                                v
                          コンパイラ (codegen.c)
                                |
                                v
                          VM実行 (vm.c)
                                |
                                v
                          +-----------+-------------------+
                          |           |                   |
                          v           v                   v
                     mrb_value   stderr出力          例外発生
                     (戻り値)   (print.c)         (error.c)

    ※ 全てのデータフローがメモリ上/テキスト出力であり、
       GUI/Web画面への出力パスは存在しない
```

### 関連ファイル一覧

| ファイル | パス | 種別 | 役割 |
|---------|------|------|------|
| mruby.h | `include/mruby.h` | ソース（ヘッダ） | mruby公開API定義。画面関連APIが存在しないことの根拠 |
| state.c | `src/state.c` | ソース | mrb_state初期化。`mrb_open()` / `mrb_open_core()` を提供 |
| init.c | `src/init.c` | ソース | コアモジュール初期化。初期化リストにUI関連が含まれない |
| vm.c | `src/vm.c` | ソース | 仮想マシン実装。バイトコード実行エンジン |
| gc.c | `src/gc.c` | ソース | ガベージコレクタ実装 |
| print.c | `src/print.c` | ソース | テキスト出力処理（stderr出力のみ） |
| error.c | `src/error.c` | ソース | 例外処理実装 |
| README.md | `README.md` | ドキュメント | プロジェクト概要。組み込みライブラリとしての位置づけを明記 |
| 画面一覧.csv | `docs/code-to-docs/画面一覧/画面一覧.csv` | 生成ドキュメント | 画面一覧。「該当なし」と記録 |
| 画面遷移図.md | `docs/code-to-docs/画面一覧/画面遷移図.md` | 生成ドキュメント | 画面遷移図。画面遷移が存在しないことを記録 |
| 画面機能マッピング.csv | `docs/code-to-docs/画面機能マッピング/画面機能マッピング.csv` | 生成ドキュメント | 画面機能マッピング。ヘッダのみでデータなし |
