課題:AIエージェントはQMLを編集するが、ビルド、コンパイル、実行をしないと結果が分からない
AIエージェントは1回の作業で多くのUI変更を行えます。エージェントはファイルを編集し、必要に応じてビルドを実行して、成功したと報告します。変更のたびにフルビルドと再起動が発生するか、開発者の確認を経ないまま変更が通ってしまうこともあります。Qtの QML Live Preview MCPツールは、AIエージェントによる自律的な作業を開発者にとって見える状態にします。しかもトークンの消費は少なく抑えられます。アプリケーションを実行し、変更されたQMLファイルをビルドや再起動なしでホットリロードします。
Qt 6.12にはすでにqmlpreviewの実行ファイルが同梱されていますが、エージェントのハーネスから直接使うのは見た目より難しいです。エージェントは次のことを行う必要があります。
- qmlpreviewを長時間動作するバックグラウンドプロセスとして起動し、その状態を管理する
- C++コードやシングルトンの登録など、一部の変更はホットリロードでは反映できず、再起動とイベントの再生が必要になるため、いつホットリロードを再起動すべきかを判断する
- 問題が発生したときにプロセスを停止して再起動する
これらのどれも、エージェントが時間を無駄にしたり、判断を誤ったり、最初のトラブルでプレビューの利用をやめてしまったりする要因になります。
動画:Claude Code CLIでのQML Live Preview(注:動画は分かりやすさと簡潔さのために編集されています)
ただし、QMLプレビューによるホットリロードには限界があります。ときどき、アプリケーションの再起動や再ビルドが必要になり、その後手動でプレビューを再起動する必要があります。
AIエージェントと開発者のためのQMLホットリロード
QML Live Preview MCPツールは、qmlpreviewをエージェントから呼び出せるツールにします。これはModel Context Protocol(MCP)サーバーで、run_qmlPreviewという1つのツールを提供します。エージェントはアプリケーションの実行ファイルへの絶対パスを渡し、ツールはライブプレビュー(ホットリロード)を有効にしてアプリケーションを起動します。以降は、ほとんどのQMLソースへの編集が再ビルドなしで実行中のアプリケーションに反映されます。
エージェントが作業している間に見るプレビューウィンドウは、そのままUIを見ながらフィードバックできるものです。説明文ではなく、ライブのUIそのものに対してフィードバックを返せます。
QMLコーディングスキルとの連携
QML(qt-qml)のコーディングスキルは、エージェントがMCPツールをどう使うかを導くように更新されました。ツールが接続されており、プロジェクトがQt 6.12以降を使用している場合、このスキルは次のことを行います。
- アプリケーションのターゲットがQT_QML_DEBUGを付けてビルドされているか確認し、設定がない場合は追加すべきCMakeの行を提示します。その設定はデバッグビルドに限定され、CMakeLists.txtを編集する前に確認を求めます
- プレビューの開始を提案し、回答を待ちます
- 変更に再ビルドが必要な場合は事前に知らせ、変更が反映されなくなったときにはプレビューの再起動を提案します
qmlpreviewの実行ファイルだけを持つエージェントは、これらすべてを自力で考え出す必要があります。スキルとツールを両方インストールすると、これらの手順が組み込まれます。
制限事項
- Qt 6.12以降のみ対応です。QML Live Preview MCPツールは、Qt 6.12以降を使用したQt UI開発でのみ利用できます。
- QMLのみ対象です。このツールはディスク上のQMLファイルを監視します。一部の変更にはアプリケーションの再ビルドが必要です。具体的には、C++の変更、qmldirの変更、モジュールのURIやバージョンの変更、シングルトンの登録、CMakeLists.txtの変更(モジュールへのファイル追加を含む)、アプリケーションがリンクしていないモジュールの新しいimport、そしてプロジェクトがQMLをQtリソースにコンパイルしている場合の新しいQMLファイルです。
- すべてのQMLの編集がホットリロードで反映されるわけではありません。単純な値をバインディングに変えたり、バインディングを別のプロパティに移したりするような編集は、適用されてもUIの状態が失われたり、まったく反映されなかったりすることがあります。プレビューがホットリロードの失敗を報告した場合は、アプリケーションを再起動し、記録された入力イベントを再生します。編集が反映されなくなったら、プレビューを再度開始してください。
- 単一のQMLエンジン向けです。QQmlEngineやQQmlApplicationEngineを複数作成するアプリケーション、またはワーカースレッドでQMLを読み込むアプリケーションでは、QML Live Previewは不安定です。
- QMLはQMLモジュールから読み込まれている必要があります。アプリケーションがqt_add_qml_module()で作成されたQMLモジュールをリンクしていない場合、Qtリソースに埋め込まれたQMLのホットリロードは動作しません。
検証済み環境
QML Live Preview MCPツールは、Claude Code CLI(Claude Sonnet 5.5を使用)、GitHub Copilot(GPT 6-Lunaを使用)、Qwen Code(GLM 5.2を使用)でテストされました。
ツールの入手方法
エージェントスキルとは異なり、QML Live Preview MCPツールはQt InstallerやQt Maintenanceアプリケーションで配布されます。コンポーネントツリーで「Agentic Development Tools」という新しいフォルダを開き、「QmlPreview MCP Server」を選択してください。サーバーをインストールすると、Qt 6.12以降のインストール先のbinフォルダにバイナリがあります。
エージェントのハーネスとMCPサーバーを接続するには、「Qt 6.12のインストールのbinフォルダにあるQmlPreviewMcpServerに接続して」のように指示します。
更新されたqt-qmlコーディングスキルは、Qtのエージェントスキルリポジトリから入手できます。