---
generated_at: 2026-02-21 12:00: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. **BASSライブラリのバージョン情報**：DLLのバージョンがソースコードから特定不可
  2. **HSP bufferの最大使用数187**：コード中のbuffer番号の網羅的確認が困難
  3. **VSTプラグインDLLの全リスト**：fxdef.hsp内の定義から抽出したがDLL同梱の実確認不可

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。

- E-01: `kshootmania.hsp` - ゲーム本体エントリポイント（行1〜2000+）
- E-02: `kshooteditor.hsp` - 譜面エディタエントリポイント（行1〜500+）
- E-03: `README.md` - プロジェクト説明（行1〜74）
- E-04: `src/winapi.as` - Win32 API宣言（行1〜81）
- E-05: `src/kshlib.as` - kshlib.dllバインディング（行1〜27）
- E-06: `src/ksmcore.as` - ksmcore.dllバインディング（行1〜27）
- E-07: `src/kson.as` - kson.dllバインディング（行1〜12）
- E-08: `src/bass.as` - BASS音声ライブラリバインディング（行1〜48）
- E-09: `src/bass_fx.as` - BASS FXバインディング（行1〜8）
- E-10: `src/bass_vst.as` - BASS VSTバインディング（行1〜26）
- E-11: `src/bassconv.as` - BASS変換バインディング（行1〜9）
- E-12: `src/filesystem_utils.as` - ファイルシステムユーティリティ（行1〜75）
- E-13: `src/ir.hsp` - インターネットランキングモジュール（行1〜142）
- E-14: `src/audio/fxdef.hsp` - FXエフェクト定義（行1〜207）
- E-15: `src/audio/key_sound.as` - キー音管理モジュール（行1〜110）
- E-16: `src/audio/laser_slam_sound.as` - レーザースラム音管理モジュール（行1〜87）
- E-17: `src/scene/title.hsp` - タイトル画面（行1〜100+）
- E-18: `src/scene/select.hsp` - 選曲画面（行1〜100+）
- E-19: `src/scene/play.hsp` - プレイ画面（行1〜14）
- E-20: `src/scene/result.hsp` - リザルト画面（行1〜100+）
- E-21: `src/scene/course_result.hsp` - コースモードリザルト画面（行1〜100+）
- E-22: `src/scene/option.hsp` - オプション画面（行1〜100+）
- E-23: `src/scene/gate.hsp` - INPUT GATE画面（行1〜10）
- E-24: `src/scene/play/play_init.hsp` - プレイ初期化（行1〜100+）
- E-25: `src/scene/play/play_update.hsp` - プレイ更新ループ（行1〜100+）
- E-26: `src/scene/play/play_key_input.hsp` - キー入力処理（行1〜100+）
- E-27: `src/scene/play/play_chart_load.hsp` - 譜面読込（行1〜100+）
- E-28: `src/scene/play/play_game_logic.hsp` - ゲームロジック（行1〜100+）
- E-29: `src/scene/play/play_audio.hsp` - 音声タイミング制御（行1〜100+）
- E-30: `src/scene/play/play_audio_effects.hsp` - カスタム音声エフェクト（行1〜100+）
- E-31: `src/scene/play/play_button_note.hsp` - ボタンノート判定（行1〜80+）
- E-32: `src/scene/play/play_laser_note.hsp` - レーザーノート処理（行1〜80+）
- E-33: `src/scene/play/play_draw_frame.hsp` - フレーム描画（行1〜80+）
- E-34: `src/scene/play/play_graphics.hsp` - グラフィックスロード（行1〜80+）
- E-35: `src/scene/play/play_video.hsp` - 動画再生（行1〜28）
- E-36: `src/scene/play/play_utils.hsp` - ユーティリティ（行1〜80+）
- E-37: `src/scene/play/play_splash_screen.hsp` - スプラッシュ画面（行1〜80+）
- E-38: `third_party_license.txt` - サードパーティライセンス（行1〜328）

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | HSP 3.51で開発されたWindows向け音楽ゲームである | E-03 (README.md行6: "Hot Soup Processor 3.51") | ○ |
| C-02 | ゲーム本体（kshootmania.hsp）と譜面エディタ（kshooteditor.hsp）の2つのアプリケーションから構成される | E-01, E-02, E-03 (README.md行33-37) | ○ |
| C-03 | バージョンは1.75bである | E-01 (行76: `aversion "1.75b"`) | ○ |
| C-04 | BASS Audio Libraryを使用して音声処理を行う | E-08 (bass.as: `#uselib "bass.dll"`) | ○ |
| C-05 | ksmcore.dllはC++で実装されカメラ値計算とキー音管理を担当する | E-06, E-03 (README.md行17-18) | ○ |
| C-06 | kshlib.dllは譜面メタデータ読込、ハッシュ計算等を担当する | E-05 (kshlib.as: `KSHLib_OpenChartFile`, `KSHLib_GetChartMD5Hash`等) | ○ |
| C-07 | kson.dllはKSH/KSONフォーマット変換を担当する | E-07 (kson.as: `KSON_ToKSH`, `KSON_FromKSH`) | ○ |
| C-08 | 全変数がグローバルスコープで管理される | E-03 (README.md行25: "#moduleが使用されていない") | ○ |
| C-09 | key_sound.asとlaser_slam_sound.asは#moduleを使用しカプセル化されている | E-15 (行4: `#module key_sound`), E-16 (行3: `#module laser_slam_sound`) | ○ |
| C-10 | シーン遷移は#enumで定義された8つのシーンで管理される | E-01 (行11-19: `#enum SCENE_TITLE = 0` 〜 `SCENE_GATE`) | ○ |
| C-11 | メインループはswitch-caseでシーンをディスパッチする | E-01 (行948-1217: `switch scene` / `case SCENE_*`) | ○ |
| C-12 | play.hspは14個のサブモジュールを#includeで集約する | E-19 (play.hsp行1-14: 14個の#include文) | ○ |
| C-13 | Win32 APIとしてuser32, kernel32, gdi32, msvcrt, comctl32を使用する | E-04 (winapi.as: `#uselib "user32"`, `#uselib "kernel32"`, `#uselib "gdi32"`, `#uselib "msvcrt"`, `#uselib "comctl32.dll"`) | ○ |
| C-14 | HGIMG3を3D描画に使用する | E-01 (行158: `#include "hgimg3.as"`) | ○ |
| C-15 | hspinetをネットワーク通信に使用する | E-01 (行159: `#include "hspinet.as"`) | ○ |
| C-16 | 音声エフェクトは10種類定義されている | E-14 (fxdef.hsp: FXDEF_FXTYPE_RETR〜FXDEF_FXTYPE_AUDI, `#define FXDEF_FXTYPEMAX 10`) | ○ |
| C-17 | VSTプラグインとしてregawo.dll, flan.dll, pitc.dll, bitc.dll, phas.dll, tstp.dll, sich.dllが使用される | E-14 (fxdef.hsp: 各`fxdef_dllname`定義) | ○ |
| C-18 | config.iniで設定を管理し、key=value形式で読み書きする | E-01 (行390-681: config.ini読込処理、行1299-1499: *saveconfig) | ○ |
| C-19 | BASSは44100Hzで初期化される | E-01 (行771: `BASS_Init -1,44100,0,hwnd`) | ○ |
| C-20 | picload命令はファイル不在時のエラー表示を追加したカスタム版で上書きされている | E-01 (行117-127: カスタムpicload定義) | ○ |
| C-21 | instr関数はマルチバイト文字のバグを修正したカスタム版で上書きされている | E-01 (行129-138: カスタムinstr定義) | ○ |
| C-22 | filesystem_utils.asはchdirをsafeChdirで置換するマクロを提供する | E-12 (行72-74: `#ifdef FS_UTILS_REPLACE_CHDIR_WITH_SAFE_CHDIR` / `#define global chdir(%1) safeChdir %1`) | ○ |
| C-23 | BASS_VST_SetParam_Rは最大5回リトライする | E-10 (行16-21: `repeat 5` / `BASS_VST_SetParam@` / エラー判定) | ○ |
| C-24 | gate.hspは無効化されスタブのみ実装されている | E-23 (gate.hsp: dialog表示後にタイトル画面に遷移する10行のコード) | ○ |
| C-25 | ir.hspのir_is_logged_inは常に0を返す | E-13 (行26-28: `return 0`) | ○ |
| C-26 | INPUT GATE、Twitter連携、インターネットランキングのコードが削除されている | E-03 (README.md行19-22), E-13, E-23 | ○ |
| C-27 | キーボード入力はconfig.iniのkey=で14キー分設定可能 | E-01 (行686-698: `dim key,14`, デフォルトキー設定) | ○ |
| C-28 | アナログ入力として4種類（キーボード、マウス、ジョイスティック軸、アナログスライダー）をサポート | E-01 (行288: `analoginput=0`), E-37 (行55-80: analoginput=2,4の処理) | ○ |
| C-29 | 動画再生はMCI命令で行われる | E-35 (play_video.hsp行4: `mci "open\""+cmovfile+"\" type MPEGVideo alias v"`) | ○ |
| C-30 | bufferlengthのデフォルトは200ms、updateperiodのデフォルトは100ms | E-01 (行397-398: `bufferlength=200` / `updateperiod=100`) | ○ |
| C-31 | フレーム描画はダブルバッファリング方式（redraw 0→描画→redraw 1）で行われる | E-01 (行1218-1234: `redraw 0`/`redraw 1`), E-25 | ○ |
| C-32 | 多言語対応はlang/ディレクトリのテキストファイルで管理される | E-01 (行1246-1296: *refreshlangルーチン) | ○ |
| C-33 | キャッシュはバージョン更新時に全削除される | E-01 (行806-808: `if((currentver!=currentver2)&(buf!="")){gosub *delcache}`) | ○ |
| C-34 | エディタはUNDO機能を7回分保持する | E-02 (行208: `#define UNDO_MAX 7`) | ○ |
| C-35 | エディタのUNIT_MEASUREは192（ゲーム本体は10000） | E-02 (行181: `#define UNIT_MEASURE 192`), E-01 (行52: `#define UNIT_MEASURE 10000`) | ○ |
| C-36 | hosts変数は空文字列でインデベロッパーバージョン表記となる | E-01 (行183: `hosts=""`), E-01 (行196-198: 空文字列時に`[in-dev]`表示) | ○ |
| C-37 | BASS Audio Libraryの正確なバージョン | **根拠なし** | △ |
| C-38 | BASS FXの正確なバージョン | **根拠なし** | △ |
| C-39 | HSP bufferの最大使用番号が187である | **根拠なし**（コード内のbuffer番号を網羅的に追跡する必要がある） | △ |
| C-40 | KSHLib_GetVersionの最低要求バージョンは1663 | E-01 (行754: `KSHLib_GetVersion()<1663`) | ○ |
| C-41 | KSON_GetVersionの最低要求バージョンは1752 | E-01 (行760: `KSON_GetVersion()<1752`) | ○ |
| C-42 | libogg, libvorbis, mpglib, BASS_VST, hspinet, cryptlite, JSON for Modern C++がサードパーティ依存として使用される | E-38 (third_party_license.txt) | ○ |

