
概要 📖 – COMP の入力ポートとして DAT データを受け取る
In DATは、Base COMP や Container COMP の入力ポートとして外部から DAT データを受け取り、コンポーネント内部のネットワークへ橋渡しする DATです。Label パラメータで入力ポート上にマウスホバー時に表示されるポップアップラベルを設定でき、COMP の入力の意図 (どんな DAT を期待しているか) を明示できます。In CHOP / In TOP / In SOP 等と同じ「COMP 入力ポート受け取り」族の DAT 版です。
主な用途 🎯
- Base COMP / Container COMP の入力ポートとして DAT データ (テキスト / テーブル) を受け取る
- コンポーネント外部からの DAT 受け渡しを担い、内部ネットワークと外部の境界を作る (モジュール化)
- Label パラメータで入力ポート上にポップアップ表示するラベル文字列を設定し、入力の意図を明示
- COMP の入出力契約を明示するインターフェース要素として、再利用可能なテンプレート COMP の構築に利用
- 親 COMP の input コネクタ番号と In DAT のインデックスを 1:1 対応させ、複数入力 COMP の入力経路を整理
データフロー 🔄
入力: COMP 外部の上流 DAT (Table / Text / File In 等)
↓
親 COMP の入力ポート (左側 input コネクタ)
↓
In DAT (COMP 内部に配置)
↓
COMP 内部の下流 DAT チェイン (Convert / Evaluate / Select 等)
↓
出力: COMP 内部ネットワーク
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
In Page 📋
In パラメータ 🔌
Label .label 🏷️
– この入力ポートに付けるラベル文字列
– 親 COMP の入力コネクタ上にマウスを当てたときに表示されるポップアップで使用される
– 「何を渡す入力か」(例: config table / script source / log lines 等) を明示することで、再利用 COMP の入力契約を可視化できる
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: Base COMPで外部Table DATを受取 🔌
外部 Table DAT → Base COMP 入力ポート → In DAT → COMP 内部処理 (Evaluate / Convert 等)
- Base COMP を作成し、内部に In DAT を 1 個配置
- 外部に Table DAT (設定値テーブル等) を用意し、Base COMP の入力ポート (左側の
input1) に接続 - COMP 内部の In DAT の出力をそのまま下流の
Evaluate DATやConvert DATに渡す - COMP の入出力契約が明示され、外部から異なる Table DAT に差し替え可能なモジュールとして再利用できる
Example 2: Label で入力ポートの意図を明示する 🏷️
Base COMP (input1=config_table, input2=log_source) → 各 In DAT (Label 設定済) → 内部処理
- Base COMP に In DAT を 2 個配置し、それぞれ
input1/input2に対応させる - 1 個目の In DAT の
Labelをconfig tableに設定 (設定値テーブルを受け取る入口) - 2 個目の In DAT の
Labelをlog sourceに設定 (ログ文字列を受け取る入口) - 親 COMP の入力コネクタにマウスを乗せると Label がポップアップ表示され、どちらの入力に何を繋げばよいか即座に分かる
- 再利用 COMP の入力契約がドキュメントなしでも自己説明的になる
Example 3: 外部スクリプト DAT を COMP 内部に取り込んで実行 🐍
外部 Text DAT (Python ソース) → Base COMP 入力 → In DAT → COMP 内部の Execute DAT / Evaluate DAT
- 外部に Python ソースを保持した
Text DATを用意し、Base COMP の入力ポートに接続 - COMP 内部の In DAT が Text DAT の内容を受け取り、
LanguageをInputにして上流の言語設定を継承 - COMP 内部で In DAT の出力を
Execute DATに渡し、フレームコールバックやパラメータ変更コールバックでスクリプトを実行 - 外部から別の Text DAT に差し替えるだけで COMP の挙動を切り替えられる、プラガブルなロジック注入経路として機能する
関連オペレータ 🔗
類似機能OP 🔍
- Text DAT — テキスト / スクリプトソースを直接保持するソース DAT、In DAT は外部 COMP 入力から受け取る点が異なる
- Table DAT — テーブルデータを直接編集して保持するソース DAT、In DAT は外部 COMP 入力経由でテーブルを受け取る点が異なる
組み合わせ推奨OP 🔄
- Out DAT — COMP の出力ポートを担当、In と対になりコンポーネントの入出力インターフェースを構成
- Evaluate DAT — In で受け取ったテキストを式評価し、参照解決後のテーブル / 文字列として COMP 内部処理に渡す
- Convert DAT — In で受け取ったテーブルをタブ → カンマ等の区切り文字変換、テキスト ↔ テーブル相互変換に利用
- Select DAT — In 直後に Select DAT を置いて、外部から渡された巨大テーブルから必要な行 / 列のみを抽出
- Execute DAT — In で受け取ったスクリプトソースを Execute DAT に渡し、コールバック駆動でロジックを発火
前処理・後処理DAT 🎯
Info DAT情報 📊
In 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: In DAT に何も流れてこない / 出力が空になる
✅ Solution:
- In DAT は COMP (Base COMP / Container COMP 等) の内部に置かれている必要がある、ネットワーク最上位 (
/) に置いても外部入力は受け取れない - 親 COMP の入力ポート (左側の input コネクタ) に上流 DAT が接続されているか確認
- 同 COMP 内に複数の In DAT がある場合、In DAT のインデックス (配置順) と親 COMP の入力ポート番号 (input1 / input2 / …) が一致しているか確認
- 親 COMP の
Inputsページで入力経路が無効化されていないか確認
❌ Problem: Label を変えてもポップアップ表示が変わらない
✅ Solution:
- Label の表示は親 COMP の入力ポート上にマウスをホバーした時に出るため、In DAT 自身のノード上ではなく親 COMP の外側コネクタで確認
- Label を変更した直後はキャッシュが残っている場合があるので、ネットワーク view を一度別 COMP に切り替えてから戻して再描画
- 親 COMP が tox 化されている / locked な場合、Label の変更が反映されないことがある (
op('comp1').par.label1.eval()で値を直接確認)
❌ Problem: 外部から渡したテーブルがテキストとして 1 文字列扱いされる
✅ Solution:
- 上流の DAT がテーブル形式 (タブ区切り) になっているか確認 (Convert DAT でテキスト → テーブル変換を挟むのが定石)
- 上流が File In DAT の場合は
Convert Text to Tableをオンにする - In DAT 自体には変換パラメータがないため、テーブル化は In の前段で完了させる必要がある
❌ Problem: COMP を保存・再ロードすると入力接続が外れる
✅ Solution:
- 外部 DAT との接続は親 COMP 側に保存されるため、tox 化前に親 COMP まで含めて保存しているか確認
- Base COMP を
Save Componentで .tox 化する際、外部接続は tox には含まれない (再配置先のネットワークで再接続する設計が必要) - 再利用 COMP の入出力契約を Label で明示しておくと、再配置時の繋ぎ直しが大幅に楽になる
参考資料 📚
その他 🔗
- TouchDesigner Wiki — DAT 概要
- TouchDesigner Wiki — Category:DATs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group

