
概要 📖 – 内部のデータ構造を確認する
Examine DATは、OPの内部ディクショナリやPythonオブジェクトを再帰的に展開し、Level / Key / Type / Value 形式で可視化するデバッグDATです。Component の storage や Python の locals / globals を中身が見える形で並べてくれるため、ノードグラフだけでは追いにくい内部状態のデバッグに使います。Format を Table にすると Level / Key / Type / Value の列を持つ整形済みテーブルとして出力されます。
主な用途 🎯
- Component の内部ストレージ dict (operator locals) の中身をテーブル表示してデバッグ
- プロジェクト全体の Globals dict の状態をリアルタイムで可視化
- 任意の Python 式を Expression パラメータに記述し、評価結果の階層構造を確認
- Key / Type / Value フィルタで大規模 dict から特定のエントリのみを抽出表示
- Format=Table モードで Level / Key / Type / Value 列に整形した形でロガー出力
データフロー 🔄
対象 OP のパス指定 (opパラメータ)
↓
Source 選択 (Operator Locals/Globals)
↓
再帰展開 (Max Levels/Expand Classes)
↓
フィルタ適用 (Key/Type/Value)
↓
出力 DAT:Text形式またはTable形式
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Examine Page 📋
対象オペレータと参照範囲 🎯
Operator .op 🧭
– 中身を覗きたい対象 OP へのパス文字列
– 相対パス・絶対パスのどちらでも指定可能
Subkey .subkey 🔑
– 対象が dict のとき、特定キーだけを掘り下げて表示するための絞り込み
– トップレベルではなく内部の特定エントリだけ確認したいときに使う
Expression .expression 🧮
– Source に依存しない任意の Python 式を直接記述するスロット
– 式の評価結果を Examine DAT がそのまま再帰展開して表示する
Source .source 🎛️
対象 OP のどの部分を表示するかを選ぶメニュー
| 項目 | 内部名 | 説明 |
|---|---|---|
| Operator Locals | .locals |
対象 DAT モジュールに紐づく locals dict を展開 (DAT 限定) |
| Globals | .globals |
プロジェクト全体の globals dict (テキストポートからもアクセス可能) を展開 |
展開深さの制御 📐
Level .level 🪜
– 表示する階層の最大深度を上限クランプする整数値
– 大規模 dict のトップだけ覗きたいときに小さい値で打ち切れる
Expand Classes .expandclasses 🧩
– On 時、複雑なオブジェクト (例: OP インスタンス) の中身をさらに再帰展開
– Off 時はクラスを 1 行のサマリで止めるためテーブルが軽くなる
Max Levels .maxlevels ♾️
– Python オブジェクトを再帰展開する最大階層数を別途指定
– 自己参照する dict などで無限ループに陥らないための保険として機能する
結果フィルタ (Key / Type / Value) 🔎
Key .key 🔑
– 出力結果を キー名でフィルタするパターン文字列
– * 等のワイルドカードで部分一致絞り込みが可能
Type .type 🏷️
– 出力結果を 型名でフィルタするパターン文字列
– 例えば int や OP 系だけを抽出したいときに使う
Value .value 💎
– 出力結果を 値でフィルタするパターン文字列
– 特定値を持つエントリだけを抽出表示できる
出力フォーマット .format 🧾
Examine DAT の出力をテキストとして並べるか、テーブルとして整形するかの選択
| 項目 | 内部名 | 説明 |
|---|---|---|
| Text | .text |
生のテキスト形式で出力 (人間がそのまま読みやすい形) |
| Table | .table |
Level / Key / Type / Value の列を持つテーブル形式で出力 |
テーブル出力時の列制御 🗂️
Output Headers .outputheaders 🏁
– On 時、Format が Table のときに列名のヘッダ行を表示
– 後段で Select DAT などからカラム名で参照したいときに必須
Output Level .outputlevel 🪜
– On 時、結果テーブルに Level 列 (階層深度) を含めて出力
– 不要なら Off にして列数を減らす
Output Key .outputkey 🔑
– On 時、結果テーブルに Key 列を含めて出力
– キーが不要な flat なリスト用途では Off にして簡略化
Output Type .outputtype 🏷️
– On 時、結果テーブルに Type 列を含めて出力
– 値だけで十分なときは Off にして列を 1 個減らせる
Output Value .outputvalue 💎
– On 時、結果テーブルに Value 列を含めて出力
– 通常は On のまま (Off にすると値が表示されなくなる)
Common Page 🔧
Language .language 📝
DAT が動作するスクリプト言語の決定方法
| 項目 | 内部名 | 説明 |
|---|---|---|
| Input | .input |
入力 DAT のスクリプト言語を使用 |
| Node | .node |
この DAT 自身のスクリプト言語を使用 |
Edit/View Extension .extension 📄
外部エディタに公開するファイル拡張子の選択
| 項目 | 内部名 | 説明 |
|---|---|---|
| dat | .dat |
汎用的なファイル拡張子 dat を使用 |
| From Language | .language |
DAT のスクリプト言語に応じた拡張子を自動選択 |
| Custom Extension | .custom |
Custom Extension で指定したカスタム拡張子を使用 |
Custom Extension .customext 🔤
Edit/View Extension が Custom Extension のときに適用される拡張子:
- Custom Extension 文字列:
Edit/View Extensionがcustomのときに使用される任意のファイル拡張子
Word Wrap .wordwrap 🔁
ノード表示でのワードラップ (折り返し) の有効化
| 項目 | 内部名 | 説明 |
|---|---|---|
| Input | .input |
入力 DAT の Word Wrap 設定を継承 |
| On | .on |
Word Wrap を有効化 (ノード上の長い行を折り返し表示) |
| Off | .off |
Word Wrap を無効化 (折り返さずそのまま表示) |
実践アイデア 💡
Example 1: internal storageをデバッグ表示 🔍
Container COMP (storage に dict 保持) → Examine DAT (Source=Operator Locals) → Format=Table → 観察
Container COMP などに storage として保持した状態 dict が、ノードグラフ上では中身が見えないため、Examine DAT を貼って locals を覗くのが定石フロー。
- 対象 Component に
storage['state'] = {...}のような dict を保持しておく - Examine DAT を配置し、
Operatorパラメータに対象 Component のパスを記入 SourceをOperator Localsに設定し、FormatをTableに切替Output Level/Output Key/Output Type/Output Valueを必要な列だけ On にして整形- 実行中に Component の storage が更新されると Examine DAT のテーブルが自動更新される
Example 2: Globals dict のリアルタイム監視で状態管理デバッグ 🌐
Project Globals (任意の場所で td.global 等を書込) → Examine DAT (Source=Globals) → Text TOP に流して常時表示
プロジェクト全体で共有するグローバル変数の現在値を、テキストポートを開かなくてもノード上で常に確認できるようにする監視フロー。
- Examine DAT を配置し、
SourceをGlobalsに設定 - 必要なら
Keyパターンで特定のグローバル変数名だけを絞り込み FormatをTable+Output HeadersOn で列名付きテーブル化- Text TOP に Examine DAT の出力を流して画面上に常時表示
Example 3: Python式を評価し階層を覗く 🧮
Examine DAT (Expression=任意の式) → 再帰展開 → 出力テーブル
OP に紐付かない自由 Python 式 (例: モジュールインポート結果や辞書内包) を実行時に評価し、その階層構造を確認するアドホックなデバッグ用途。
- Examine DAT の
Expressionパラメータに評価したい式を直接書く (例:{k: type(v).__name__ for k, v in op('container1').storage.items()}) Max Levelsを程々の値 (3 など) に設定して無限ループを防ぐExpand Classesを On にすると複雑なオブジェクトの中身まで展開、Off にすると軽量化TypeやValueフィルタで気になる型・値だけ抽出表示
関連オペレータ 🔗
類似機能OP 🔍
- Info DAT — OP のメタ情報 (cook time / num_rows 等) をテーブル取得する DAT
組み合わせ推奨OP 🔄
- Text DAT — Expression 式を別 Text DAT に書いて外部エディタで管理 + Examine DAT から参照
- Table DAT — Examine DAT の Table 出力を集約・整形して保持する後段コンテナ
- DAT Execute DAT — Examine DAT の内容変化をトリガーに Python コールバックを発火
- Script DAT — Examine DAT で得た情報をさらに Python で加工して別 DAT に展開
- Text TOP — Examine DAT の出力テキストをそのまま画面上にオーバーレイ表示
前処理・後処理DAT 🎯
- 前処理: Text DAT、Table DAT、Script DAT
- 後処理: Select DAT、Convert DAT、Null DAT
Info DAT情報 📊
Examine DAT は Info DAT による詳細情報取得に対応しています (num_rows / num_cols / total_cooks / cook_time 等の共通 DAT Info チャンネルを参照可能)。
DAT 固有情報 📋
num_rows: DAT の行数num_cols: DAT の列数type: DAT の型 (table / text)is_table: テーブル形式の場合 1、テキスト形式の場合 0
汎用オペレータ情報 🔄
total_cooks: プロセス開始からのクック回数cook_time: 最後のクック時間 (ミリ秒)cook_frame: 最後にクックされたフレーム番号warnings: 警告数errors: エラー数
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: 出力が空、または期待した dict の中身が表示されない
✅ Solution:
Operatorパラメータのパスが対象 OP と一致しているか確認 (タイプミス / 相対パスのずれ)Sourceの選択が目的と合っているか確認 (locals が空なら Globals 側、Globals が空なら locals 側を試す)Subkeyを一旦空にしてトップレベル全体を表示してから絞り込み直す- 対象 Component に実際に
storage/ locals dict がセットされているか別経路 (Textport) で先に確認
❌ Problem: 期待した深さまで階層が展開されない
✅ Solution:
Levelの上限クランプが小さすぎないか確認し、必要なら大きめに引き上げるMax Levelsを増やして Python オブジェクト側の展開上限を緩めるExpand Classesを On にして複雑オブジェクト (OP インスタンス等) の中身まで展開- 深くしすぎると自己参照で重くなるため、対象 dict のサイズに応じて値を慎重に選ぶ
❌ Problem: 出力が重く、再描画が遅い
✅ Solution:
Expand Classesを Off にしてクラス内部の展開を止めるMax Levels/Levelを低めに制限してテーブル行数を抑えるKey/Type/Valueフィルタで本当に必要なエントリだけに絞る- 監視対象が複数あるなら Select DAT や Null DAT で後段を分岐させ、ビュー単位で必要な列だけ拾う
❌ Problem: テーブル形式にしたのに列ヘッダや特定の列が出ない
✅ Solution:
FormatがTableになっているか確認 (Textモードでは列構造を持たない)Output Headersを On にしてヘッダ行を表示Output Level/Output Key/Output Type/Output Valueのうち欲しい列が On になっているか確認- 後段で Select DAT を使う場合は
Output HeadersOn が前提条件
参考資料 📚
その他 🔗
- TouchDesigner Wiki — DAT 概要
- TouchDesigner Wiki — Category:DATs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – Examine DAT
- TouchDesigner公式ドキュメント – Category:Python
- Storage (Component Storage)

