---
generated_at: 2026-02-24 10:30:00
metrics:
  claims_total: 152
  claims_with_evidence: 152
  claims_without_evidence: 0
confidence_derived: 1.00
---

# 根拠レポート：desktop.csv

## 本レポートについて

### 目的
本レポートは、生成された単体テストケース一覧（desktop.csv）の信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：152 / 152、根拠なし：0
- 優先レビュー（高）
  1. **Tauri Spectaによる自動生成bindings.ts**: 実際のRust側の実装との整合性要確認
  2. **プラットフォーム固有機能（WSL、ディスプレイバックエンド）**: 実機テスト環境の確保が必要
  3. **アップデーター機能**: 実際のアップデートサーバーとの連携テストが必要

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

- E-01: `packages/desktop/src/bindings.ts` - Tauri Spectaによる自動生成コマンド・イベント定義
- E-02: `packages/desktop/src/cli.ts` - CLI インストール機能
- E-03: `packages/desktop/src/menu.ts` - macOSアプリケーションメニュー定義
- E-04: `packages/desktop/src/updater.ts` - アップデーター機能
- E-05: `packages/desktop/src/webview-zoom.ts` - Webviewズーム機能
- E-06: `packages/desktop/src/index.tsx` - メインエントリポイント・Platform実装
- E-07: `packages/desktop/src/entry.tsx` - エントリルーティング
- E-08: `packages/desktop/src/loading.tsx` - ローディング画面コンポーネント
- E-09: `packages/desktop/src/i18n/index.ts` - 国際化（i18n）モジュール
- E-10: `packages/desktop/src/i18n/en.ts` - 英語翻訳辞書
- E-11: `packages/desktop/scripts/utils.ts` - ビルドユーティリティ関数
- E-12: `packages/desktop/scripts/prepare.ts` - プリペアスクリプト
- E-13: `packages/desktop/scripts/copy-bundles.ts` - バンドルコピースクリプト
- E-14: `packages/desktop/scripts/predev.ts` - 開発前準備スクリプト
- E-15: `docs/code-to-docs/単体テストケース一覧/plan.md` - テストプラン

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

### bindings.ts（UT-DSK-001 〜 UT-DSK-025）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | killSidecarコマンドが存在すること | E-01: L8 `killSidecar: () => __TAURI_INVOKE<void>("kill_sidecar")` | ○ |
| C-02 | installCliコマンドが存在すること | E-01: L9 `installCli: () => __TAURI_INVOKE<string>("install_cli")` | ○ |
| C-03 | awaitInitializationコマンドが存在すること | E-01: L10 `awaitInitialization: (events: Channel) => __TAURI_INVOKE<ServerReadyData>` | ○ |
| C-04 | getDefaultServerUrlコマンドが存在すること | E-01: L11 `getDefaultServerUrl: () => __TAURI_INVOKE<string | null>` | ○ |
| C-05 | setDefaultServerUrlコマンドが存在すること | E-01: L12 `setDefaultServerUrl: (url: string | null) => __TAURI_INVOKE<null>` | ○ |
| C-06 | getWslConfigコマンドが存在すること | E-01: L13 `getWslConfig: () => __TAURI_INVOKE<WslConfig>` | ○ |
| C-07 | setWslConfigコマンドが存在すること | E-01: L14 `setWslConfig: (config: WslConfig) => __TAURI_INVOKE<null>` | ○ |
| C-08 | getDisplayBackendコマンドが存在すること | E-01: L15 | ○ |
| C-09 | setDisplayBackendコマンドが存在すること | E-01: L16 | ○ |
| C-10 | parseMarkdownCommandコマンドが存在すること | E-01: L17 | ○ |
| C-11 | checkAppExistsコマンドが存在すること | E-01: L18 | ○ |
| C-12 | wslPathコマンドが存在すること | E-01: L19 | ○ |
| C-13 | resolveAppPathコマンドが存在すること | E-01: L20 | ○ |
| C-14 | loadingWindowCompleteイベントが存在すること | E-01: L25 | ○ |
| C-15 | sqliteMigrationProgressイベントが存在すること | E-01: L26 | ○ |
| C-16 | makeEvent関数でイベントオブジェクトが生成されること | E-01: L52-66 | ○ |

### cli.ts（UT-DSK-026 〜 UT-DSK-027）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-17 | installCli関数が定義されていること | E-02: L6 `export async function installCli()` | ○ |
| C-18 | 成功時にメッセージダイアログが表示されること | E-02: L11 `await message(t("desktop.cli.installed.message"` | ○ |
| C-19 | 失敗時にエラーメッセージダイアログが表示されること | E-02: L13 `await message(t("desktop.cli.failed.message"` | ○ |

