---
generated_at: 2026-02-19 18:30:00
metrics:
  claims_total: 28
  claims_with_evidence: 26
  claims_without_evidence: 2
confidence_derived: 0.93
---

# 根拠レポート：API設計書

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.93**
  - 根拠あり：26 / 28、根拠なし：2
- 優先レビュー（高）
  1. **ブラウザ環境でのDOMContentLoadedイベント自動登録条件**：`this === window`の条件判定が特殊
  2. **child_process.forkパッチの動作**：register.coffeeの実装を確認推奨

## 2) 参照した情報（Evidence一覧）

- E-01: `src/index.coffee` - Node.js API実装
- E-02: `src/coffeescript.coffee` - コア機能実装（compile, tokens, nodes）
- E-03: `src/browser.coffee` - ブラウザ向けAPI実装
- E-04: `src/register.coffee` - require.extensions登録機能
- E-05: `src/helpers.coffee` - ヘルパー関数群
- E-06: `src/optparse.coffee` - オプションパーサー
- E-07: `src/sourcemap.litcoffee` - ソースマップ生成
- E-08: `src/scope.litcoffee` - スコープ管理
- E-09: `package.json` - バージョン情報・エンジン要件
- E-10: `lib/coffeescript/index.js` - コンパイル済みNode.js API

## 3) Claims と根拠の対応（レビューの主戦場）

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | CoffeeScriptバージョンは2.7.0 | E-09 (package.json line 11: "version": "2.7.0") | ○ |
| C-02 | 対応Node.jsバージョンは6以上 | E-09 (package.json line 13: "node": ">=6") | ○ |
| C-03 | サポートファイル拡張子は.coffee, .litcoffee, .coffee.md | E-02 (coffeescript.coffee line 17: FILE_EXTENSIONS = ['.coffee', '.litcoffee', '.coffee.md']) | ○ |
| C-04 | compile関数はコードとオプションを受け取りJSを返す | E-02 (coffeescript.coffee line 62: exports.compile = compile = withPrettyErrors (code, options = {}) ->) | ○ |
| C-05 | sourceMapオプションでソースマップ付きオブジェクトを返す | E-02 (coffeescript.coffee line 173-178: if options.sourceMap then {js, sourceMap, v3SourceMap}) | ○ |
| C-06 | bareオプションでIIFEラップを無効化 | E-02 (coffeescript.coffee line 82-86: unless options.bare? and options.bare is yes) | ○ |
| C-07 | astオプションでASTを返す | E-02 (coffeescript.coffee line 94-107: if options.ast) | ○ |
| C-08 | inlineMapオプションでインラインソースマップを埋め込む | E-02 (coffeescript.coffee line 165-169: if options.inlineMap) | ○ |
| C-09 | transpile関数はBabelを使用してトランスパイル | E-01 (index.coffee line 9-19: CoffeeScript.transpile = (js, options) -> babel.transform js, options) | ○ |
| C-10 | transpile関数はBabel未インストール時にエラー | E-01 (index.coffee line 17-18: throw new Error 'To use the transpile option...') | ○ |
| C-11 | run関数はCoffeeScriptを実行 | E-01 (index.coffee line 35-62: CoffeeScript.run = (code, options = {}) ->) | ○ |
| C-12 | run関数は__filename, __dirnameを正しく設定 | E-01 (index.coffee line 38-40: mainModule.filename = process.argv[1] = ...) | ○ |
| C-13 | eval関数はサンドボックス環境で評価可能 | E-01 (index.coffee line 66-103: CoffeeScript.eval = (code, options = {}) ->) | ○ |
| C-14 | eval関数はoptions.sandboxでコンテキスト指定可能 | E-01 (index.coffee line 74-80: if options.sandbox?) | ○ |
| C-15 | tokens関数はコードをトークン化 | E-02 (coffeescript.coffee line 183-184: exports.tokens = withPrettyErrors (code, options) -> lexer.tokenize code, options) | ○ |
| C-16 | nodes関数はASTを返す | E-02 (coffeescript.coffee line 189-191: exports.nodes = withPrettyErrors (source, options) ->) | ○ |
| C-17 | register関数はrequire.extensionsを登録 | E-01 (index.coffee line 105: CoffeeScript.register = -> require './register') | ○ |
| C-18 | patchStackTrace関数はError.prepareStackTraceをオーバーライド | E-02 (coffeescript.coffee line 253-323: exports.patchStackTrace = -> ... Error.prepareStackTrace = ...) | ○ |
| C-19 | _compileFile関数はファイルを読み込んでコンパイル | E-01 (index.coffee line 135-138: CoffeeScript._compileFile = (filename, options = {}) -> fs.readFileSync...) | ○ |
| C-20 | _compileRawFileContent関数は生の内容からコンパイル | E-01 (index.coffee line 115-133: CoffeeScript._compileRawFileContent = (raw, filename, options = {}) ->) | ○ |
| C-21 | helpersオブジェクトが公開されている | E-01 (index.coffee line 149: module.exports.helpers = CoffeeScript.helpers), E-02 (line 20: exports.helpers = helpers) | ○ |
| C-22 | helpers.isLiterateはLiterate CoffeeScriptを判定 | E-05 (helpers.coffee line 207: exports.isLiterate = (file) -> /\.(litcoffee\|coffee\.md)$/.test file) | ○ |
| C-23 | helpers.isCoffeeはCoffeeScriptファイルを判定 | E-05 (helpers.coffee line 204: exports.isCoffee = (file) -> /\.((lit)?coffee\|coffee\.md)$/.test file) | ○ |
| C-24 | ブラウザAPIのloadはXHRで読み込む | E-03 (browser.coffee line 40-56: CoffeeScript.load = (url, callback, options = {}, hold = false) -> xhr = ...) | ○ |
| C-25 | ブラウザAPIのrunScriptsはtext/coffeescriptタグを処理 | E-03 (browser.coffee line 61-96: CoffeeScript.runScripts = -> ... coffeetypes = ['text/coffeescript', 'text/literate-coffeescript']) | ○ |
| C-26 | register時にchild_process.forkがパッチされる | E-04 (register.coffee line 59-69: child_process.fork = (path, args, options) ->) | ○ |
| C-27 | runScriptsはDOMContentLoaded時に自動実行される | E-03 (browser.coffee line 103-107: if this is window then window.addEventListener 'DOMContentLoaded'...) | △ |
| C-28 | ES Modulesスタイルでのインポートがサポートされている | **根拠なし** - package.jsonにはmoduleフィールドがあるが、名前付きエクスポートの動作は推論 | △ |

