
概要 📖 – エラーや警告を集めて通知する
Error DATは、TouchDesigner 全体で発生したエラー・警告メッセージを FIFO テーブルに蓄積し、フィルタリングと Python コールバックを提供する DATです。各行には Severity (message / warning / abort)、Type (発生 OP のファミリ)、Source (発生ノードのパス)、Message (本文)、絶対フレーム番号 (absTime.frame) 等の列が含まれます。
主な用途 🎯
- プロジェクト全体のエラー・警告をリアルタイム監視するデバッグダッシュボード構築
- 特定の OP family / ノードパスのみに絞ったフォーカス監視 (Type / Source パターンマッチ)
- Callbacks DAT 経由でエラー発生時に外部ロギング (Web Client DAT / File Out DAT / OSC) へ送信
- ライブパフォーマンス時のサイレントエラー検知 (UI に出さず Slack/Discord 通知へ流す)
- プロジェクト健全性チェックを Log Current Errors パルスで全ノード一斉スキャン
データフロー 🔄
TouchDesigner 内部のエラー・警告イベント
↓
フィルタ (Severity / Type / Source / Message パターン)
↓
FIFO テーブル蓄積 (新しいメッセージが上位)
↓
任意でCallbacks DAT経由 Python コールバック実行
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Error Page 📋
監視の有効化と一括取込 🎯
Active .active ✅
– On 時、発生したエラー・警告をログテーブルに追記
– Off 時は新規メッセージの追加を停止 (既存行は保持)
Log Current Errors .logcurrent 🔄
– パルスで全ノードをトラバースし、現時点で生じている全エラーを一括取込
– プロジェクト起動直後やデバッグセッション開始時に「現在の不健全箇所」をスナップショットしたいときに使用
フィルタパターン 🔍
Severity .severity ⚠️
– 出力に含めるメッセージの重大度を絞り込むパターン文字列
– 取り得る値は以下の組み合わせ (空白区切り / ワイルドカード可):
messagewarningabort
Type .type 🏷️
– 発生元 OP のファミリ名で絞り込むパターン文字列
– 例: chop / top / dat / sop 等を組み合わせ可
– * や [abc] 等のパターンマッチが使用可能
Source .source 📍
– 発生ノードのパスで絞り込むパターン文字列
– 例: /project1/render/* で特定サブネット配下のみ監視
– 大規模プロジェクトで関心領域だけに視野を絞るのに有効
Message .message 💬
– エラーメッセージ本文で絞り込むパターン文字列
– 例: *memory* でメモリ関連の警告のみ抽出
– 特定の既知警告 (frame drop 等) を一時的に除外したいときにも使用
Log Page 📝
コールバック設定 🔔
Callbacks DAT .callbacks 📜
– コールバック関数を定義した Text DAT へのパス
– 1 メッセージ到着ごとに DAT 内の関数が 1 回実行される
– 詳細な API は公式 errorDAT_Class 参照
コールバック実行スコープ .executeloc 📌
Callbacks DAT 内のスクリプトを実行する OP コンテキストを決定するメニュー
| 項目 | 内部名 | 説明 |
|---|---|---|
| Current Node | .current |
現在の Node 位置からスクリプトを実行 (Tscript 互換) |
| This Node | .here |
Error DAT 自身の親 OP からスクリプトを実行 (sibling を相対参照しやすい) |
| Specified Operator | .op |
From Operator パラメータで指定した OP からスクリプトを実行 |
From Operator .fromop 🔗
Execute from が Specified Operator のときに参照される OP パス:
- From Operator パス:
Execute fromがSpecified Operatorのときにスクリプト実行コンテキストとして使用される OP のパス
ログ保持量の制御 📏
Clamp Output .clamp 🔒
– On 時、Maximum Lines で指定した行数を上限としてログを制限
– Off 時はメッセージが無制限に蓄積される (長時間運用ではメモリ圧迫の原因になり得る)
– デフォルトは On (100 行制限)
Maximum Lines .maxlines 🔢
– 保持する最大行数 (Clamp Output が On のときのみ有効)
– 上限に達すると最も古いメッセージから FIFO で削除
– デフォルトは 100
Clear Output .clear 🧹
– パルスでヘッダー行を除く全ログ行を削除
– デバッグセッションの区切りで履歴をリセットするときに使用
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: ライブパフォーマンス中のエラー監視ダッシュボード 🎛️
Error DAT (Severity=abort warning) → Text TOP overlay (本番画面に小さく表示)
本番ステージで abort / warning のみを抽出した Error DAT のテーブルを、Text TOP に流して画面の隅に常時表示しておくダッシュボード構成。観客から見えない位置に置きつつ運用者がエラー発生を一目で察知できる。
- Error DAT を配置し
Severityをabort warningに設定 (情報レベルのmessageは除外) Type/Sourceはあえて空のままにし、プロジェクト全体を監視Clamp Outputを On +Maximum Linesを 20 程度に絞り、最新の重大事象のみテーブル先頭に残す- Text TOP の
textパラメータに Error DAT の cell を参照式で連結 (例:op('error1')[1, 'message'].val) - 本番画面の隅に半透明オーバーレイで合成、エラー発生時のみ可視化
Example 2: 外部Slack/Discordへ通知 📡
Error DAT (Callbacks DAT) → onMessageReceived → Web Client DAT (Webhook POST)
Error DAT の Callbacks DAT に Python 関数を仕込み、abort 級メッセージが到着した瞬間に Slack / Discord の Incoming Webhook へ JSON POST する遠隔通知パターン。インスタレーションで現場無人運用するときの最低限の安全網になる。
- Text DAT を作成し
onMessageReceived(error)関数を定義 (severity / type / source / message を JSON 化) - Error DAT の
Callbacks DATパラメータに上記 Text DAT のパスを指定 Severityをabortのみに絞り、致命的事象でのみコールバック起動- コールバック内で Web Client DAT の
request()メソッドを呼び、Slack Incoming Webhook URL に POST - 本番投入前に手動
Log Current Errorsパルスで Webhook が届くかを必ず確認
Example 3: プロジェクト健全性チェック (起動時スキャン) ✅
起動 → Error DAT (Log Current Errors パルス) → 行数を Logic CHOP で集計 → 警告 UI
プロジェクト起動直後に Log Current Errors をパルスして全ノードのエラーを一括スキャンし、その行数を Logic CHOP で集計、エラーが残っている場合は UI に警告を出す自動健全性チェック。チーム開発で「今は本番投入できない状態」を可視化するのに役立つ。
- Error DAT を配置し
Severityをabort warningに設定 - Execute DAT (
onStartコールバック) からプロジェクト起動時に Error DAT のlogcurrentパルスを送信 - Error DAT の
numRowsを Info DAT 経由で取得し、Logic CHOP で 0 か否かを判定 - 結果を Text TOP の警告バナーに反映、エラーが残っていれば本番ボタンを Disable に切替
関連オペレータ 🔗
類似機能OP 🔍
- TODO
組み合わせ推奨OP 🔄
- Web Client DAT — Callbacks DAT 内から Slack / Discord / カスタム Webhook へエラー本文を POST
- File Out DAT — テーブルを CSV / ログファイルへ永続化
- Info DAT — 個別 OP の warning / error カウント (チャンネル) を Error DAT のグローバル監視と組み合わせ
- Logic CHOP — 行数や Severity 出現数を集計し閾値判定 (本番投入可否ロジック)
- Execute DAT — プロジェクト起動時に
Log Current Errorsを自動パルス起動
前処理・後処理DAT 🎯
Info DAT情報 📊
Error DAT は Info DAT による詳細情報取得に対応しています (num_rows / num_cols / total_cooks / cook_time / warnings / errors 等の共通 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: エラーがテーブルに出てこない
✅ Solution:
Activeが On になっているか確認Severity/Type/Source/Messageのフィルタが厳しすぎないか確認、必要に応じて*で全マッチ化Log Current Errorsをパルスして起動以前から残っているエラーを一括取込- 監視対象のエラーが実は警告レベル (
message) でSeverity=warning abortから漏れていないか確認
❌ Problem: Callbacks DAT の関数が実行されない
✅ Solution:
Callbacks DATパラメータに Python 関数を持つ Text DAT のパスが正しく設定されているか確認- コールバック関数名が公式
errorDAT_Classの API (onMessageReceived等) と一致しているか確認 Execute from/From Operatorの設定で意図した OP コンテキストになっているか確認- コールバック内で発生した例外が他の通知を止めていないか、
try / exceptで囲んで textport にトレースを出す
❌ Problem: メッセージがすぐ消えてしまう
✅ Solution:
Clamp Outputが On のときはMaximum Lines到達で古い行から削除される — 必要な保持数まで増やすか Off にする- 長期保管したい場合は Callbacks DAT で File Out DAT や外部ログサービスへミラーリング
Clear Outputパルスを誤って外部から送っていないかワイヤリングを確認
❌ Problem: テーブル更新が頻繁でプロジェクトが重い
✅ Solution:
Severityをabortのみに絞りmessageレベルのチャタリングを除外Sourceパターンで関心領域のサブネットだけに範囲を限定Maximum Linesを小さくして 1 回の更新コストを下げる- Callbacks DAT 内の重い処理 (HTTP POST / ファイル I/O) は別 thread / async に逃がす
参考資料 📚
その他 🔗
- TouchDesigner Wiki — DAT 概要
- TouchDesigner Wiki — Category:DATs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – Error DAT
- TouchDesigner公式ドキュメント – ErrorDAT Class
- Performance Monitor (パフォーマンスとエラー解析)

