メインコンテンツへスキップ
BRICKS Foundation は Chrome DevTools Protocol (CDP) を実装しており、アプリケーションに対してフロントエンドに近いデバッグ体験を提供します。Chrome DevTools を通じて接続することで、DOM の検査、JavaScript のデバッグ、パフォーマンスのプロファイリング、コンソールログの確認が可能です。Puppeteer や Playwright などの CDP 対応ツールを接続して自動化スクリプトを書いたり、AI エージェント経由で接続することもできます。AI エージェント連携用の MCP エンドポイントも提供されています。

デバイスで DevTools を有効にする

1

詳細設定を開く

デバイスで設定を開き、詳細設定セクションに移動します。
2

Chrome DevTools を有効にする

Chrome DevTools をオンにします。デバイスはローカルネットワーク上のポート 19851 で DevTools サーバーを起動します。そのポートが使用中の場合、次の利用可能なポートに自動的に切り替わります。

デバイスを検索する

BRICKS CLI を使ってローカルネットワーク上の DevTools が有効なデバイスをスキャンします:
bricks devtools scan
ネットワークスキャンが機能するには、デバイスの詳細設定でLAN ディスカバリーを有効にするがオンになっている必要があります。これはデフォルトで有効です。

DevTools エンドポイント

デバイスを見つけたら、bricks devtools open--info フラグを付けてすべての利用可能なエンドポイントを確認します:
bricks devtools open <device-address> --info
以下の接続 URL が表示されます:
エンドポイント説明
Web UIブラウザでこの URL を開くと DevTools ランディングページにアクセスできます
CDP直接接続用の Chrome DevTools Protocol エンドポイント
MCPAI エージェント連携用の Model Context Protocol エンドポイント
MCP SSEServer-Sent Events トランスポートを使用する MCP エンドポイント
Infoデバイス、バージョン、プロトコルを記述する /devtools/info の JSON メタデータエンドポイント
検出されたデバイスの passcode と、MCP および MCP SSE エンドポイントに必要な Authorization: Bearer <passcode> ヘッダーも併せて表示されます。 --info を付けない場合、コマンドはサーバー識別情報(名前、バージョン、デバイス ID、ワークスペース、プロトコル、認証状態)を表示します。

DevTools ページを開く

Web UI URL をブラウザで開くと DevTools ランディングページにアクセスできます。そこから実行中のアプリケーションを検査したり、利用可能なデバッグターゲットを確認したり、デバイスに接続したりできます。

Chrome で接続する

Chrome から直接接続することもできます:
  1. 詳細設定Expose endpoints for chrome://inspect を有効にする
  2. Chrome で chrome://inspect を開く
  3. デバイスがリモートターゲットの一覧に表示される
  4. inspect をクリックして実行中のアプリケーションに接続した DevTools ウィンドウを開く
Expose endpoints for chrome://inspect は認証なしで /json エンドポイントを公開するため Chrome から検出できるようになりますが、passcode が平文で露出します。信頼できるネットワーク上のデバッグでのみ有効にしてください。

BRICKS CLI で検査する(CDP)

BRICKS Foundation バージョン 2.24 以降が必要です。
BRICKS CLI は CDP コマンドを提供し、ブラウザを開かずにターミナルから直接デバイスを検査できます:
# brick コンポーネントツリーを出力
bricks devtools brick tree -a <device-address>

# スクリーンショットを取得
bricks devtools screenshot -a <device-address> -o screenshot.png

# JavaScript 式を評価
bricks devtools runtime eval -a <device-address> "document.title"

# ネットワークアクティビティをモニタリング
bricks devtools network list -a <device-address>
デバイスが認証を必要とする場合は --passcode を使用します。CDP コマンドの全リストは CLI コマンドリファレンス を参照してください。

DevTools でできること

接続した DevTools ウィンドウはブラウザのように見えますが、BRICKS Foundation は Web ページではありません。各パネルは代わりにデバイスのライブランタイムを投影します。有効で意味のあるパネルは 4 つ — ElementsConsoleNetworkApplication です。その他のパネル(Sources、Performance、Memory、要素検査ボタン)は、背後に Web ページが存在しないため非表示になっています。

Elements — Brick ツリー

DOM ドキュメントとして投影された BRICKS レンダーツリーを表示する DevTools Elements パネル
Elements パネルはアプリケーションのレンダーツリーを DOM ドキュメントとして投影します。ツリーは #document をルートとし、BRICKS で構築した構造を入れ子にします:
#document
└─ bricks-system
   └─ subspace          ← レンダリングされた Subspace ごとに 1 つ
      ├─ text           ← 現在の Canvas 上の Brick ごとに 1 要素
      ├─ image
      └─ subspace       ← ネストした Subspace
  • Subspace<subspace> 要素です。現在表示されている Canvas はその中にマージされるため、その Bricks は直接子要素として現れ(独立した <canvas> ノードはありません)、canvas-* 属性(canvas-idcanvas-title など)がどの Canvas を表示しているかを示します。
  • Brick は 1 要素で、タグ名は BRICK_ 接頭辞を除いた Brick の種類です(例:<text><image><text_input><video><chart><items><webview><qrcode>)。
  • Brick の主要なコンテンツは要素のテキストとして表示されます。Text Brick は文字列を、Image Brick はソースパスを表示します(長い値は切り詰められます)。
