performance-profiler について
performance-profiler は、Node.js、Python、Go アプリケーションのプロファイリング用スキルです。CPU、メモリ、データベース、バンドル、負荷を対象に、基準値の測定からボトルネック特定、修正、結果検証までを支援します。
主な機能
- 01CPU プロファイリングとフレームグラフ
- 02メモリリーク分析
- 03データベースクエリ最適化
- 04フロントエンドバンドル分析
- 05k6 による負荷テスト
- 06変更前後の指標比較
活用シーン
- 01原因不明のアプリケーション遅延の調査
- 02メモリ増加やリーク疑いの追跡
- 03SLA に対するレイテンシの確認
- 04トラフィック急増前の容量テスト
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ borghei/ claude-skills --skill performance-profilerインストール後、Claude Code で/performance-profilerを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/cpu-and-memory-profiling.mddatabase-and-bundle.mdload-testing-and-methodology.mdscripts/benchmark_reporter.pybottleneck_detector.pyresource_analyzer.py詳細
パフォーマンスプロファイラー
Node.js、Python、Go アプリケーションの体系的なパフォーマンスプロファイリングを行います。フレームグラフで CPU のボトルネックを特定し、ヒープスナップショットでメモリーリークを検出し、バンドルサイズを分析し、データベースクエリーを最適化し、N+1 パターンを検出します。また、k6 と Artillery で負荷テストを実行します。まず計測する方法論を徹底し、ベースラインを確立し、ボトルネックを特定して修正し、改善を検証します。
基本原則 — まず計測する: プロファイリング → ボトルネックの確認 → 修正 → 再計測 → 改善の検証。最適化ごとに、ベースラインのメトリクス、プロファイラーの証拠、修正内容、修正後のメトリクス、および差分が必要です。ルールの全文は references/cpu-and-memory-profiling.md を参照してください。
主な機能
- CPU プロファイリング — Clinic.js/V8 フレームグラフ(Node)、py-spy/cProfile/scalene(Python)、pprof(Go)、Chrome DevTools(ブラウザー)。
- メモリープロファイリング — ヒープスナップショットと変更前後の比較、GC 負荷の分析、リーク検出、保持オブジェクトグラフ。
- データベースの最適化 — EXPLAIN ANALYZE の実行計画の読み取り、N+1 の検出とバッチ処理、スロークエリーログ、インデックス不足の特定、コネクションプールのサイズ調整。
- バンドル分析 — webpack/Next.js アナライザー、ツリーシェイキング、動的インポート、サイズの大きい依存関係の特定。
- 負荷テスト — k6 の段階的負荷増加スクリプト、CI での SLA しきい値の適用、P50/P95/P99 レイテンシーの追跡、同時ユーザーのシミュレーション。
使用する場面
- アプリの動作が遅いものの、ボトルネックがどこにあるかわからない場合。
- リリース前に P99 レイテンシーが SLA を超えている場合。
- メモリー使用量が時間とともに増加している場合(リークの疑い)。
- 依存関係の追加後にバンドルサイズが増加した場合。
- トラフィックの急増に備える場合(リリース前の負荷テスト)。
- データベースクエリーに 100ms を超える時間がかかる場合、または依存関係のアップグレード後にリグレッションがないことを確認する場合。
まず確認すること
プロファイリングの前に、以下の入力内容を確定してください。不足している情報や曖昧な情報によって結果が変わる場合は質問してください。結果が変わらない場合は妥当なデフォルト値を使用し、使用した値を明示してください。
- ランタイムと症状: Node / Python / Go と、CPU / メモリー / バンドル / クエリー / 負荷急増(プロファイラーとツールチェーンを選択します)。
- ベースラインと SLA の目標: 現在の数値と、達成すべき P95/P99(またはサイズ)のしきい値(差分を検証するには、まず計測する必要があります)。
- 環境: ローカル / ステージング / 本番の違いにより、安全なプロファイリング方法と負荷テストの可否が決まります。
すべての項目ではなく、この依頼で特に重要な 2〜3 項目について質問してください。ユーザーがすぐに結果を求めている場合は、結果を提示し、冒頭で前提を明示してください。
ツール
| ツール | 用途 | コマンド |
|---|---|---|
benchmark_reporter.py | ベンチマーク結果を解析し、しきい値と比較してリグレッションや改善を報告します | python scripts/benchmark_reporter.py results.json --fail-on-regression |
bottleneck_detector.py | ログやトレースを分析し、レイテンシー、クエリー、スパンの遅延を検出します | python scripts/bottleneck_detector.py trace.json --latency-threshold 200 |
resource_analyzer.py | CPU / メモリー / ディスクの使用状況データを分析し、異常や傾向を検出します | python scripts/resource_analyzer.py metrics.json --cpu-threshold 80 |
3 つのツールはいずれも、ファイルパスまたは標準入力を示す - を受け付け、--json をサポートします。
参考資料
タスクに合った参考資料を読み込んでください。このファイルは簡潔に保ち、必要に応じて詳細を参照します。
- references/cpu-and-memory-profiling.md — Measure-First ルールの詳細、Node.js の CPU プロファイリング(Clinic.js のフレームグラフ、V8 CPU プロファイル)、メモリリークの検出(Node のヒープスナップショット、Python の memray/tracemalloc)を説明しています。CPU またはメモリの問題を調査する際に読んでください。
- references/database-and-bundle.md — EXPLAIN ANALYZE のワークフロー、N+1 の検出パターンとミドルウェアスクリプト、Next.js バンドルアナライザーのセットアップ、簡易サイズチェック、よくあるバンドル最適化の効果をまとめた表を掲載しています。クエリまたはバンドルサイズを最適化する際に読んでください。
- references/load-testing-and-methodology.md — k6 の負荷テストスクリプトの詳細、変更前後の測定テンプレート、すぐにできる最適化のチェックリスト、よくある落とし穴、ベストプラクティス、トラブルシューティング表、成功基準を掲載しています。負荷テストを行う際、または改善内容を記録する際に読んでください。
対象範囲と制限事項
このスキルで扱う内容:
- フレームグラフとヒープスナップショットを使った、Node.js、Python、Go アプリケーションの CPU およびメモリのプロファイリング
- EXPLAIN ANALYZE の解釈、N+1 の検出、インデックスの推奨事項など、データベースクエリの最適化
- webpack および Next.js プロジェクトにおけるフロントエンドバンドルの分析とサイズ削減の戦略
- ランプアップパターン、しきい値の適用、CI との統合を含む、k6 による負荷テストの手法
このスキルでは扱わない内容:
- アプリケーションパフォーマンス監視(APM)プラットフォームのセットアップと設定(Datadog、New Relic、Grafana)—
engineering/observability-designerを参照してください - インフラストラクチャレベルのパフォーマンスチューニング(カーネルパラメーター、ネットワークスタック、コンテナのリソース制限)—
engineering/senior-devopsを参照してください - DDoS 対策やレート制限など、セキュリティに関わるパフォーマンス上の問題 —
engineering/senior-securityを参照してください - モバイルアプリケーションのプロファイリング(iOS Instruments、Android Profiler)—
engineering/senior-mobileを参照してください
統合ポイント
| スキル | 統合内容 | データフロー |
|---|---|---|
engineering/observability-designer | パフォーマンスプロファイリングの結果を可観測性ダッシュボードの設計に反映し、プロファイリングのベースラインからアラートのしきい値を導き出します | プロファイリングのベースラインと SLA のしきい値 → Prometheus/Grafana のアラートルールとダッシュボードパネル |
engineering/ci-cd-pipeline-builder | k6 の負荷テストとバンドルサイズのチェックを、CI パイプラインのゲートとして統合します | k6 のしきい値設定とバンドル予算スクリプト → CI パイプラインのステージ定義 |
engineering/database-designer | クエリ最適化の推奨事項をスキーマ設計の判断に反映し、インデックスの提案をスキーママイグレーションにフィードバックします | EXPLAIN ANALYZE の結果とインデックスの推奨事項 → スキーママイグレーションファイルとインデックス定義 |
engineering/senior-backend | バックエンドのアーキテクチャ設計にプロファイリングデータを取り入れ、負荷テストによってコネクションプールのサイズ設定とキャッシュ戦略を検証します | プロファイリングレポートと負荷テストの結果 → アーキテクチャ決定記録と実装ガイダンス |
engineering/tech-debt-tracker | パフォーマンスの低下や未解決のボトルネックを、測定した影響とともに技術的負債の項目として追跡します | 変更前後の測定レポートと未解決の調査結果 → 影響を定量化した技術的負債のバックログ |
engineering/senior-frontend | バンドル分析の結果をフロントエンド最適化作業に反映し、コード分割や遅延読み込みの判断をプロファイラーデータで裏付けます | バンドルアナライザーの出力と Lighthouse スコア → フロントエンド最適化タスクとコンポーネントのリファクタリング計画 |