Skip to content
Development
Command

/performance-analysis

性能問題の原因を調査する

BOOST
From plugin
tsumiki
97443 skills43 commands
Install
> /plugin marketplace add classmethod/tsumiki
> /plugin install tsumiki@tsumiki

How it fires

How this command gets triggered: by you, by Claude, or both.

  • Fires itselfClaude auto-loads it when your prompt matches the work.
  • You can call itInvoke it directly when you want it.
  • Slash command/performance-analysis

Context preview

What this command does when you run it.

性能問題の原因を調査する

Command definition

performance-analysis.md
description: 性能問題の原因を調査する
allowed-tools: Read, Glob, Grep, Task, Bash, AskUserQuestion, TodoWrite
argument-hint: "[調査対象(機能名/エンドポイント/画面/自然言語)]"

性能問題の原因を特定するための包括的な調査を実施します。初期調査、詳細な原因分析、最終サマリーを段階的に作成し、性能問題の根本原因を明らかにします。

context

出力ディレクトリ=".dcs" カレントディレクトリ={{プロジェクトルート}} 分析ファイルリスト=[] 調査回数=0

step

  • $1 がない場合、「引数に調査対象を指定してください(例: エンドポイント名、画面名、機能名、または自然言語)」と言って終了する
  • $1 の内容を簡潔に説明する
  • TodoWrite ツールで以下のタスクリストを作成する:

1. 性能問題の詳細情報を収集 2. 初期調査の実施 3. 原因候補の特定と詳細調査 4. 最終サマリーの作成

  • タスク1を in_progress にする
  • AskUserQuestion ツールを使って以下の質問を順番に実施し、context を更新する:

1. 性能劣化の症状を確認 2. 発生タイミングを確認 3. 影響範囲を確認 4. 環境情報を確認

  • 収集した context の内容をまとめてユーザに宣言する
  • タスク1を completed にして、タスク2を in_progress にする
  • step2 を実行する

step2

  • 既存の出力ファイルを確認して、重複しないナンバリングを決定する
  • {{出力ディレクトリ}}/{{timestamp}}_* を検索
  • 今回の内容を簡単に英語化したもの(例: "order_api", "cart_screen")を作成
  • 同じ timestamp と内容で既存ディレクトリがある場合、末尾の連番を +1 する
  • ベースディレクトリを "{{出力ディレクトリ}}/{{timestamp}}_{{内容の英語化}}" とする
  • 例: ".dcs/20251025_123456_order_api"
  • 例: ".dcs/20251025_123456_cart_screen"
  • 分析結果ファイルのリストを準備する
  • インデックスファイル: "{{ベースディレクトリ}}/index.md"
  • 初期調査ファイル: "{{ベースディレクトリ}}/initial.md"
  • 原因分析ファイル: "{{ベースディレクトリ}}/causes.md"
  • 推奨対応ファイル: "{{ベースディレクトリ}}/recommendations.md"
  • すべてのファイル名を 分析ファイルリスト に追加する
  • <performance_analysis_template> の内容を context の情報で埋めて、Task ツールで直接実行する
  • subagent_type: "general-purpose"
  • description: "性能劣化 初期調査の実行"
  • prompt: テンプレートの内容を context で埋めた完全なプロンプト
  • Task の実行結果を受け取る
  • 調査回数を 1 にする
  • タスク2を completed にして、タスク3を in_progress にする
  • step3 を実行する

step3

  • 出力されたファイルを Read で確認する
  • causes ファイルから原因候補をリストアップする
  • 各原因候補について詳細調査が必要かを判断する
  • 詳細調査が必要な場合:
  • 調査する原因候補をリストとしてユーザに提示する
  • ユーザの承認を得る
  • 各原因候補に対して個別に Task ツールで詳細調査を実行する
  • 各調査ごとに新しい連番で追加ファイルとして保存する(例: "detail_2.md", "detail_3.md")
  • 各ファイル名を 分析ファイルリスト に追加する
  • 調査回数を +1 する
  • 再度 step3 を実行する(詳細調査が不要になるまで繰り返す、最大5回)
  • 詳細調査が不要な場合:
  • タスク3を completed にして、タスク4を in_progress にする
  • step4 を実行する

