Qtブログ(日本語)

エージェンティック開発向け QML プロファイラースキルのご紹介

作成者: Qt Group 日本オフィス|May 8, 2026 2:50:25 AM
このブログは「Introducing the QML Profiler Skill for Agentic Development」の抄訳です。

エージェンティック開発向け QML プロファイラースキルを使えば、行単位の地道な調査や低速なフレームグラフの確認に時間をかけることなく、コードのパフォーマンスプロファイリングを AI エージェントに委任できます。

このスキルは、開発者をワークフロー全体にわたってガイドし、QML プロファイラーを起動して生データを処理し、パフォーマンスのボトルネックを簡潔なレポートにまとめて改善案を提示します。

対象は 2D Qt Quick アプリケーションで、rendering、logic、memory、full の 4 つのプロファイリングモードをサポートしています。たとえばターゲットハードウェア上でパフォーマンストレースを取得済みの場合など、アプリを再実行せずに既存のトレースファイルを直接解析することも可能です。

動画:Claude Code CLI でのショッピングリストアプリの QML プロファイリング(一部シーンは短縮・加速)

コードプロファイリングスキルの起動タイミング 

AI エージェントは、開発者が Qt Quick アプリケーションのパフォーマンス問題を疑っている場合であれば、それが明確に言語化されていなくても QML プロファイラースキルを使用します。「UI が重い」「フレームが落ちている」「アプリがカクつく」といった漠然とした表現でも起動でき、アプリのプロファイリング、ホットスポットの特定、バインディング・シグナル・レンダリングの最適化といった明示的なリクエストにも対応します。すでにトレースを取得済みの開発者は、既存の .qtd ファイルを直接スキルに渡して解析することもでき、プロファイリングステップをスキップできます。 

QML プロファイラースキルの内部動作

このスキルが起動されることで、本来であれば開発者が適切なツールチェーンのバイナリを探し出し、適切なコンパイラオプションでビルドし、プロファイラを実行し、Qt Creator や VS Code でイベントリストを手作業で確認し、実際に処理負荷が高い箇所を特定しなければならないという一連の作業を、スキルが自動的に代行します。各ステップで何が起こるかを以下に説明します。

ステップ 1 — ツールの検出

AI エージェントはまずホスト OS を検出し、適切な Qt ディレクトリ構造とバイナリの命名規則を特定します。検出できない場合は、開発者に Qt インストールパスを直接指定するよう求めます。

ステップ 2 — QML デバッグの有効化

QML アプリケーションのプロファイリングには、QT_QML_DEBUG プリプロセッサフラグを付けてバイナリをコンパイルする必要があります。 

ステップ 3 — プロファイラーの実行

エージェントは、full(デフォルト)、rendering(シーングラフ、アニメーション、ピックスマップキャッシュ)、logic(JavaScript、バインディング、シグナルハンドラー、コンポーネント生成)、memory の 4 つのプロファイリングモードをサポートしています。アプリケーションの起動前に、エージェントはアプリを通常どおり操作して完了したら終了するよう開発者に通知します。トレースファイルはアプリ終了時にのみ書き込まれます。サンドボックス環境など、エージェントがバイナリを直接実行できない環境では、トレースファイルの手動作成方法をユーザーにガイドするフォールバック動作が行われます。すでにトレースを持っている開発者は、ファイルパスを直接渡すことでステップ 4 までスキップできます。

画像:Claude Code CLI で実行中の QML プロファイリングスキル

ステップ 4 — トレースの解析

トレースファイルを取得したエージェントは、バンドルされた Python パーサーを .qtd ファイルに対して実行します。パーサーは、イベントタイプとその合計時間、フレームごとの CPU コスト、アニメーションフレーム時間のパーセンタイル、メモリの割り当てと解放の統計、ピックスマップキャッシュを含む構造化された JSON サマリーを抽出します。この構造化された出力が、次のステップの解析の基盤となります。 

ステップ 5 — ホットスポットの分析

エージェントはパーサーの出力から上位のホットスポットを取得し、それぞれをプロジェクト内のソースファイルにマッピングします。ソースの位置が確認されると、エージェントはホットスポット周辺の約 15 行のコンテキストを読み込み、バンドルされた QML パフォーマンスアンチパターンのリファレンスカタログと照合してコードを分析します。 

