---
generated_at: 2026-02-22 19:30:00
metrics:
  claims_total: 42
  claims_with_evidence: 39
  claims_without_evidence: 3
confidence_derived: 0.93
---

# 根拠レポート：アーキテクチャ設計書

## 本レポートについて

### 目的
本レポートは、生成された設計書・ドキュメントの信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

### チェック方法
以下の観点でドキュメントの内容（Claim：主張）を検証しています：

1. **根拠の有無確認**：各主張に対して、ソースコード・既存設計書・要件定義書などの根拠（Evidence）が存在するか
2. **根拠との整合性**：主張の内容が根拠と矛盾していないか
3. **網羅性**：参照すべき情報源を適切にカバーしているか

### 信頼度スコアの算出
- **confidence_derived** = 根拠あり件数 / 総主張件数
- 状態「○」：根拠あり、「△」：根拠不足または要確認

### 本レポートの使い方
1. まず「サマリー」で全体の信頼度と優先レビュー項目を確認
2. 「Claims と根拠の対応」で △ の項目を重点的にレビュー
3. 「不足情報」で補完が必要な情報源を確認

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.93**
  - 根拠あり：39 / 42、根拠なし：3
- 優先レビュー（高）
  1. **C-35: lramaのビルドツールとしての使用方法**：パーサ生成に関する具体的なビルドフローの直接的根拠が不足
  2. **C-38: 外部mrbgemsのGit連携方式**：外部GEM取得のプロトコル詳細が未確認
  3. **C-42: チューニングプロファイルの実際の性能特性**：プロファイル設定の効果に関する定量的根拠なし

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。抽出フェーズで付けたIDをそのまま出す。