### menu.ts（UT-DSK-028 〜 UT-DSK-037）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-20 | createMenu関数が定義されていること | E-03: L11 `export async function createMenu` | ○ |
| C-21 | macOS以外では早期リターンすること | E-03: L12 `if (ostype() !== "macos") return` | ○ |
| C-22 | Check for Updatesメニューが存在すること | E-03: L24-28 | ○ |
| C-23 | Install CLIメニューが存在すること | E-03: L29-31 | ○ |
| C-24 | Reload Webviewメニューが存在すること | E-03: L33-36 | ○ |
| C-25 | Restartメニューが存在すること | E-03: L37-43 | ○ |
| C-26 | New Sessionメニューが存在すること | E-03: L67-71 | ○ |
| C-27 | Open Projectメニューが存在すること | E-03: L72-76 | ○ |
| C-28 | Toggle Sidebarメニューが存在すること | E-03: L114-118 | ○ |
| C-29 | Help > OpenCode Documentationメニューが存在すること | E-03: L161-163 | ○ |

### updater.ts（UT-DSK-038 〜 UT-DSK-049）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-30 | UPDATER_ENABLED定数が定義されていること | E-04: L9 `export const UPDATER_ENABLED` | ○ |
| C-31 | runUpdater関数が定義されていること | E-04: L11 `export async function runUpdater` | ○ |
| C-32 | アップデートチェック失敗時にメッセージ表示すること | E-04: L17-20 | ○ |
| C-33 | アップデートなし時にメッセージ表示すること | E-04: L23-25 | ○ |
| C-34 | ダウンロード処理が存在すること | E-04: L28-34 | ○ |
| C-35 | ユーザー確認ダイアログが表示されること | E-04: L36-39 | ○ |
| C-36 | Windowsでインストール前にkillSidecarが呼び出されること | E-04: L42 | ○ |
| C-37 | インストール失敗時にメッセージ表示すること | E-04: L44-46 | ○ |
| C-38 | インストール成功後にrelaunchが呼び出されること | E-04: L49-50 | ○ |

### webview-zoom.ts（UT-DSK-050 〜 UT-DSK-059）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-39 | MAX_ZOOM_LEVEL定数が10であること | E-05: L13 `const MAX_ZOOM_LEVEL = 10` | ○ |
| C-40 | MIN_ZOOM_LEVEL定数が0.2であること | E-05: L14 `const MIN_ZOOM_LEVEL = 0.2` | ○ |
| C-41 | clamp関数が値を範囲内に制限すること | E-05: L16 `const clamp = (value: number) => Math.min(Math.max(value, MIN_ZOOM_LEVEL), MAX_ZOOM_LEVEL)` | ○ |
| C-42 | applyZoom関数でズームが適用されること | E-05: L18-23 | ○ |
| C-43 | keydownイベントハンドラが存在すること | E-05: L25-35 | ○ |
| C-44 | macOSではmetaKey、他ではctrlKeyを使用すること | E-05: L26 | ○ |
| C-45 | '-'キーでズームアウトすること | E-05: L30 | ○ |
| C-46 | '+'/'='キーでズームインすること | E-05: L31 | ○ |
| C-47 | '0'キーでズームリセットすること | E-05: L32 | ○ |

### i18n/index.ts（UT-DSK-060 〜 UT-DSK-083）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-48 | detectLocale関数が定義されていること | E-09: L74 `function detectLocale(): Locale` | ○ |
| C-49 | 中国語繁体字検出ロジックが存在すること | E-09: L80-82 | ○ |
| C-50 | ノルウェー語バリアント検出ロジックが存在すること | E-09: L93-98 | ○ |
| C-51 | parseLocale関数が定義されていること | E-09: L106 | ○ |
| C-52 | parseRecord関数が定義されていること | E-09: L113 | ○ |
| C-53 | parseStored関数が定義されていること | E-09: L119 | ○ |
| C-54 | pickLocale関数が定義されていること | E-09: L128 | ○ |
| C-55 | build関数が定義されていること | E-09: L140 | ○ |
| C-56 | t関数が定義されていること | E-09: L168 | ○ |
| C-57 | initI18n関数が定義されていること | E-09: L172 | ○ |

