
概要 📖 – 表から値を検索する
Lookup DATは、2 つの DAT を組み合わせ、Index 入力の各値を Lookup テーブル上で検索して対応する行や列を取得する DATです。Index パラメータで 行 / 列 × 数値インデックス / 値マッチ の 4 通りから解釈方法を選び、Value Location で検索対象の行や列を 名前 または インデックス で指定できます。
主な用途 🎯
- Table DAT 上の参照表から、入力された index 値 に対応する行や列を取り出す動的ルックアップ
- 翻訳辞書 や 状態 → 色 / パラメータ対応表 を実行時に解決し、データ駆動で挙動を切り替える
- CHOP to DAT 経由でテーブル化したセンサー値・状態名を Lookup DAT に通し、別テーブルの該当行を取得
- 列名 や 行名 を Value Location で指定し、テーブル構造が変わっても安定したキー参照を実現
- File In DAT や Web Client DAT で取り込んだ CSV 設定を、後段で値検索可能な参照表として扱う
データフロー 🔄
入力 1: インデックス入力 DAT (引きたい index 値の集合)
↓
入力 2: Lookup DAT (参照テーブル本体)
↓
Index パラメータで解釈方法を選択 (Row Indices / Col Indices / Row Values / Col Values)
↓
Value Values モード時は Value Location + Value Name / Value Index で検索行・列を特定
↓
Include Header で先頭行/列を含めるか決定
↓
出力: マッチした行/列を並べた DAT
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Lookup Page 📋
Index .index 🔍
Index 入力の値をどう解釈するかを決定するメニューパラメータ
| 項目 | 内部名 | 説明 |
|---|---|---|
| Row Indices | .rowindices |
Index 入力の値を Lookup DAT の行番号 (0 始まり) として扱い、対応する行を抜き出す |
| Col Indices | .colindices |
Index 入力の値を Lookup DAT の列番号 (0 始まり) として扱い、対応する列を抜き出す |
| Row Values | .rowvalues |
Index 入力の値をセル値として扱い、Lookup DAT の特定列 (デフォルトは 1 列目) で一致検索し、ヒットした行を出力。検索対象列は Value Location で変更可能 |
| Col Values | .colvalues |
Index 入力の値をセル値として扱い、Lookup DAT の特定行 (デフォルトは 1 行目) で一致検索し、ヒットした列を出力。検索対象行は Value Location で変更可能 |
Value Location .valueloction 🎯
Row Values / Col Values モードで検索対象の行・列をどう指定するか
| 項目 | 内部名 | 説明 |
|---|---|---|
| Name | .name |
検索対象の行 / 列を名前で指定。Value Name パラメータに行名 / 列名を入れる |
| Index | .index |
検索対象の行 / 列を数値インデックス (0 始まり)で指定。Value Index パラメータに番号を入れる |
Value Name .valuename 🔤
Value Location が Name のときに参照される行 / 列名:
- Value Name 文字列:
Value LocationがNameのとき、Lookup DAT 上で値検索を行う行 / 列の名前を指定する文字列
Value Index .valueindex 🔢
Value Location が Index のときに参照される行 / 列番号:
- Value Index 番号:
Value LocationがIndexのとき、Lookup DAT 上で値検索を行う行 / 列の数値インデックス (0 始まり)
Include Header .includeheader ✅
先頭行 / 列をヘッダーとして出力に含めるトグル:
- Include Header トグル: オンにすると、Lookup DAT の先頭行 (または先頭列) をヘッダーとして出力 DAT にも含める。列名・行名つきのテーブルを後段で扱いたい場合に有効化
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: 状態名から RGB カラー値を引く設定テーブル 🎨
Text DAT (state name) → Lookup DAT (Row Values, valuename="state") → Table DAT (rgb cols) → DAT to CHOP
アプリの現在状態名 (例: idle / active / error) を Index 入力に、状態 → RGB 対応を持つ Table DAT を Lookup 入力に接続し、状態が変わるたびに対応する RGB 行を取り出して照明や UI 色に流す用途。Value Location を Name にし Value Name に state 列を指定すれば、テーブルの列順が変わっても安定して引ける。
- RGB 設定表を Table DAT に用意 (列:
state/r/g/b) - 現在の状態名を保持する Text DAT を別途用意し、Lookup DAT の 1 番目 (Index) 入力に接続
- RGB 設定表を Lookup DAT の 2 番目 (Lookup) 入力に接続
indexをRow Values、valueloctionをName、valuenameをstateに設定- 出力された 1 行を DAT to CHOP で CHOP 化し、後段の色制御に流用
Example 2: CHOP のセンサー値を範囲ラベルに変換 (バンディング) 📊
Serial CHOP → Math CHOP (bin index) → CHOP to DAT → Lookup DAT (Row Indices) → Table DAT (label rows)
センサー値をバンディングしたいときの典型パターン。Math CHOP で 0 / 1 / 2 等の bin インデックスに離散化し、CHOP to DAT でテーブル化、Lookup DAT を Row Indices モードにしてラベル表の対応行 (例: low / mid / high) を取り出す。閾値ロジックを Math 1 個に集約でき、ラベル定義もテーブル 1 つで一元管理できる。
- センサー CHOP の値を Math CHOP の Pre-Add / Multiply で 0 〜 N-1 の整数 bin に離散化
- CHOP to DAT で 1 行 1 列のインデックステーブル化
- ラベル定義 Table DAT (各行に
label列) を別途用意し、Lookup DAT の 2 番目入力に接続 indexをRow Indicesに設定し、bin 番号から対応ラベル行を取り出す- 後段で Select DAT 等を使い
label列のみ抽出して表示や送信に活用
Example 3: CSV 翻訳辞書を実行時にルックアップ 🌐
File In DAT (dict CSV) → Lookup DAT (Col Values, valuename="ja") ← Text DAT (key word) → Table DAT
en,ja,zh の 3 列を持つ翻訳辞書 CSV を File In DAT で読み込み、Lookup DAT の Lookup 入力に接続。引きたいキー (例: hello) を持つ Text DAT を Index 入力にし、index を Row Values に、Value Location を Name、Value Name を en にして、英単語をキーに翻訳行を取り出すフロー。辞書を CSV ファイルとして外部に出すので、再起動なしに辞書編集ができる。
- 翻訳辞書 CSV を準備 (1 行目:
en,ja,zh) - File In DAT で CSV を読み込み、Convert DAT で Table 化
- 引きたい単語を持つ Text DAT (例: 1 セルに
hello) を Lookup DAT の 1 番目入力に - Convert 後の辞書 Table を Lookup DAT の 2 番目入力に接続
indexをRow Values、valueloctionをName、valuenameをenに設定し、英単語キーで辞書を引く- 出力された 1 行から日本語列 (
ja) のセルを Table DAT 経由で参照
Example 4: OSC アドレスから handler 設定を引くディスパッチ表 📡
OSC In DAT → Select DAT (address col) → Lookup DAT (Row Values, valuename="address") → Handler Config Table
OSC 経由で送られてくるメッセージのアドレス (例: /scene/next) を Index 入力にし、アドレス → ハンドラ設定 (パラメータ / 値域 / 遷移時間 等) を持つ設定テーブルを Lookup 入力にして、メッセージごとに必要な設定行を引き当てるディスパッチパターン。アドレスとハンドラの対応を Table DAT 1 つに集約できるため、新規 OSC アドレス対応は CSV に 1 行追加するだけで完結する。
- OSC In DAT で受信した行から Select DAT でアドレス列のみ抽出
- アドレス → 設定の対応 Table (列:
address/target/value等) を別途用意 - 抽出アドレスを Lookup DAT の 1 番目入力、設定 Table を 2 番目入力に接続
indexをRow Values、valueloctionをName、valuenameをaddressに設定- 出力された設定行を DAT Execute / Parameter Execute 等のスクリプトで実行し、対応するパラメータを更新
関連オペレータ 🔗
類似機能OP 🔍
- Select DAT — 行 / 列を名前・パターン・範囲で抽出する DAT。Lookup が index 入力との対応で動的に引くのに対し、Select は固定のセレクタで静的に切り出す
- Substitute DAT — セル値の文字列置換 DAT。1:1 の文字列マッピングは Substitute、行・列単位の構造マッピングは Lookup と用途を分けると整理しやすい
組み合わせ推奨OP 🔄
- Table DAT — Lookup の 2 番目入力 (参照表) の代表的なホスト。CSV 設定や辞書をここに保持する
- File In DAT — 外部 CSV / TSV を読み込み、Convert DAT 経由で Lookup の参照表として供給
- Convert DAT — テキスト CSV を Table に変換してから Lookup に流す前段処理
- CHOP to DAT — CHOP のインデックス値・状態値を DAT 化し、Lookup の Index 入力として渡す
- DAT to CHOP — Lookup で取り出した行を CHOP 化し、後段のパラメータ制御や TOP に流用
- Select DAT — Lookup 出力から必要な列だけを取り出す後段整形
- OSC In DAT — 受信した OSC アドレスを Lookup の Index 入力にしてハンドラディスパッチ
前処理・後処理DAT 🎯
- 前処理: Table DAT、File In DAT、Convert DAT、CHOP to DAT、Substitute DAT
- 後処理: Select DAT、Sort DAT、Reorder DAT、File Out DAT、Evaluate DAT
Info CHOP情報 📊
Lookup DAT は Info CHOP による詳細情報取得に対応しています。num_rows / num_cols で出力テーブルの行数・列数を、total_cooks / cook_time / cpu_time でクック回数と処理コストを参照でき、参照表のサイズ膨張や評価頻度の監視に利用できます。
DAT 固有情報 📋
num_rows: DAT の行数num_cols: DAT の列数type: DAT の型 (table / text)is_table: テーブル形式の場合 1、テキスト形式の場合 0
汎用オペレータ情報 🔄
total_cooks: プロセス開始からのクック回数cook_time: 最後のクック時間 (ミリ秒)cook_frame: 最後にクックされたフレーム番号warnings: 警告数errors: エラー数
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: Row Values モードで一致するはずの値がヒットしない
✅ Solution:
Value LocationがNameのとき、Value Nameに指定した列名が Lookup DAT の先頭行に存在するか確認 (Include Header設定とずれていないか)- Index 入力側のセル値に余分な空白・改行が混じっていないか確認。前段に Substitute DAT を挟んで空白を除去
- 値検索は大小文字を区別するため、必要なら Index と Lookup の双方を小文字化してから接続
❌ Problem: Row Indices モードで意図しない行が返ってくる
✅ Solution:
Include Headerがオンだと出力先頭にヘッダー行が含まれ、見かけ上のインデックスがずれて見えることがある。ヘッダーを含めない場合はオフに- Index 入力の値が0 始まりであることを確認。1 始まりで設計しているなら前段 Math CHOP 等で
-1オフセットを入れる - 範囲外のインデックスは行が返らない / 空セルになる挙動なので、上限を Limit CHOP 等でクランプ
❌ Problem: Value Location を Name にしているのに名前で引けない
✅ Solution:
- Lookup DAT の先頭行 (または先頭列) がヘッダーとして機能している必要がある。データのみで構成された Table の場合、先頭行を一度ヘッダー化しておく
valuenameパラメータの値と Lookup 側の名前列ラベルの完全一致を再確認 (前後空白・全角半角差・ケース差に注意)Value LocationをIndexに切り替えて、まず数値インデックスで意図した位置のセルが引けるか分離して確認
❌ Problem: Lookup DAT が頻繁にクックされて重い
✅ Solution:
- Index 入力側の Text / Table DAT が毎フレーム書き換わっていないか、前段の Convert DAT / CHOP to DAT のクック頻度を確認
- 参照表側 (Lookup 入力) が大きすぎる場合、用途に応じて Select DAT で必要な行・列のみに事前絞り込み
- Info CHOP の
cook_time/cpu_timeを監視し、参照表サイズと相関しているか切り分け
参考資料 📚
その他 🔗
- TouchDesigner Wiki — DAT 概要
- TouchDesigner Wiki — Category:DATs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – Lookup DAT
- TouchDesigner公式ドキュメント – LookupDAT Class
- Table DAT(参照表の代表的なホスト)
- Select DAT(行・列の静的抽出、Lookup と対比される用途)

