見出し画像

超簡単に最近のテキストフォーマットについてあれこれ(Markdown, YAML, TOML, TOON)

はお。

知識の整理も兼ねて簡単に。

各フォーマットの主な特徴

  • Markdown

    • 用途: 文章の装飾や構造化(ドキュメント作成)

    • 特徴: 記号(# や *)を使って、太字や見出し、リストなどを直感的に記述できます。ブログやREADMEなどで広く使われます。

  • YAML

    • 用途: 設定ファイル、データ交換

    • 特徴: 人間が非常に読みやすく、インデント(字下げ)で階層を表現します。Dockerの設定や、Markdown記事のメタデータ(Front Matter)によく使われます。

  • TOML

    • 用途: 設定ファイル

    • 特徴: 非常にシンプルで可読性が高く、RustやGoなどのプログラミング言語のプロジェクト設定(例: pyproject.toml や Cargo.toml)で標準的に使われています。

  • TOON

    • 用途: LLM(大規模言語モデル)向けのデータ入力

    • 特徴: トークン数を節約しつつLLMの認識精度を高める新しい形式です。YAMLのような階層構造とCSVのような表形式の良さを併せ持ちます。 [1, 2, 3, 4, 5]

たとえば、Webサイトやアプリを構築する際、システム全体の設定には TOML や YAML を使い、記事本体の執筆には Markdown を使い、AI(LLM)と大量のデータをやり取りする際には TOON を活用する、といった使い分けがされます。

超簡単なサンプル

YAML

# コメント: ユーザー情報 
name: "山田 太郎" 
age: 30 
is_student: false 
 
# 配列(リスト): 複数の要素
skills: 
  - Python
  - YAML 
  - Docker 
 
# オブジェクト(ハッシュ/辞書): 入れ子構造のデータ 
address: 
  city: "東京都" 
  country: "日本"

TOML

# 基本的な文字列と数値 
title = "TOML サンプル" 
version = "1.0.0" 
port = 8080 
 
# 論理値(true / false) 
enable_debug = true 
 
# 配列 
whitelist = ["127.0.0.1", "192.168.1.10"] 
 
# セクション(テーブル) 
[database] server = "://example.com" 
connections = 10 
timeout = 30.5 
 
# セクションのネスト(ドットで表現することも可能)
[owner] 
name = "Yamada Taro" 
bio = "開発者" 
 
# テーブルの配列(同じキー名で複数の要素を持つ) 
[[servers]] 
name = "node-1" 
ip = "10.0.0.1" 
 
[[servers]] 
name = "node-2" 
ip = "10.0.0.2"

TOON

users[3] {id, name, role} 
1 | 太郎 | admin 
2 | 花子 | user 
3 | 次郎 | user


いいなと思ったら応援しよう!

遊月 悉く書を信ずれば則ち書無きに如かず