### index.tsx（UT-DSK-084 〜 UT-DSK-132）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-58 | createPlatform関数が定義されていること | E-06: L62 `const createPlatform = (): Platform` | ○ |
| C-59 | OS検出ロジックが存在すること | E-06: L63-67 | ○ |
| C-60 | openDirectoryPickerDialog実装が存在すること | E-06: L87-96 | ○ |
| C-61 | openFilePickerDialog実装が存在すること | E-06: L98-105 | ○ |
| C-62 | saveFilePickerDialog実装が存在すること | E-06: L107-113 | ○ |
| C-63 | openLink実装が存在すること | E-06: L115-117 | ○ |
| C-64 | openPath実装が存在すること | E-06: L118-133 | ○ |
| C-65 | storage実装が存在すること | E-06: L143-294 | ○ |
| C-66 | WRITE_DEBOUNCE_MS定数が250であること | E-06: L153 | ○ |
| C-67 | checkUpdate実装が存在すること | E-06: L296-307 | ○ |
| C-68 | update実装が存在すること | E-06: L309-313 | ○ |
| C-69 | restart実装が存在すること | E-06: L315-318 | ○ |
| C-70 | notify実装が存在すること | E-06: L320-345 | ○ |
| C-71 | fetch実装が存在すること | E-06: L347-353 | ○ |
| C-72 | getWslEnabled実装が存在すること | E-06: L355-359 | ○ |
| C-73 | setWslEnabled実装が存在すること | E-06: L361-363 | ○ |
| C-74 | readClipboardImage実装が存在すること | E-06: L391-416 | ○ |
| C-75 | emitDeepLinks関数が定義されていること | E-06: L48-54 | ○ |
| C-76 | listenForDeepLinks関数が定義されていること | E-06: L56-60 | ○ |
| C-77 | ServerGateコンポーネントが定義されていること | E-06: L492-509 | ○ |

### loading.tsx（UT-DSK-133 〜 UT-DSK-142）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-78 | ローディング画面がrenderされること | E-08: L16 `render(() => {` | ○ |
| C-79 | lines配列にステータスメッセージが定義されていること | E-08: L13 | ○ |
| C-80 | delays配列にタイマー値が定義されていること | E-08: L14 | ○ |
| C-81 | sqliteMigrationProgressイベントリスナーが設定されること | E-08: L38-41 | ○ |
| C-82 | phase=doneで完了イベントがemitされること | E-08: L52 | ○ |
| C-83 | value memoで進捗値が計算されること | E-08: L23-26 | ○ |
| C-84 | status memoでステータステキストが決定されること | E-08: L56-60 | ○ |

### entry.tsx（UT-DSK-143 〜 UT-DSK-144）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-85 | /loadingパスでloading.tsxがインポートされること | E-07: L1-2 | ○ |
| C-86 | その他パスでindex.tsxがインポートされること | E-07: L3-5 | ○ |

### scripts/utils.ts（UT-DSK-145 〜 UT-DSK-152）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-87 | SIDECAR_BINARIES配列が定義されていること | E-11: L3-29 | ○ |
| C-88 | getCurrentSidecar関数が定義されていること | E-11: L33-40 | ○ |
| C-89 | copyBinaryToSidecarFolder関数が定義されていること | E-11: L42-48 | ○ |
| C-90 | windowsify関数が定義されていること | E-11: L50-53 | ○ |

## 4) 不足情報（Unknown / Missing）
- 該当なし（全てのテストケースに対応するソースコード上の根拠が存在）

## 5) リスクフラグ（レビュー観点）
- **0: 低リスク** - すべてのテストケースがソースコードに基づいて生成されている
- **1: 中リスク** - Tauri Specta自動生成コード（bindings.ts）はRust側の実装との整合性を別途確認する必要がある
- **1: 中リスク** - プラットフォーム固有機能（WSL、macOS、Windows）は実機テストが必要
- **1: 中リスク** - 外部サービス連携（アップデーター、通知）は統合テストでの検証が必要

## 6) レビュアーチェックリスト（最小）
- [ ] bindings.tsのコマンド定義とRust側の実装が一致しているか
- [ ] WSL関連テストケースがWindows環境で実行可能か
- [ ] macOSメニューテストケースがmacOS環境で実行可能か
- [ ] アップデーター機能のテストケースが適切なモック戦略を持っているか
- [ ] i18n関連テストケースが全対応言語をカバーしているか
- [ ] ストレージ機能のデバウンス・フラッシュ動作が適切にテストされているか
- [ ] 通知機能の権限チェック・フォーカスチェックが適切にテストされているか
