
概要 📖 – テキストと表を変換する
Convert DATは、テキスト形式とテーブル形式を双方向に変換し、区切り文字によるパース・シリアライズを担当する DATです。To Text / To Table の 2 つの変換方向と、Split Cells at / Concatenate with の区切り規則を組み合わせて、CSV / TSV / 独自フォーマットのテキストとテーブル DAT を相互変換します。
主な用途 🎯
- CSV / TSV テキストを Table DAT 形式に分解し、後段でセル単位の参照や検索を可能にする
- Table DAT のセル群を区切り文字付きの1 つのテキストに連結して File Out DAT へ保存する
- Web Client DAT や Serial DAT 等で取り込んだ生テキストレスポンスを行列構造化して解析しやすくする
- CHOP to DAT でテーブル化した値を To Text モードでシリアライズし、外部プロトコル送信用ペイロードに整形する
- 複数文字のデリミタを Substitute DAT で 1 文字に置換 → Convert DAT で分割という二段構えで複雑な区切り規則を扱う
データフロー 🔄
入力: テキスト or テーブル DAT
↓
How パラメータで変換方向を決定 (To Text / To Table)
↓
Split Cells at (分割) / Concatenate with (連結) の区切り規則を適用
↓
Remove Blank Lines で空行の扱いを決定
↓
出力: 反対形式の DAT
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Convert Page 📋
How .how 🔁
変換方向を決定するメニューパラメータ
| 項目 | 内部名 | 説明 |
|---|---|---|
| To Text | .text |
テーブル形式の入力を 1 つのテキスト (連続した文字列) に変換。各セルは Concatenate with で指定した文字列で連結される |
| To Table | .table |
テキスト形式の入力をテーブル (行列構造) に変換。Split Cells at で指定したデリミタ文字でセルに分割される |
Remove Blank Lines .removeblank 🧹
空行を出力テーブルから除外するトグル:
- Remove Blank Lines トグル: オンにすると、入力テキストに含まれる空行を出力テーブルに含めない (空セル行が生成されない)。CSV ログ等で末尾改行が空行として混入するのを防ぐ用途で使う
Split Cells at .delimiters ✂️
To Table モードでセル境界として扱う文字の集合
Split Cells at .delimiters ✂️
– テキストを行内で分割する際に使用する個別文字のリスト。
– 各文字は独立して適用される。例: $% と指定した場合、$ または % でセル分割が行われ、$% という連続文字列でのみ分割するわけではない。
– 複数文字 (例: :: や ||) を 1 つのデリミタとして使いたい場合は、前段に Substitute DAT を置いて 1 文字のプレースホルダ (例: |) に置換してから Convert DAT に渡す。
Concatenate with .spacers 🔗
To Text モードでセル間に挿入する区切り文字列
Concatenate with .spacers 🔗
– テーブルからテキストへ変換する際、各セルの間に挿入する文字列。
– CSV を生成したい場合は ,、TSV を生成したい場合は \t (タブ)、独自フォーマットなら ; や | 等を指定。
– 行末は出力 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: HTTP レスポンスの CSV をテーブル化 🌐
Web Client DAT → Convert DAT (To Table, delimiters=",") → Table DAT → Select DAT
REST API から返ってきた CSV 形式のレスポンスボディを Convert DAT で行列に分解し、Select DAT で必要な列だけを抽出する基本フロー。Split Cells at に , を指定し、Remove Blank Lines をオンにしておくと末尾改行で発生する空行を除去できる。
- Web Client DAT で REST API を叩き、CSV テキストのレスポンスを取得
- Convert DAT を後段に配置、
howをTo Table、delimitersに,を指定 - Remove Blank Lines をオンにして末尾改行由来の空行を除去
- 後段に Table DAT を置いてセル参照可能な状態にする
- Select DAT で必要な列・行だけを抽出して下流に渡す
Example 2: CHOP 値をテーブル化して CSV ログ保存 💾
Serial CHOP → CHOP to DAT → Convert DAT (To Text, spacers=",") → File Out DAT
センサーや解析結果の CHOP 値を CHOP to DAT でテーブル化し、Convert DAT の To Text モードで CSV 形式のテキストにシリアライズして File Out DAT で保存する用途。Concatenate with に , を入れれば CSV、\t を入れれば TSV として書き出せる。
- 計測対象の CHOP を CHOP to DAT に渡し、Include Names をオンにしてチャンネル名カラムを付加
- Convert DAT を続け、
howをTo Text、spacersに,を指定 - 後段の File Out DAT を配置し、出力ファイル名と拡張子 (例:
.csv) を設定 - Append モードを必要に応じて選択し、長時間ログとして保存
Example 3: 複数文字デリミタの 2 段階パース 🧩
Text DAT → Substitute DAT ("::" → "|") → Convert DAT (To Table, delimiters="|") → Table DAT
Convert DAT の Split Cells at は個別文字を独立して扱うため、:: のような複数文字シーケンスを 1 つのデリミタとして扱えない。前段に Substitute DAT を置き、:: を未使用の単一文字 (例: |) に置換してから Convert DAT で分割するパターン。
- ソースとなるテキストを Text DAT に保持
- Substitute DAT を後段に配置し、複数文字デリミタ (例:
::) を未使用の 1 文字 (例:|) に置換 - Convert DAT を続け、
howをTo Table、delimitersに置換後の|を指定 - Table DAT でセル単位の参照ができることを確認
Example 4: Serial 受信文字列のテーブル化 🔌
Serial DAT → Convert DAT (To Table, delimiters=",;") → Select DAT
マイコンやセンサーから Serial 経由で送られてくる固定フォーマット文字列 (例: id,value;state) を、Convert DAT で行列に分解してフィールドごとに参照できるようにする用途。Split Cells at に複数の単一文字 (, と ;) を並べて指定すれば、両方の区切り文字で分割される。
- Serial DAT で受信文字列を取得 (1 行 = 1 メッセージ前提)
- Convert DAT を後段に配置、
howをTo Table、delimitersに,;を指定 (両文字とも独立に区切り扱い) - Remove Blank Lines をオンにして接続切断時の空行を除外
- Select DAT で必要なフィールド列のみ取り出し、後段の DAT to CHOP 等に渡す
関連オペレータ 🔗
類似機能OP 🔍
- Substitute DAT — 文字列レベルの置換 DAT。Convert DAT 前段で複数文字デリミタを 1 文字化する用途で頻繁に併用
- Reorder DAT — テーブルの列順を入れ替える DAT。Convert で構造化した後の整形に用いる
組み合わせ推奨OP 🔄
- Table DAT — To Table 後の代表的な格納先、To Text 前のソース
- Substitute DAT — 複数文字デリミタを 1 文字化する前段処理
- File In DAT — ディスク上の CSV / TSV ファイルを読込み、Convert DAT に流す
- File Out DAT — Convert DAT で生成したテキストをディスクに書き出してログ保存
- Web Client DAT — HTTP レスポンスの CSV / TSV ボディを Convert DAT でテーブル化
- CHOP to DAT — CHOP 値をテーブル化した後 Convert DAT で CSV / TSV テキスト化
- Select DAT — Convert DAT 後段で必要な行・列だけを抽出
前処理・後処理DAT 🎯
- 前処理: Text DAT、File In DAT、Web Client DAT、Serial DAT、Substitute DAT
- 後処理: Table DAT、Select DAT、Sort DAT、Reorder DAT、File Out DAT
Info CHOP情報 📊
Convert 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: :: や || など複数文字のデリミタで分割できない
✅ Solution:
- Convert DAT の
Split Cells atは個別文字を独立して適用するため、複数文字シーケンスをそのまま指定しても期待通りに動かない - 前段に Substitute DAT を置き、複数文字デリミタを入力中に出現しない 1 文字 (例:
|) に置換してから Convert DAT に渡す - 置換後の 1 文字を
delimitersに指定して分割を実行
❌ Problem: To Table 後にテーブル末尾へ空行が混入する
✅ Solution:
Remove Blank Linesをオンにして、空行を出力テーブルに含めないように切替- 入力テキストの行末改行が冗長になっていないか前段で確認 (例: CRLF と LF が混在していないか)
- Substitute DAT 等で末尾の余計な区切り文字を事前に除去
❌ Problem: To Text 後にセル間が想定外の文字で連結されている
✅ Solution:
Concatenate withパラメータに目的の区切り文字 (例: CSV なら,、TSV なら\t) を明示的に指定する- デフォルトでは空白 1 文字になるため、CSV / TSV を生成したい場合は必ず変更が必要
- 行末は出力 DAT が自動付与するため、
spacers側で改行を入れないこと (二重改行になる)
❌ Problem: 数値や文字列が想定したセル位置に配置されない
✅ Solution:
- 入力テキスト内に Split Cells at で指定した文字がフィールド値中に混入していないか確認 (例: 値そのものに
,が入っているとセル数がずれる) - Substitute DAT で値中の区切り文字をエスケープ文字 (例:
\,) や別の文字に事前置換 - クォート文字を含む CSV を扱う場合は、Convert DAT ではなく Python スクリプトで
csvモジュールを使って parse する方が安全
参考資料 📚
その他 🔗
- TouchDesigner Wiki — DAT 概要
- TouchDesigner Wiki — Category:DATs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – Convert DAT
- TouchDesigner公式ドキュメント – ConvertDAT Class
- Substitute DAT(前段の文字列置換に併用)
- Table DAT(変換後の格納先)