各 Subspace は現在レンダリングされている Canvas のみを表示します。その Subspace の他の Canvas 上の Bricks はツリーに含まれません。GeneratorData は Elements には現れません。Generator のトラフィックは Network パネルで、保存された Data は Application パネルで確認してください。 Brick の属性からその識別情報とレイアウトを読み取れます:
属性意味
id / alias / short-id識別子。Short ID は種類ごとに接頭辞が付きます:B_ Brick、S_ Subspace、C_ Canvas、D_ Data、G_ Generator
titleエディター上の Brick のタイトル
pressable / editableBrick がタップに反応する/テキスト入力を受け付けるか
hideBrick が非表示かどうか
x / y / w / hBRICKS のグリッド単位(ピクセルではない)での位置とサイズ
Brick を選択すると、その属性がインラインで表示され、解決済みのランタイム状態がサイドパネルに表示されます。Properties タブには Brick の propseventsoutlettemplateKey が、StylesComputed には合成されたレイアウトが表示されます。ノードにカーソルを合わせる、または選択すると、デバイス上で対応する Brick または Subspace がハイライトされ、text — WelcomeHeader のようなラベルが表示されます。 Elements の検索ボックスから BRICKS 固有のセレクターでツリーを検索できます:
  • #welcome-text または #B_3 — エイリアスまたは short ID で一致
  • :pressable:editable:hidden — 機能または状態で一致
  • .MyStateGroup — 状態グループに属する Brick に一致
Elements ツリーは読み取り専用です。属性の編集やノードの削除は実行中のアプリを変更せず、編集は元に戻ります。アプリを操作するには、Console の system ヘルパー(下記)または CDP 対応の自動化ツールを使用してください。

Console — ランタイムログと system ヘルパー

接続バナーと展開された system ヘルパーオブジェクトを表示する DevTools Console パネル
Console はデバイスのランタイム自身のログをストリーミングします。アプリケーションの出力、イベント発生時の [System] Event: 行、ネイティブモデル(LLM/STT)のログなどです。Web ページの console.* ではありません。接続時に最近の履歴が自動的に再生されます。 接続時、BRICKS は一連のヘルパーオブジェクトを Console の評価スコープに直接注入します。名前で直接入力してください — globals 接頭辞は不要です。まず usage() を実行して全カタログを表示するか、globalThis と入力してツリー全体を展開します。
ヘルパー機能
info() · memoryUsage() · diskUsage()デバイスとアプリの情報、メモリ、ディスク使用量
usage()利用可能なヘルパーのカタログを表示
system.*実行中のアプリを検査・操作する(下記参照)
control.*refresh()clearCache()takeScreenshot()checkUpdate()rebindDevice('imsure')externalScreen(enable)
panel.*デバイス上のオーバーレイを開く — panel.menu()panel.info()panel.apps()panel.debug.root/data/log/cache/localSync()panel.automation()panel.advancedSetting()panel.about()
automation.*E2E 自動化の list()run(testId, payload)stop()
mcp.*MCP server/client Generator のツール、リソース、プロンプトを呼び出す
tv.focusRegistry()TV/リモコンのフォーカスレジストリを検査
system.* がアプリ検査の中核です:
呼び出し戻り値/動作
system.isReady()ランタイムが準備完了かどうか
system.subspaces()Subspace ツリーのスナップショット
system.querySelector(sel) · querySelectorAll(sel)レンダリングされた Brick ツリーを照会
system.query(sel) · queryAll(sel)完全なインスタンスツリーを照会
system.simulatePress(subspaceId, brickId)Brick をタップ
system.simulateKeyDown(code, key, flags) · simulateKeyUp(...)キー入力を送信
system.executeAction(subspaceId, { handler, action, parameters })Brick、Data、または Generator のアクションを実行
system.data.storeList()Data store を一覧表示
system.data.properties(subspaceId, { filter, command })Property Bank のプロパティを一覧表示
system.data.property(subspaceId, propertyId)単一のプロパティ値を読み取る
system.cache.generatorCache(subspaceId, generatorId)Generator のキャッシュ出力を読み取る
system.cache.runtimeCacheStats(subspaceId)ランタイムキャッシュの統計
system.channel.keys() · subscriptions(regex)channel(pub/sub)を検査
system.storage.persist.global.get(key) · allKeys()永続スコープストレージを読み取る(memory はメモリ内)
system.localSync.isEnabled() · isMain() · summary()Local Sync の状態
system.inspectEventRouting(id) · inspectParentCall(id)イベントの配線を追跡
usage()                                  // ヘルパーのカタログを表示
system.subspaces()
system.querySelectorAll(':pressable')    // レンダリングされたツリー内のすべての pressable な Brick
system.data.storeList()
system.data.properties('S_1', { command: false })
system.simulatePress('S_1', 'B_3')       // Subspace S_1 の Brick B_3 をタップ
control.takeScreenshot()                 // Console 内にインラインで表示
panel.debug.log(true)                    // デバイス上のログパネルを開く
ID は Elements パネルと同じ接頭辞に従います — Subspace は S_、Brick は B_、Data/プロパティは D_、Generator は G_。非同期ヘルパーはインラインの戻り値ではなく [Launcher] … のログ行で報告します。機密情報(パスワード、token、API キー)は [HIDDEN] としてマスクされます。