step4

  • <summary_template> の内容を使って、Task ツールで最終サマリーファイルを作成する
  • subagent_type: "general-purpose"
  • description: "性能劣化調査 最終サマリーの作成"
  • prompt: サマリーテンプレートの内容を context で埋めた完全なプロンプト
  • 最終サマリーファイル名: "{{ベースディレクトリ}}/final_summary.md"
  • 全ての分析ファイルのパスを調査回数別に整理して表示する
  • 初期調査ファイル一覧
  • 詳細調査ファイル一覧(該当する場合)
  • 最終サマリー
  • タスク4を completed にする
  • 調査完了をユーザに報告する

rules

確認ポイント

AskUserQuestion ツールを使って、以下の質問を順番に実施する:

質問1: 性能問題の症状

  • **質問**: どのような性能問題が発生していますか?
  • **header**: "症状"
  • **multiSelect**: true
  • **options**:
  • "レスポンスが遅い" - API応答やページ表示が遅い
  • "タイムアウトが発生する" - 処理が完了せずタイムアウトする
  • "メモリ使用量が多い" - メモリリークやメモリ圧迫
  • "CPU使用率が高い" - CPUリソースを過剰に消費
  • "データベースが遅い" - DBクエリの実行が遅い
  • "その他" - 上記以外の症状(追記で詳細を指定)

質問2: 発生タイミング

  • **質問**: 性能問題はいつから発生していますか?
  • **header**: "発生時期"
  • **options**:
  • "最近のリリース後" - 特定のリリース後に発生
  • "データ量増加後" - データベースのデータが増えてから
  • "アクセス数増加後" - ユーザー数やトラフィックが増えてから
  • "特定の時間帯のみ" - ピーク時や特定時刻のみ
  • "常に発生" - システム起動時から常に遅い

質問3: 影響範囲

  • **質問**: 性能問題の影響範囲はどの程度ですか?
  • **header**: "影響範囲"
  • **options**:
  • "特定の機能のみ" - 一部の機能やページのみ
  • "特定のユーザーのみ" - 特定の条件下のユーザーのみ
  • "システム全体" - システム全体に影響
  • "不明" - 影響範囲が明確でない

質問4: 環境情報

  • **質問**: どの環境で発生していますか?
  • **header**: "環境"
  • **multiSelect**: true
  • **options**:
  • "本番環境" - 本番環境で発生
  • "ステージング環境" - ステージング環境で発生
  • "開発環境" - 開発環境で発生
  • "ローカル環境" - ローカル開発環境で発生

contextとして以下を保持する:

  • 調査対象(具体的な機能名やエンドポイント)
  • 性能劣化の症状
  • 発生タイミング
  • 影響範囲
  • 環境情報

ファイル名のルール

timestamp の形式

  • yyyyMMddHHmmss 形式(例: 20251025123456)

内容の英語化のルール

  • 調査対象を簡潔な英語に変換する
  • スネークケース(snake_case)を使用
  • 最大30文字程度に収める
  • 例:
  • "注文API" → "order_api"
  • "カート画面" → "cart_screen"
  • "商品検索" → "goods_search"

ファイル構成

  • `index.md` - インデックス(全体概要とファイル一覧)
  • `initial.md` - 初期調査結果
  • `causes.md` - 原因候補の分析
  • `recommendations.md` - 推奨対応
  • `detail_N.md` - 詳細調査結果(Nは連番)
  • `final_summary.md` - 最終サマリー

完全なファイル名の例

**初期調査**:

  • `.dcs/20251025123456_order_api/index.md`
  • `.dcs/20251025123456_order_api/initial.md`
  • `.dcs/20251025123456_order_api/causes.md`
  • `.dcs/20251025123456_order_api/recommendations.md`

**詳細調査**:

  • `.dcs/20251025123456_order_api/detail_2.md`
  • `.dcs/20251025123456_order_api/detail_3.md`

**最終サマリー**:

  • `.dcs/20251025123456_order_api/final_summary.md`

ファイルパスの記載ルール

  • **カレントディレクトリを基準とした相対パスを使用する**
  • フルパス(絶対パス)は記載しない
  • 例:
  • ❌ `/Users/makotan/projects/ensemble-si/backend/src/main/kotlin/...`
  • ✅ `backend/src/main/kotlin/...`

原因候補の分類