- E-01: `README.md` - プロジェクト概要、バージョン情報、ビルド手順
- E-02: `include/mruby.h` - mrb_state構造体、mrb_callinfo、mrb_context、メソッドキャッシュ定義
- E-03: `include/mrbconf.h` - ビルド時設定オプション、boxing設定、GC設定、プロファイル設定
- E-04: `include/mruby/value.h` - mrb_value型定義、mrb_vtype列挙、boxing選択
- E-05: `include/mruby/gc.h` - mrb_gc構造体、GC状態定義
- E-06: `include/mruby/irep.h` - IREP構造体、バイナリロード関数
- E-07: `include/mruby/compile.h` - コンパイラコンテキスト、パーサ構造体、パーサAPI
- E-08: `include/mruby/proc.h` - RProc構造体、メソッドフラグ定義
- E-09: `include/mruby/opcode.h` - VM命令セット定義、オペランドフェッチマクロ
- E-10: `src/init.c` - コア初期化シーケンス（mrb_init_core関数）
- E-11: `src/state.c` - mrb_open/mrb_close、mrb_state ライフサイクル
- E-12: `src/vm.c` - VM実行エンジン、スタック設定、コールレベル制限
- E-13: `src/gc.c` - Tri-color Incremental GC実装、カラー定義
- E-14: `src/allocf.c` - デフォルトメモリアロケータ（mrb_basic_alloc_func）
- E-15: `src/mempool.c` - メモリプール実装
- E-16: `src/error.c` - 例外クラス実装
- E-17: `src/load.c` - mrbcバイナリローダ
- E-18: `src/dump.c` - mrbcバイナリダンパ
- E-19: `src/class.c` - クラスシステム、メソッドテーブル実装
- E-20: `src/symbol.c` - シンボルテーブル、事前定義シンボル
- E-21: `mrbgems/default.gembox` - デフォルトGEMセット定義
- E-22: `mrbgems/stdlib.gembox` - 標準ライブラリGEMセット定義
- E-23: `mrbgems/mruby-compiler/core/` - コンパイラソースファイル一覧（parse.y, codegen.c, lex.def）
- E-24: `Rakefile` - ビルドシステム構成、タスク定義
- E-25: `build_config/default.rb` - デフォルトビルド設定
- E-26: `doc/guides/hier.md` - ディレクトリ構造説明
- E-27: `doc/internal/opcode.md` - VM命令セット仕様
- E-28: `doc/internal/boxing.md` - Boxing方式の説明（Word, NaN, No Boxing）
- E-29: `mrblib/*.rb` - Rubyコアライブラリソース一覧
- E-30: `tasks/*.rake` - ビルドタスク一覧
- E-31: `build_config/` - 各種プラットフォーム向けビルド設定ファイル一覧
- E-32: `include/mruby/khash.h` - ハッシュテーブル実装ヘッダ
- E-33: `include/mruby/internal.h` - 内部API定義ヘッダ

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | mrubyはISO標準に準拠した軽量Ruby実装である | E-01 | ○ |
| C-02 | Ruby 3.x互換の構文をサポート（パターンマッチング除く） | E-01 | ○ |
| C-03 | C言語で実装されたコアランタイムとmrbgemsによる拡張システムを持つ | E-01, E-26 | ○ |
| C-04 | レイヤードアーキテクチャとコンポーネントベースアーキテクチャのハイブリッド構成 | E-10, E-11, E-23, E-21, E-26 | ○ |
| C-05 | フロントエンドはparse.y, codegen.c, lex.defで構成される | E-23 | ○ |
| C-06 | IREPはバイトコード命令列（iseq）、リテラルプール（pool）、シンボルテーブル（syms）、子IREP（reps）を含む | E-06 | ○ |
| C-07 | VMはレジスタベースの仮想マシンである | E-12, E-27 | ○ |
| C-08 | 8bit命令コードを使用し、現在106命令を持つ | E-27 | ○ |
| C-09 | GCはTri-color Incremental Mark & Sweep方式 | E-13 | ○ |
| C-10 | オブジェクトカラーはWhite, Gray, Black, Redの4色 | E-13 | ○ |
| C-11 | White-A/White-Bのflip-flop方式でGCサイクルを管理 | E-13 | ○ |
| C-12 | 値表現はWord Boxing（デフォルト）、NaN Boxing、No Boxingの3方式 | E-03, E-04, E-28 | ○ |
| C-13 | Word Boxingのビットパターン定義 | E-28 | ○ |
| C-14 | NaN BoxingはIEEE754のNaN表現を利用 | E-28 | ○ |
| C-15 | mrb_open()でmrb_stateを生成し、mrb_close()で破棄する | E-11 | ○ |
| C-16 | コア初期化はmrb_init_coreで行われ、symtbl, class, object, kernel, string等の順に初期化される | E-10 | ○ |
| C-17 | デフォルトメモリアロケータはrealloc/freeベース | E-14 | ○ |
| C-18 | mrb_basic_alloc_funcを再定義してカスタムアロケータを提供可能 | E-14 | ○ |
| C-19 | メモリプールはパーサ等の一時メモリに使用される | E-15, E-07 | ○ |
| C-20 | メソッドキャッシュはデフォルト256エントリ（MRB_METHOD_CACHE_SIZE） | E-02 | ○ |
| C-21 | コールスタック深さの制限はMRB_CALL_LEVEL_MAX（デフォルト512） | E-12 | ○ |
| C-22 | スタックサイズ制限はMRB_STACK_MAX | E-12 | ○ |
| C-23 | 例外処理はsetjmp/longjmpベース（throw.h） | E-16, E-08 | ○ |
| C-24 | IREP catch handlerテーブルでrescue/ensureを管理 | E-06 | ○ |
| C-25 | GCアリーナでC API利用時のオブジェクト保護を管理 | E-05, E-12 | ○ |
| C-26 | IREP参照カウント方式でライフサイクル管理 | E-11, E-06 | ○ |
| C-27 | 公開API関数はMRB_APIマクロで修飾 | E-02, E-11, E-14 | ○ |
| C-28 | 内部APIはinternal.hに分離 | E-33 | ○ |
| C-29 | 全パブリック関数はmrb_プレフィックスを使用 | E-02, E-11, E-14, E-19 | ○ |
| C-30 | mrbgemsはコアAPIのみに依存し、コアはGEMに依存しない（コンパイラ除く） | E-21, E-22, E-11 | ○ |
| C-31 | デフォルトgemboxはstdlib, stdlib-ext, stdlib-io, math, metaprogを含む | E-21 | ○ |
| C-32 | FiberはFIBER_CREATED等の状態をmrb_fiber_state enumで管理 | E-02 | ○ |
| C-33 | アマルガメーションでmruby.cとmruby.hの2ファイルに統合可能 | E-01 | ○ |
| C-34 | HAL層はPOSIXとWindowsの2プラットフォームに対応 | E-26 | ○ |
| C-35 | lramaはparse.yからパーサを生成するビルドツールとして使用される | E-26 | △ |
| C-36 | khashはマクロベースのハッシュテーブル実装 | E-32 | ○ |
| C-37 | build_configでArduino, Android, Emscripten, Nintendo Switch等の設定が提供 | E-31 | ○ |
| C-38 | 外部mrbgemsはGitによる取得をサポート | E-25 | △ |
| C-39 | ビルドシステムはRakeベースで構成 | E-24, E-30 | ○ |
| C-40 | 条件コンパイルはMRB_USE_*/MRB_NO_*マクロで制御 | E-03 | ○ |
| C-41 | Taskスケジューラはdormant/ready/waiting/suspendedの4キューで管理 | E-02 | ○ |
| C-42 | チューニングプロファイル（CONSTRAINED_BASELINE, BASELINE, MAIN, HIGH）で環境に応じた設定が可能 | E-03 | △ |