ステップ 6 — レポートの生成 

エージェントはタイムスタンプ付きの Markdown レポートを profiler/reports/ に出力します。レポートには、フレームごとの CPU コストを含むイベントタイプサマリーテーブル、p50・p95・p99 のフレーム時間パーセンタイル、GC ヒープページと JavaScript オブジェクトサイズ別のメモリ内訳、サイズ超過の画像を示すピックスマップキャッシュセクションが含まれます。上位 30 件のホットスポットテーブルの後、プロジェクトレベルで最も重大な 5 つのボトルネックについて、ソースの抜粋・根本原因・具体的な修正方法を含む詳細な分析が示され、最後に優先順位順のネクストステップで締めくくられます。

画像:VS Code の GitHub Copilot に表示されたプロファイリングレポートとコンソールサマリー 

ステップ 7 — コンソールサマリー

エージェントは、イベントタイプテーブル、フレーム時間のハイライト、メモリとピックスマップキャッシュのシグナル、上位 5 件のホットスポットと簡単な分析をまとめたコンパクトなサマリーを会話内に直接表示します。

コードプロファイリングスキルの制限事項 

あらゆるプロファイリングツールと同様に、QML プロファイラースキルにも使用前に把握しておくべき制限があります。このスキルは 2D Qt Quick アプリケーションのみを対象としており、レンダーフレーム、シンクパス、カリング操作などの Qt Quick 3D イベントはキャプチャ・解析の対象外です。

最適化の提案は、使用する LLM の事前学習済み知識と汎用アンチパターンリファレンスドキュメントに基づいています。現時点では、ハードウェア固有のコード最適化提案には対応していません。

解析面では、スキルはイベントの合計時間をもとに上位のホットスポットを特定してソースコードにマッピングしますが、QML イベントタイプ外の CPU 使用率、GPU 側のレンダリングコスト、ネットワークや I/O レイテンシ、ネイティブ C++ バックエンドのパフォーマンスは解析対象外です。これらの領域には別途専用のツールが必要です。

最後に、あらゆるランタイムプロファイラーと同様に、結果の代表性はプロファイリングセッションの内容に依存します。プロファイリング中に限られた UI 操作しか行わなかった場合、他のワークフローで発生するコストの高いコードパスはトレースに現れません。起動時・典型的な操作ループ・ストレスシナリオなど、複数の目的に絞ったプロファイリングセッションを実行することで、汎用的な 1 回の実行よりも全体像を把握しやすくなります。

最終レポートの長さと詳細度は、AI エージェントを駆動する LLM によって異なります。たとえば、GPT 5.4 の 「medium thinking effort」ではコンパクトなレポートが生成されますが、Claude Sonnet 4.6 の「high effort」モードでは特定された各ホットスポットの詳細な説明が含まれます。

依存関係

QML プロファイラースキルには、qmlprofiler が利用可能な Qt 6 のインストールが必要です。このツールは標準の Qt インストールに含まれており、Qt コンパイラディレクトリの bin/ 以下にあります。ビルドステップには、CMake がシステムの PATH に含まれている必要があります。バンドルされたトレースパーサーの実行には Python 3 が必要です。Linux および macOS では通常デフォルトでインストールされていますが、Windows 開発者は別途インストールが必要になる場合があります。標準ライブラリ以外の Python パッケージは不要です。

画像:Claude Desktop で以前のプロファイルトレースファイルから生成されたプロファイリングレポート

動作確認済み環境

Claude Code CLI、Claude Desktop、VS Code の GitHub Copilot での動作を確認済みです。Claude Sonnet 4.6、GPT 5.4、Gemini 3.1 Pro では良好な結果が得られています。 

スキルの入手方法

Qt エージェントスキルは、以下の GitHub リポジトリから入手できます。

 https://github.com/TheQtCompanyRnD/agent-skills

また、Anthropic がプラグインの最新バージョンを同期した後は、公式の QML プロファイリングスキルを Claude のマーケットプレイスからプラグインの一部として直接インストールすることもできます(「qt-development」で検索してください)。GitHub Copilot に qt-development プラグインをすでにインストールしている場合は、git リポジトリのクローンのプルを手動でトリガーする必要があります。