
概要 📖 – データの中継・参照点
Null DATは、入力された DAT データ (テーブル / テキスト) をそのまま出力し、ネットワークの中継点・参照アンカーとして使用する DATです。値変換は一切行わず、複数の下流が参照する共通アンカー、上流ノード差し替え時の参照名安定化、マスタ出力ノードの設置などに利用します。Null CHOP / Null TOP / Null SOP と同じ「パススルー中継」族の DAT 版です。
主な用途 🎯
- ネットワークの中継ノードとして、複数の下流が参照する共通のアンカー点を配置
- 上流 DAT の差し替えを行っても下流の参照 (
op('null1')等) が壊れないよう参照名を安定化 - テーブル / テキストの確認ポイントとして、デバッグ時のビューア表示専用ノードを設置
- マスタ出力ノードとして COMP 内の最終出力 DAT を集約し、外部参照の入口を一本化
- ネットワーク改修時のアンカーとして、上流のリファクタリングと下流の参照を分離
データフロー 🔄
入力: 上流 DAT (Table / Text / File In / Convert 等)
↓
パススルー (テーブル行列 / テキスト内容を変換せず転送)
↓
出力: 入力と同一のテーブル / テキスト
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Null Page 📋
Null DAT 固有設定 ℹ️
Null DAT は入力をそのままパススルーするため、Null Page には固有パラメータが存在しません:
- 固有パラメータなし: Null DAT は入力された DAT データをそのまま出力するパススルーオペレータのため、Null Page には固有のパラメータが存在しません。全ての設定は下記 Common Page で行います
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: 参照を安定化する中継 🔗
上流の Table DAT → Null DAT → 複数の下流参照 (Evaluate / Select / Python op())
頻繁に差し替えが発生する上流テーブルを Null DAT で受け、下流の参照は全て Null DAT を指すように構成。上流ノードを別の Table DAT や File In DAT に差し替えても下流の参照は壊れず、ネットワーク改修時の繋ぎ直し作業を大幅に削減できます。
- 上流の Table DAT (または File In DAT / Convert DAT) を Null DAT に接続
- 下流の参照 (
op('null1')/ Select DAT のDATパラメータ / Evaluate DAT の入力等) を全て Null DAT に向ける - 上流ノードを差し替える際は Null DAT への接続のみ繋ぎ直す、下流参照は触らない
- ネットワーク改修時の繋ぎ直し範囲が Null DAT 1 個に局所化される
Example 2: 出力ノードに集約 🎯
COMP 内部の複数 DAT 処理 → Null DAT (マスタ出力) → Out DAT → COMP 外部
Base COMP の内部で複数の DAT 処理 (Convert / Evaluate / Merge 等) を行った結果を、最終的に 1 個の Null DAT に集約してマスタ出力とする設計。外部からは Null DAT を参照するだけで COMP の最終結果が取得でき、内部実装の変更が外部参照に影響しません。
- Base COMP 内に複数の DAT 処理チェイン (Table / Convert / Evaluate / Merge 等) を構築
- 全ての処理結果を最終段の Null DAT に集約 (
null_master等の固有名でリネーム) - Null DAT の出力を Out DAT に渡し、COMP 外部からアクセス可能にする
- COMP 内部のリファクタリングを行っても、Null DAT 名と Out DAT 配置を維持すれば外部参照は安定
Example 3: 確認用の中継点を設置 🔍
上流 DAT 処理チェイン → Null DAT (Viewer Active) → 続く下流処理
複雑な DAT 処理パイプラインの途中段階を確認するため、Null DAT を挟んでビューアを有効化。Null DAT 自身は処理を行わないため、デバッグ用に挿入してもパイプラインの挙動を変えずに中間状態をモニタリングできます。
- 確認したい中間ステージに Null DAT を挿入 (上流処理 → Null DAT → 下流処理)
- Null DAT のビューアを有効化 (
Viewer Activeフラグオン) してテーブル / テキスト内容を可視化 - ビューアでテーブル行列やテキスト内容を確認、想定通りのデータが流れているかを検証
- デバッグ完了後は Null DAT を残したままにしてもパイプラインへの影響はゼロのため、本番運用でも常設可能
関連オペレータ 🔗
類似機能OP 🔍
- Out DAT — COMP の出力ポートを担う出力アンカー、Null は COMP 内部の中継アンカー
- Select DAT — 別 OP の DAT 出力を遠隔参照するパススルー、Null は直接接続の中継に特化
- Switch DAT — 複数入力の切替パススルー、Null は単一入力の中継のみ
組み合わせ推奨OP 🔄
- Table DAT — Table DAT の出力を Null DAT で受け、下流参照のアンカーとして使用
- Text DAT — Text DAT (スクリプト / 設定テキスト) の中継ノードとして、複数下流の共通参照点に
- Convert DAT — Convert で変換後のテーブルを Null で受け、変換結果の安定参照点とする
- Evaluate DAT — Evaluate の式評価後テーブルを Null で受けて下流に配信
- Merge DAT — 複数 DAT を Merge で結合した結果を Null に集約し、マスタテーブルの参照点にする
- Out DAT — COMP 内部の Null DAT (マスタ出力) を Out DAT に渡して COMP 外部へ公開
前処理・後処理DAT 🎯
- 前処理: Table DAT、Text DAT、Convert DAT、Merge DAT、Evaluate DAT
- 後処理: Select DAT、Switch DAT、Out DAT、DAT Execute DAT
Info DAT情報 📊
Null DAT は Info DAT による詳細情報取得に対応しています (num_rows / num_cols / total_cooks / cook_time / cook_frame / 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:
- 下流参照は Null DAT のパス (例:
op('null1')) を指しているか確認、上流 DAT を直接参照していると差し替え時に壊れる - Null DAT 自体の名前を変更すると下流参照は壊れるため、リネームする場合は下流の参照式も追従させる
- 参照を安定化する目的では Null DAT の配置位置・名前を固定し、上流のみ差し替える運用にする
❌ Problem: Null DAT を挟んでもパフォーマンスが改善しない
✅ Solution:
- Null DAT 自体には Cook Type 等の最適化パラメータがなく、CHOP の Null と異なり再クック制御は行わない (DAT はそもそも値変化検知が CHOP より緩いため)
- 再クック頻度の制御が必要な場合は上流側に DAT Execute DAT + 条件式でゲートを設ける
- 巨大テーブルの中継で重い場合は Select DAT で必要な行 / 列のみ抽出した結果を Null で受ける設計に変更
❌ Problem: Null DAT のビューアにデータが表示されない
✅ Solution:
- Null DAT に上流 DAT が接続されているか確認 (左側入力に何も繋がっていなければ出力は空)
- 上流 DAT 自体の出力が空でないか確認 (上流のビューアでテーブル / テキストが見えるか)
- Viewer Active フラグがオンになっているか確認 (ノード右下のフラグ)
- Info DAT を別途配置し、
num_rows/num_colsで実際のデータ次元を検証
❌ Problem: Word Wrap や Language の設定が下流に反映されない
✅ Solution:
- Null DAT の Common Page 設定 (Language / Word Wrap 等) は Null DAT 自身のノード表示・編集動作のみに影響、データ内容は変更しない
- 下流の DAT (Text DAT / Evaluate DAT 等) は独自に Language / Word Wrap を持つため、必要なら下流側でも個別に設定
LanguageをInputにすると上流の設定を継承するため、チェインで揃えたい場合は全段をInput統一にする
参考資料 📚
その他 🔗
- TouchDesigner Wiki — DAT 概要
- TouchDesigner Wiki — Category:DATs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

