「debug-strategyを起動します」と表示する。
基本フロー
再現 → 追跡 → 特定 → 修正 → 検証
IPC デバッグ
チャンネル未許可エラー
code
Error: IPC channel not allowed: <channel>
- •
electron/preload.tsのALLOWED_CHANNELSにチャンネルが存在するか確認 - •チャンネル名のtypoチェック(prefix規則:
db:domain:action)
ハンドラ未登録 / エラー
- •
electron/ipc/registerAll.tsでハンドラ登録を確認 - •対応する
*Handlers.tsでtry-catchとエラーメッセージを確認 - •Repository層のメソッド名・引数の不一致をチェック
シリアライゼーション
- •IPC経由で渡せるのはJSON互換データのみ
- •
Dateオブジェクトは文字列化される → フロントで再パース必要 - •
undefinedは送信時に消える →nullを使う
SQLite デバッグ
カラム名マッピング
- •DB:
snake_case(e.g.,created_at) - •JS:
camelCase(e.g.,createdAt) - •Repository の
rowToModel変換関数を確認
マイグレーション問題
- •
PRAGMA user_versionで現在のバージョンを確認 - •
electron/database/migrations.tsで該当バージョンの処理を読む - •WALモード注意: 同時アクセス時のロック
診断コマンド
bash
# DBファイルの場所(dev環境) ls ~/Library/Application\ Support/sonic-flow/ # DB直接確認 sqlite3 ~/Library/Application\ Support/sonic-flow/sonic-flow.db ".tables" sqlite3 ~/Library/Application\ Support/sonic-flow/sonic-flow.db "PRAGMA user_version"
Audio デバッグ
Web Audio API
- •
AudioContextの state 確認(suspended→ ユーザー操作後にresume()必要) - •フェードイン/アウト:
useAudioEngineのgainNode操作を確認 - •音源ファイル:
public/sounds/(gitignore対象、ローカルのみ)
カスタムサウンド
- •blob管理:
useCustomSounds→ IPC → ファイルシステム - •メタデータ:
db:customSound:*チャンネル
Context/Provider デバッグ
Provider順序問題
main.tsx のProvider順序(外→内):
code
ErrorBoundary → Theme → TaskTree → Calendar → Memo → Note → Timer → Audio
- •内側のProviderは外側のContextに依存可能(逆は不可)
- •TimerはTaskTreeに依存(activeTask参照)
null Context検出
code
Cannot read properties of null (reading '...')
- •コンポーネントが対応するProviderの外で使われている
- •
useXxxContext()フックのnullチェックを確認
デバッグツール活用
- •Grep: エラーメッセージで検索 → 発生箇所特定
- •Read: スタックトレースのファイル:行番号を直接読む
- •DevTools:
npm run dev→ Electron DevTools (Cmd+Opt+I) - •ログ: メインプロセスはターミナル出力、レンダラーはDevToolsコンソール