性能問題の原因候補を以下のカテゴリで分類する:

1. データベース関連

  • N+1クエリ問題
  • インデックスの欠如
  • 非効率なクエリ
  • トランザクションの長時間ロック
  • データ量の増加

2. アプリケーション層

  • メモリリーク
  • 不適切なキャッシュ戦略
  • 同期処理のボトルネック
  • 大量のオブジェクト生成
  • 非効率なアルゴリズム
  • 同一処理の重複実行

3. ネットワーク・通信

  • 外部API呼び出しの遅延
  • 不要な通信の繰り返し
  • 大容量データの転送
  • タイムアウト設定の不備

4. インフラ・環境

  • リソース不足(CPU、メモリ、ディスク)
  • ネットワーク帯域の問題
  • 環境設定の不備
  • ログ出力の過多

5. アーキテクチャ

  • 責務の集中
  • モジュール間の密結合
  • スケーラビリティの欠如

詳細調査が必要な条件

以下の条件のいずれかに該当する場合、詳細調査を提案する:

  • 原因候補が複数あり、特定に至っていない
  • データベースクエリの詳細な分析が必要
  • コードの実装詳細の確認が必要
  • 外部サービスとの連携部分の調査が必要
  • 環境設定やインフラの確認が必要
  • パフォーマンステストの結果分析が必要

step3 の繰り返しルール

  • 詳細調査が必要な項目がある場合、step3 を繰り返す
  • 最大5回まで繰り返す(無限ループ防止)
  • 詳細調査項目が複数ある場合は、各項目ごとに個別に Task を実行する
  • 各繰り返しで新しい連番のファイルを作成する
  • ユーザーの承認を得てから次の調査を実行する
  • 詳細調査が不要になったら step4 に進む

info

<performance_analysis_template> あなたは性能問題の調査エキスパートです。以下の情報に基づいて、性能問題の原因を調査し、ファイル出力してください。

調査対象の情報

調査対象: {{調査対象の具体的な情報}} 症状: {{性能劣化の症状}} 発生タイミング: {{発生タイミング}} 影響範囲: {{影響範囲}} 環境: {{環境情報}} ベースディレクトリ: {{ベースディレクトリ}}(例: ".dcs/20251025123456_order_api") カレントディレクトリ: {{カレントディレクトリ}}

重要な注意事項

**すべてのファイルパスは、カレントディレクトリを基準とした相対パスで記載してください。** **絶対パス(/Users/... や C:\\... など)は使用しないでください。**

例:

  • ❌ `/Users/makotan/projects/ensemble-si/backend/src/main/kotlin/...`
  • ✅ `backend/src/main/kotlin/...`

出力ファイル構成

調査結果は以下のファイルに分割して出力してください:

1. **インデックスファイル**: `{{ベースディレクトリ}}/index.md`

  • 全体概要と全ファイルへのリンク

2. **初期調査ファイル**: `{{ベースディレクトリ}}/initial.md`

  • プロジェクト概要と調査対象の詳細分析

3. **原因分析ファイル**: `{{ベースディレクトリ}}/causes.md`

  • 考えられる原因候補のリストと分析

4. **推奨対応ファイル**: `{{ベースディレクトリ}}/recommendations.md`

  • 具体的な改善提案と対応方針

調査手順

1. 調査対象の特定

  • 調査対象が自然言語の場合、Grep/Globで具体的なファイル・関数・クラスを特定する
  • 調査対象がエンドポイントの場合、対応するコントローラーやサ
Read more
Ships withtsumiki

TsumikiはAI駆動開発のためのフレームワークです。要件定義から実装まで、AIを活用した効率的な開発プロセスを提供します。 基本的にClaude Codeをサポートしますが、それ以外のツールでも使用できます。Claude Code以外のツールでtsumikiを使用する を参照してください。

Get the whole plugin

Other commands on tsumiki.

auto-debug
Command

auto-debug

テストエラーを解消するための自動デバッグプロセス。全テストケースの確認からエラー原因の調査、修正まで段階的に実行し、テストケースの成功率向上を目指します。

build-fix
Command

build-fix

ビルドエラー(コンパイルエラー、型エラー、依存パッケージ未解決)を自動的に分析・修正します。auto-debugから委譲される他、ユーザが直接呼び出すことも可能です。