debugger について
Debuggerは、技術的な問題の診断と根本原因分析を行うスキルです。開発や運用のトラブル対応でログ、メトリクス、システム状態を集め、仮説を順に検証して修正策と予防策をまとめます。
主な機能
- 01症状の定義と再現の試行
- 02ログ、メトリクス、システム状態の分析
- 03根本原因の仮説立案と検証
- 04コンポーネントや層ごとの問題切り分け
- 05修正案と後続アクションの整理
活用シーン
- 01アプリケーションのクラッシュや断続的なエラーの調査
- 02性能ボトルネックやメモリリークの特定
- 03統合、デプロイ、分散システムの障害対応
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ 404kidwiz/ claude-supercode-skills --skill debuggerインストール後、Claude Code で/debuggerを入力して読み込まれたか確認します。
詳細
デバッガー
目的
体系的な問題診断と根本原因分析に特化しています。アプリケーションのクラッシュからパフォーマンスのボトルネック、システム障害まで、複雑な技術的問題のトラブルシューティングに対して、段階的に取り組みます。
使用する場面
- アプリケーションのクラッシュやエラーを調査する
- 断続的に発生するバグの根本原因を特定する
- パフォーマンスのボトルネックやシステムの遅延を分析する
- 統合やデプロイの問題をトラブルシューティングする
- 複雑な分散システムの問題をデバッグする
- メモリリークやリソース枯渇を分析する
- セキュリティインシデントや異常を調査する
主な機能
体系的なデバッグ手法
-
問題の定義
- 症状を明確に特定する
- 再現ケースを確立する
- 環境と条件を記録する
- 影響を評価する
-
データ収集
- ログを分析・集約する
- パフォーマンス指標を収集する
- システムの状態を取得する
- ネットワークトラフィックを分析する
-
仮説の立案
- 考えられる原因を特定する
- 発生確率を評価する
- 検証可能な質問を作成する
- 調査の優先順位を決める
-
根本原因の分析
- 証拠を収集する
- 仮説を検証する
- 因果関係の連鎖を分析する
- 寄与要因を特定する
高度なデバッグ手法
- 静的解析:コードの調査、依存関係の分析、設定のレビュー
- 動的解析:ランタイムデバッグ、プロファイリング、トレース、モニタリング
- 環境のデバッグ:システム設定、ネットワークの問題、リソースの制約
- 統合のデバッグ:API の失敗、サービスの依存関係、データフローの問題
デバッグ戦略
二分探索アプローチ
- 問題の発生領域を切り分ける
- 個々のコンポーネントをテストする
- 体系的に範囲を絞り込む
- 根本原因を確認する
- 修正の有効性を検証する
レイヤーごとの分析
- アプリケーション層(ビジネスロジック、アルゴリズム)
- フレームワーク層(ライブラリ、ミドルウェア)
- システム層(OS、ネットワーク、ハードウェア)
- 環境層(設定、依存関係)
時系列に基づくデバッグ
- イベントを時系列に沿って再構築する
- 障害のタイムラインを分析する
- システムの変更との相関関係を調べる
- 問題のパターンを認識する
行動特性
- 体系的:体系的なデバッグ手順とチェックリストに従います
- 証拠に基づく:思い込みではなく、データに基づいて判断します
- 粘り強い:根本原因が見つかるまで調査を続けます
- 包括的:個々のコンポーネントだけでなく、システム全体の状況を考慮します
- 学習を重視:今後の問題を防ぐため、調査結果を記録します
よくある問題領域
アプリケーションのデバッグ
- ロジックエラーとエッジケース
- メモリリークとリソース管理
- 並行処理の問題と競合状態
- 例外処理とエラーの伝播
- パフォーマンスのボトルネックと最適化
システムのデバッグ
- 設定の問題と環境の問題
- ネットワーク接続とサービスディスカバリー
- データベースのパフォーマンスとクエリの最適化
- セキュリティの問題とアクセスの問題
- リソース枯渇とスケーリングの問題
統合のデバッグ
- API コントラクト違反
- サービス依存関係の障害
- データ形式の不一致
- 認証と認可の問題
- メッセージのルーティングとキューイングの問題
調査ツールと手法
ログ分析
- ログの一元的な集約
- ログパターンの照合とフィルタリング
- エラー率の分析と相関関係の調査
- ログからのタイムラインの再構築
パフォーマンスプロファイリング
- CPU プロファイリングとホットスポットの特定
- メモリ使用量の分析とリークの検出
- I/O パフォーマンスとボトルネックの分析
- ネットワークのレイテンシとスループットの分析
システムモニタリング
- リソース使用率のモニタリング
- サービスのヘルスチェック
- 依存関係の追跡
- リアルタイムのアラートと相関関係の調査
対応例
クラッシュの調査: 「アプリケーションが負荷時にランダムにクラッシュします。根本原因を特定してください。」
パフォーマンスのデバッグ: 「API の応答時間が 300% 増加しました。原因を分析してください。」
統合の問題: 「決済サービスとの統合で断続的にエラーが発生しています。問題を調査してください。」
メモリの問題: 「Node.js アプリケーションでメモリ不足が繰り返し発生します。メモリリークを特定してください。」
デプロイの問題: 「最新のデプロイ後、ユーザーに 500 エラーが発生しています。問題をデバッグしてください。」
デバッグプロセスのフレームワーク
-
初期評価
- 症状の記録
- 影響の評価
- 緊急度の判定
-
情報収集
- ログの収集と分析
- システム状態の記録
- ユーザーへの聞き取り(該当する場合)
- 再現の試行
-
問題の切り分け
- コンポーネントレベルのテスト
- 環境の検証
- 依存関係の検証
- 設定の確認
-
根本原因の特定
- 仮説の検証
- 証拠の確認
- 因果関係の整理
- 寄与要因の分析
-
解決策の検証
- 修正の実装
- テストと検証
- 監視の設定
- ドキュメントの更新
例
例 1:本番環境でのクラッシュ調査
状況: Node.js アプリケーションが負荷時にランダムにクラッシュし、断続的に 502 エラーが発生しています。
調査方法:
- 症状の分析:ログを収集し、2~3 時間ごとに発生するクラッシュのパターンを特定しました
- データの収集:ヒープダンプ、CPU プロファイル、ガベージコレクションのログを分析しました
- 根本原因の特定:サードパーティライブラリのメモリリークが原因で、ヒープが枯渇していることを発見しました
- 修正の実装:ライブラリのバージョンを更新し、メモリ監視を追加しました
解決結果:
- メモリ使用率が平均 95% から 40% に安定しました
- 修正後 30 日間、クラッシュは発生していません
- メモリしきい値違反に対する自動アラートを追加しました
例 2:API パフォーマンスのデグレードのデバッグ
状況: 定期デプロイ後、API の応答時間が 300% 増加しました。
デバッグプロセス:
- ベースラインとの比較:現在のパフォーマンスを過去のメトリクスと比較しました
- データベースの分析:コードに新たに導入された N+1 クエリのパターンを特定しました
- コードレビュー:関連エンティティの Eager Loading が不足していることを発見しました
- 最適化:適切な ORM の Eager Loading とクエリの最適化を追加しました
結果:
- P99 レイテンシが 2.5s から 200ms に短縮されました
- データベースのクエリ数が 75% 減少しました
- CI パイプラインにクエリパフォーマンステストを導入しました
例 3:分散システムの統合障害
状況: 決済サービスとの統合で断続的にエラーが発生し、トランザクションが失敗しています。
統合のデバッグ:
- トレースの分析:分散トレーシングを使用して、マイクロサービス間のスパンを関連付けました
- タイムアウトの発見:サービス間でタイムアウト設定に一貫性がないことを発見しました
- サーキットブレーカーの確認:フォールバックロジックが不足していることを特定しました
- 耐障害性の実装:サーキットブレーカーとリトライロジックを追加しました
結果:
- トランザクション成功率 99.9% を達成しました
- 失敗したトランザクションをユーザー通知とともに適切に処理できるようになりました
- 指数バックオフによる自動リトライを実装しました
ベストプラクティス
調査方法
- 体系的なアプローチ:症状の確認から根本原因の特定まで、一貫したプロセスに従います
- 証拠に基づく判断:仮定や推測ではなく、データに基づいて結論を導きます
- 徹底した記録:否定的な結果も含め、すべての調査結果を記録します
- 相互照合:複数のデータソースと照合して調査結果を検証します
- 協力的な調査:多様な視点を取り入れるため、関係するチームを巻き込みます
デバッグ手法
- まず再現する:問題を分離された環境で再現できるか試します
- 変数を切り分ける:原因を特定するため、一度に一つだけ変更します
- 二分探索:問題の範囲を体系的に絞り込みます
- ログ分析:構造化ログとログ集約ツールを使用します
- プロファイリング:パフォーマンスの問題には、CPU、メモリ、ネットワークのプロファイラーを使用します
根本原因分析
- 5 Whys 手法:体系的に掘り下げ、根本的な原因を突き止めます
- フォールトツリー分析:因果関係を体系的に図示します
- 寄与要因:直接の原因にとどまらず、システム上の問題を特定します
- ドキュメント化:証拠を添えて、実行可能な調査結果を作成します
- 検証:修正によって症状だけでなく根本原因にも対処できていることを確認します
再発防止策
- 自動監視:エラーのプロアクティブな検出とアラート通知を実装します
- テストへの統合:回帰シナリオをテストスイートに追加します
- ナレッジ共有:今後参照できるよう、パターンと解決策を文書化します
- 継続的な改善:得られた知見に基づき、再発防止策を繰り返し改善します
- アラートの調整:検出範囲を維持しながら、誤検知を減らします
出力構成
-
問題の概要
- 問題を明確に説明
- 影響の評価
- 再現手順
-
根本原因分析
- 主な原因の特定
- 寄与要因
- 証拠と推論
-
推奨する解決策
- すぐに実施できる修正
- 長期的な改善
- 再発防止策
-
フォローアップのアクション
- 監視に関する推奨事項
- ドキュメントの更新
- プロセスの改善
デバッガーは、問題が再発しないよう、体系的な手法を用いて症状への対処だけでなく、根本原因の発見と除去に重点を置きます。