## 4) 不足情報（Unknown / Missing）
- C-35: lramaがビルドプロセスでどのように統合されているかの直接的なビルドスクリプト根拠が不足。`tools/lrama/` に配置されていることは確認済みだが、Rakeタスクでの具体的な呼び出し方法は未確認。
  - 候補：`tasks/mrbgems.rake` 内のコンパイラGEMビルド処理 / `mrbgems/mruby-compiler/mrbgem.rake`
- C-38: 外部mrbgemsのGit連携方式の詳細（URLスキーマ、認証方式等）が `build_config/default.rb` のコメントにのみ記載されており、実装コードレベルの根拠が不足。
  - 候補：`lib/mruby/gem.rb` / `lib/mruby/build.rb`
- C-42: チューニングプロファイルの設定値は `mrbconf.h` で確認済みだが、実際の性能特性や推奨ユースケースに関する定量的なドキュメントが存在しない。
  - 候補：`benchmark/` ディレクトリのベンチマーク結果 / 公式ドキュメント

## 5) リスクフラグ（レビュー観点）
- リスク0（低リスク）：コアアーキテクチャの記述（レイヤー構成、GC方式、Boxing方式等）。ソースコードから直接確認可能。
- リスク0（低リスク）：ディレクトリ構造とモジュール構成。`doc/guides/hier.md` と実際のファイル構成から直接確認可能。
- リスク1（中リスク）：lramaのビルドパイプラインへの統合方法。ディレクトリの存在は確認済みだが、ビルドフローの詳細は未確認。
- リスク0（低リスク）：mrbgemsの依存関係。gemboxファイルから直接確認可能。
- リスク1（中リスク）：Taskスケジューラの詳細動作。mrb_state内の構造体定義は確認済みだが、実装の詳細（mruby-task GEM内部）は未精査。

## 6) レビュアーチェックリスト（最小）
- [ ] レイヤー定義の分類が実際のコードの依存関係と整合しているか確認する
- [ ] mrbgemsの依存関係図が実際のmrbgem.rakeの依存定義と一致しているか確認する
- [ ] lramaのビルドパイプラインへの統合方法を `mrbgems/mruby-compiler/mrbgem.rake` で確認する
- [ ] Taskスケジューラの記述が `mrbgems/mruby-task/` の実装と整合しているか確認する
- [ ] 外部mrbgemsのGit連携方式を `lib/mruby/gem.rb` の実装で確認する
- [ ] チューニングプロファイルの記述が最新の `mrbconf.h` の定義と一致しているか確認する