## 4) 不足情報（Unknown / Missing）

- **ES Modulesの名前付きエクスポートの完全な動作確認**
  - package.jsonのmoduleフィールドとlib/coffeescript/index.jsのmodule.exports定義から推論
  - 候補：ESM対応のNode.js環境でのテスト / bundler設定の確認

- **DOMContentLoadedイベントハンドラの登録条件**
  - `if this is window`という条件は、ESモジュール版とグローバル版の区別のため
  - browser.coffeeのコメント（line 99-102）に説明があるが、実際の動作確認が推奨される

## 5) リスクフラグ（レビュー観点）

- **0: 低リスク** - コア機能（compile, tokens, nodes）の文書化は十分な根拠に基づく
- **0: 低リスク** - バージョン情報、ファイル拡張子はpackage.json/ソースコードから直接確認
- **1: 中リスク** - ブラウザAPIの一部（load, runScripts）は実際のブラウザ環境でのテスト推奨
- **1: 中リスク** - transpileオプションのBabel連携は@babel/coreのバージョン依存性あり

## 6) レビュアーチェックリスト（最小）

- [ ] compile関数のオプション一覧が実際の使用パターンをカバーしているか確認
- [ ] エラーメッセージの例がSyntaxErrorの実際の出力と一致するか確認
- [ ] ブラウザ環境でのAPIがモダンブラウザで動作するか確認
- [ ] 内部API（_compileFile, _compileRawFileContent）の公開が適切か判断
- [ ] Babelとの連携における@babel/coreのバージョン互換性を確認
- [ ] child_process.forkパッチが意図した動作をするか確認