## 4) 不足情報（Unknown / Missing）
- **BASSライブラリ群のバージョン情報**: ソースコード内にBASSライブラリのバージョン番号は記載されていない。`BASS_GetVersion()`の呼び出しは存在するがバージョン条件分岐はない。実際のDLLファイルを検査する必要がある。
  - 候補：bass.dll / bass_fx.dll / bass_vst.dll のファイルプロパティ確認 / BASS公式サイトでの公開日照合
- **HSP bufferの最大使用番号**: `buffer`命令の使用箇所がコード全体に分散しており、網羅的な追跡が困難。`kshootmania.hsp`内のコメント（行1: "buffer 187"の記載）からの推定値だが正確な検証が必要。
  - 候補：grepによる全buffer命令の使用箇所収集
- **VSTプラグインDLLの同梱状況**: `fxdef.hsp`の定義から抽出したDLL名リストだが、実際にリポジトリ内にこれらのDLLが同梱されているかの確認は行っていない。
  - 候補：リポジトリ内のDLLファイル一覧確認

## 5) リスクフラグ（レビュー観点）
- **0: 低リスク** - アーキテクチャスタイル（手続き型・シーン遷移ベース）の記述はソースコードから明確に確認可能
- **0: 低リスク** - シーン遷移メカニズムの記述は`#enum`定義と`switch`文から直接確認可能
- **0: 低リスク** - DLL依存関係は`#uselib`宣言から網羅的に抽出可能
- **0: 低リスク** - 音声エフェクト定義は`fxdef.hsp`内に全定義がまとまっている
- **1: 中リスク** - ファイル間のグローバル変数依存関係は網羅的な追跡が困難。主要な変数のみ記載
- **1: 中リスク** - エディタ（kshooteditor.hsp）の詳細アーキテクチャはゲーム本体ほど深く分析していない（ファイルサイズが大きく全体の読込が不完全）
- **0: 低リスク** - 設定管理（config.ini）の読み書きはkshootmania.hsp内に完全な実装がある

## 6) レビュアーチェックリスト（最小）
- [ ] BASSライブラリ群の実際のバージョンを確認し、設計書に追記が必要か判断する
- [ ] kshooteditor.hspの完全な解析が必要な場合、エディタ固有のアーキテクチャ詳細を追記する
- [ ] VSTプラグインDLL（regawo.dll等）がリポジトリに同梱されているか確認する
- [ ] third_party/ディレクトリ内のモジュール一覧が網羅されているか確認する
- [ ] シーン遷移図の遷移パスが実際のコードと一致するか確認する（特にエッジケース：コースモード中断、コマンドライン起動等）
- [ ] アーキテクチャ構成図のmermaid記法が正しくレンダリングされるか確認する
