ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
概要
TSV (Tab-Separated Values) は、フィールドをタブ文字 (\t, ASCII 0x09) で区切り、レコードを改行で区切ったテキスト形式である。CSV と並ぶ古典的な表形式の表現方法であり、データサイエンス・バイオインフォマティクス・自然言語処理の世界では CSV と双璧をなす標準フォーマットである。
IANA には text/tab-separated-values として正式に MIME タイプが登録されている (1993 年、IBM 提案)。CSV の text/csv (RFC 4180、2005 年) よりも登録が早く、規格としての地位は CSV と同等に確立している。CSV と比べて引用符 (ダブルクォート) によるエスケープが基本的に不要であり、フィールド内にカンマを多用する自然言語データを扱う場合に特に有利である。
内部構造とフォーマット規則
TSV のルールはきわめて単純である。
- フィールド区切りはタブ文字 1 個 (
\t, 0x09)。 - レコード区切りは改行 (LF または CRLF)。
- フィールド内にタブ・改行を含めない (含む場合は
\t/\n等のエスケープ表記にするのが慣習)。 - 1 行目はヘッダ (列名) のことが多い。
- 引用符での囲みは不要 (CSV のような
"ルールは適用しない)。
name age email comment
Alice 30 alice@example.com Hi, I'm Alice
Bob 25 bob@example.com short note
Charlie 40 charlie@example.com has, comma, no problem
(上記のタブは表記の都合上 で示しているが、実ファイルではバイト 0x09 が入る)。Alice の comment にカンマや空白が含まれていても、フィールド境界はタブで明確に決まるため、CSV のような引用符付与が不要である点が TSV の最大の利点である。
IANA 仕様 (text/tab-separated-values) では、改行を CRLF とすること、各レコードのフィールド数が同一であること、空フィールドは「タブとタブの間に何も無い」状態で表すことが定められている。
主な用途
- バイオインフォマティクス: BLAST / SAM (Sequence Alignment Map) / VCF (Variant Call Format) / GTF/GFF など、ゲノム解析の主要フォーマットの実体は TSV ベース。
- 自然言語処理 (NLP): 注釈データセット (品詞・依存構造・固有表現) は TSV が標準。CoNLL 形式が代表例。
- 機械学習データセット: Hugging Face Datasets / Kaggle の表形式データに頻出。フィールド内のテキストがカンマを多く含むため CSV より TSV が好まれる。
- ログ解析: LTSV (Labeled TSV) は
key:valueをタブで連結した形式で、Web サーバの構造化ログとして 2013 年頃に普及。 - Excel との貼り付け連携: Excel から「コピー → 他アプリにペースト」したときのクリップボードフォーマットはタブ区切り。逆方向 (タブ区切りテキスト → Excel) も「形式を選択して貼り付け」で列に分割される。
- DB エクスポート: MySQL の
SELECT ... INTO OUTFILEのデフォルト出力、PostgreSQL のCOPYのデフォルトもタブ区切り。
関連形式との比較
| 形式 | 区切り | 引用符規則 | 方言の多さ | 備考 |
|---|---|---|---|---|
| TSV | タブ | 不要 (原則) | 少ない | NLP / バイオで標準 |
| CSV | カンマ | 必要 (RFC 4180) | 多い | 業務・オープンデータで標準 |
| SSV | セミコロン | 必要 | 欧州ロケール | 独・仏 Excel のデフォルト |
| PSV | パイプ | | 必要 | 少ない | 金融・通信業界の一部 |
| LTSV | タブ + : | 不要 | 少ない | Web サーバログ |
| JSON Lines | 改行のみ (各行 JSON) | JSON 構文 | 少ない | ストリーミング処理 |
編集・パーサ・ツール
# Python pandas (区切り文字を明示)
python -c "import pandas as pd; print(pd.read_csv('data.tsv', sep='\t').head())"
# csvkit は TSV にも対応 (-t オプション)
csvstat -t data.tsv
csvgrep -t -c name -m Alice data.tsv
# xsv (タブ区切りモード)
xsv stats -d "\t" data.tsv
# miller (mlr) — TSV は --tsv
mlr --tsv filter '$age > 25' then sort -nr age data.tsv
# awk / cut で素朴に処理
cut -f1,3 data.tsv # 1 列目と 3 列目を抜き出し
awk -F'\t' 'NR>1 && $2 > 25 {print $1}' data.tsv
# CSV → TSV 変換 (引用符込みの正しい変換)
python -c "
import csv, sys
r = csv.reader(open('data.csv', encoding='utf-8'))
w = csv.writer(sys.stdout, delimiter='\t')
for row in r: w.writerow(row)
" > data.tsv
# TSV → JSON Lines
mlr --t2j cat data.tsv > data.jsonl
注意点・落とし穴
- タブと空白の混同: エディタで「タブを空白 4 個に展開」設定が有効だと、保存時にタブが空白に変わり TSV が壊れる。
.editorconfigでindent_style = tabを明示するか、cat -Aでタブ (^Iと表示) を確認する。 - フィールド内タブ: 自由記述カラムにタブが混入すると列ズレを起こす。投入前に
\tを空白に置換するか、Information Separator (US, 0x1F) を使った別形式を検討する。 - 末尾の空フィールド: 「タブで終わって改行」の行は最後に空フィールドを 1 個持つ。awk や cut では問題ないが、pandas のデフォルトは末尾タブを無視せず NaN 列を増やすことがある。
- Excel の自動型変換: TSV を Excel で開くと CSV と同じく先頭 0 落ち・日付化が起きる。CSV と同様に Power Query 経由でインポートし、列の型を文字列に固定する。
- 改行コードの混在: Windows で作った TSV (CRLF) を Linux の awk に流すと、最終列に
\rが残り、文字列比較が失敗する。dos2unixで事前変換する。 - 文字コード問題: CSV と同じく Shift_JIS / UTF-8 BOM 有無の問題は TSV にも当てはまる。基本は UTF-8 (BOM なし) で統一する。
- 「拡張子だけ TSV で中身はカンマ区切り」: 命名と中身が一致していないファイルが出回っているケースがある。
head -1 data.tsv | od -c | headで先頭バイトを確認する。
関連リンク
- テキスト・ドキュメント形式 (親カテゴリ)
- ファイル拡張子とは (概論)
- PDF (.pdf) / CSV (.csv) / Markdown (.md) / TXT (.txt)
- CSV 読み込み
- CSV ファイルのダウンロード
- CSV ファイルアップロード方法(Ajax)
- CSV のアップロードおよび読み込み
- IANA — text/tab-separated-values
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?