Error DAT 完全ガイド | 使い方・パラメータ解説【TouchDesigner】

※当サイトにはプロモーションリンクが含まれます。

Error DAT のエラー監視と Python コールバック機能を示す図

記事更新の通知はXでアナウンス٩(๑❛ᴗ❛๑)
@maru6o6をフォロー

概要 📖 – エラーや警告を集めて通知する

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 コールバック実行

Tips

初心者の方は、以下日本語書籍も手元にあると安心です。

まる。
まる。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!


パラメータ解説 ⚙️

Error Page 📋

監視の有効化と一括取込 🎯

Active .active
– On 時、発生したエラー・警告をログテーブルに追記
– Off 時は新規メッセージの追加を停止 (既存行は保持)

Log Current Errors .logcurrent 🔄
– パルスで全ノードをトラバースし、現時点で生じている全エラーを一括取込
– プロジェクト起動直後やデバッグセッション開始時に「現在の不健全箇所」をスナップショットしたいときに使用

フィルタパターン 🔍

Severity .severity ⚠️
– 出力に含めるメッセージの重大度を絞り込むパターン文字列
– 取り得る値は以下の組み合わせ (空白区切り / ワイルドカード可):

  • message
  • warning
  • abort

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 fromSpecified Operator のときに参照される OP パス:

  • From Operator パス: Execute fromSpecified 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 ExtensionCustom Extension のときに適用される拡張子:

  • Custom Extension 文字列: Edit/View Extensioncustom のときに使用される任意のファイル拡張子

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 に流して画面の隅に常時表示しておくダッシュボード構成。観客から見えない位置に置きつつ運用者がエラー発生を一目で察知できる。

  1. Error DAT を配置し Severityabort warning に設定 (情報レベルの message は除外)
  2. Type / Source はあえて空のままにし、プロジェクト全体を監視
  3. Clamp Output を On + Maximum Lines を 20 程度に絞り、最新の重大事象のみテーブル先頭に残す
  4. Text TOP の text パラメータに Error DAT の cell を参照式で連結 (例: op('error1')[1, 'message'].val)
  5. 本番画面の隅に半透明オーバーレイで合成、エラー発生時のみ可視化

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 する遠隔通知パターン。インスタレーションで現場無人運用するときの最低限の安全網になる。

  1. Text DAT を作成し onMessageReceived(error) 関数を定義 (severity / type / source / message を JSON 化)
  2. Error DAT の Callbacks DAT パラメータに上記 Text DAT のパスを指定
  3. Severityabort のみに絞り、致命的事象でのみコールバック起動
  4. コールバック内で Web Client DATrequest() メソッドを呼び、Slack Incoming Webhook URL に POST
  5. 本番投入前に手動 Log Current Errors パルスで Webhook が届くかを必ず確認

Example 3: プロジェクト健全性チェック (起動時スキャン) ✅

起動 → Error DAT (Log Current Errors パルス) → 行数を Logic CHOP で集計 → 警告 UI

プロジェクト起動直後に Log Current Errors をパルスして全ノードのエラーを一括スキャンし、その行数を Logic CHOP で集計、エラーが残っている場合は UI に警告を出す自動健全性チェック。チーム開発で「今は本番投入できない状態」を可視化するのに役立つ。

  1. Error DAT を配置し Severityabort warning に設定
  2. Execute DAT (onStart コールバック) からプロジェクト起動時に Error DAT の logcurrent パルスを送信
  3. Error DAT の numRows を Info DAT 経由で取得し、Logic CHOP で 0 か否かを判定
  4. 結果を 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:

  • Severityabort のみに絞り message レベルのチャタリングを除外
  • Source パターンで関心領域のサブネットだけに範囲を限定
  • Maximum Lines を小さくして 1 回の更新コストを下げる
  • Callbacks DAT 内の重い処理 (HTTP POST / ファイル I/O) は別 thread / async に逃がす

参考資料 📚

その他 🔗

公式リソース 📖

この記事はLLMと共に内容を執筆、更新しています。
最新バージョンとの項目差異など、情報の不一致を見つけた心優しい方はXもしくはInsta、メールなどよりサイト管理者までご連絡ください😎


まる。

お仕事のご依頼はDM又はメールにて。
━━━━━━━━━━━━━━━━━
Python/Touchdesigner/M5Stackをこよなく愛すフルスタックエンジニア。
専門は生理心理学、趣味はヨガやサウナ、EMS電気風呂などヘルスケア全般。
脳波や筋電、心拍を中心とした生体情報のセンシング&インタラクティブアートづくりがライフワーク。

普段はワントゥーテンという会社で空間演出エンジニアをしています。
リファラル採用お繋ぎできますので、我こそはという尖った方は経歴と希望職種添えてDMください(エンジニア以外、営業職等もOK)。
ご飯行きましょう。

↓日常垢
Instagram:@malmal0v0

まる。をフォローする
その他の記事はこちら
Math Combine POP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
ZED Select TOP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
ZED POP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
Window COMP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】
Widget COMP 完全ガイド | 使い方・パラメータ解説【TouchDesigner】

タイトルとURLをコピーしました