Network — リクエストトラフィック

キャプチャされた HTTP リクエストとヘッダーを表示する DevTools Network パネル
Network パネルは GeneratorPreload(プリロード)プロセス、およびランタイムが行うリクエストを表示します。DevTools が有効な間は常にキャプチャされるため、パネルを開く前でもリクエストが現れます。各ソースの表現方法:
トラフィック表示形式
HTTP/HTTPS(HTTP Generator、内部 fetch)標準的なリクエスト行(タイプ Fetch)— メソッド、URL、ステータス、ヘッダー、リクエストペイロード、レスポンスボディ
ストリーミング/サーバー送信(HTTP・LLM Generator)1 つの EventSource 行。EventStream タブを開いてイベントを確認
WebSocket(ws / wssWebSocket 行。Messages タブを開いてフレームを確認
MQTT(mqtt / mqttsbroker URL の WebSocket 形式の行。publish や受信メッセージはそれぞれ [topic] payload のフレームとして表示
Data Bank ライブサブスクリプション、GraphQLクエリは HTTP 行、サブスクリプションは WebSocket 行
Preload(アセット、フォント、Media Box)アプリがコンテンツをプリロードする際の HEAD サイズプローブと GETPOST ダウンロード
例えば、mqtt://broker.example.com:1883 を指す Generator は 1 行(ステータス 101 Connected)を表示します。{"temp":21}sensors/room1 に publish すると、Messages に送信フレーム [sensors/room1] {"temp":21} として現れ、受信メッセージは受信フレームとして現れます。
ネットワークトラフィックはそのまま表示され、マスクされませんAuthorization ヘッダー、URL 内の API キー、リクエスト/レスポンスボディはすべて表示されます。DevTools へのアクセスは機密として扱い、デバイスの passcode は信頼できる人とのみ共有してください。
Subspace、Canvas、Brick、Property Bank の値には直接の Network 行はありません。リクエストを行う Generator や Preload ステップの発生源として間接的に現れるだけです。レスポンスボディは最近のリクエストのみキャッシュされ、DevTools 起動前に開かれた接続は現れません。
ランタイムキャッシュから提供されるレスポンスは、まだネットワークリクエストとしては表示されません。このパネルでランタイムキャッシュの動作を表示することは、将来のリリースで予定されています。

Application — 保存された Data(読み取り専用)

IndexedDB に投影された BRICKS ストレージを表示する DevTools Application パネル
Application パネルはデバイスのランタイムストレージをブラウザのストレージバケットに投影します。すべて単一のオリジン bricks://app の下にあります:
DevTools の場所BRICKS のデータ
Local Storage永続スコープストレージ(再起動後も保持)、キーは global:<key>subspace:<id>:<key>
Session Storageメモリ内スコープストレージ(リセット時にクリア)
IndexedDB → GENERATOR_CACHEキャッシュされた Generator の出力
IndexedDB → GENERATIVE_MEDIA_CACHEキャッシュされた生成メディアの結果
IndexedDB → DATA-<subspace>Subspace ごとの Property Bank の値(ストア properties)。[persist] を接頭辞とする行は永続化されたバッキングコピー
DATA-… データベースが保持するのはランタイムの Property Bank であり、BRICKS ControllerData Bank ストレージ製品とは別物です。同様に、GENERATIVE_MEDIA_CACHE はランタイムキャッシュであり、Media Box や Media Flow ではありません。
Application パネルは読み取り専用です。値は DevTools から編集できません。アプリ内で変更してください。オブジェクト値はアプリの実行に伴ってライブで更新され、機密情報は [HIDDEN] としてマスクされます。

次のステップ

リモートデバッグ

ローカルネットワークアクセスなしに BRICKS Controller 経由でデバイスをリモートデバッグします。

デバッグパネル

デバイス上のオーバーレイを使ってランタイム状態を検査します。