# TOML クイックリファレンス

*テーブル、文字列、数値、日付、配列*

> Source: TOML Specification (toml.io) · MIT

## 構文

### 基本ルール

| Command | Description |
|---------|-------------|
| `key = value` | キーと値のペア（1 行に 1 つ） |
| `#` | コメント（行末まで） |
| `Case sensitive` | キーと値は大文字・小文字を区別 |
| `UTF-8` | ファイルは有効な UTF-8 でなければならない |
| `No null` | TOML に null 型はない |

### 最小限の例

```
title = "My App"
debug = true
port = 8080
```

## 文字列

### 文字列の種類

| Command | Description |
|---------|-------------|
| `"basic"` | 基本文字列（エスケープをサポート） |
| `'literal'` | リテラル文字列（エスケープなし） |
| `"""multi"""` | 複数行の基本文字列 |
| `'''multi'''` | 複数行のリテラル文字列 |

### 例

```
basic = "Hello\nWorld"
literal = 'C:\Users\path'
multi = """
Line one
Line two"""
```

### エスケープシーケンス

| Command | Description |
|---------|-------------|
| `\n  \t  \r` | 改行、タブ、キャリッジリターン |
| `\\` | バックスラッシュ |
| `\uXXXX` | Unicode（4 桁の 16 進数） |
| `\UXXXXXXXX` | Unicode（8 桁の 16 進数） |

## 数値とブール値

### 数値の型

| Command | Description |
|---------|-------------|
| `42` | 整数 |
| `1_000_000` | アンダースコア区切りの整数 |
| `0xff / 0o77 / 0b11` | 16 進数、8 進数、2 進数 |
| `3.14` | 浮動小数点 |
| `5e+22 / 1e-2` | 指数表記 |
| `inf / nan` | 特殊な浮動小数点値 |
| `true / false` | ブール値（小文字のみ） |

### 例

```
count = 42
price = 19.99
hex_color = 0xFF5733
enabled = true
```

## 日付

### 日付と時刻の型

| Command | Description |
|---------|-------------|
| `2026-03-26T10:30:00Z` | オフセット日時（UTC） |
| `2026-03-26T10:30:00-05:00` | オフセット日時（EST） |
| `2026-03-26T10:30:00` | ローカル日時（タイムゾーンなし） |
| `2026-03-26` | ローカル日付 |
| `10:30:00` | ローカル時刻 |

### 例

```
created = 2026-03-26T10:30:00Z
birthday = 1990-05-15
alarm = 07:00:00
```

## テーブル

### テーブル構文

```
[server]
host = "localhost"
port = 8080

[server.ssl]
enabled = true
cert = "/path/to/cert.pem"
```

### テーブルの配列

```
[[users]]
name = "Alice"
role = "admin"

[[users]]
name = "Bob"
role = "user"
```

### ルール

| Command | Description |
|---------|-------------|
| `[name]` | 標準テーブルヘッダー |
| `[a.b.c]` | ドット記法 — ネストされたテーブル |
| `[[name]]` | テーブルの配列 |
| `No redefine` | 同じテーブルを 2 度定義できない |

## 配列

### 配列構文

```
colors = ["red", "green", "blue"]
numbers = [1, 2, 3]
```

### 複数行の配列

```
hosts = [
  "alpha.example.com",
  "beta.example.com",
]
```

*TOML 配列では末尾のカンマが許可されています*

### ルール

| Command | Description |
|---------|-------------|
| `Same type` | すべての要素は同じ型でなければならない |
| `Trailing comma` | 最後の要素の後に使用可能 |
| `Newlines` | 配列は複数行にまたがれる |

## インラインテーブル

### インラインテーブル構文

```
point = { x = 1, y = 2 }
user = { name = "Alice", admin = true }
```

### ルール

| Command | Description |
|---------|-------------|
| `Single line` | 1 行で記述しなければならない |
| `No trailing comma` | 末尾のカンマは不可 |
| `No newlines` | 複数行にまたがれない |
| `No adding keys` | 後からインラインテーブルにキーを追加できない |

### インライン vs 標準

```
# Inline — compact, one-liners
db = { host = "localhost", port = 5432 }
# Standard — readable, extendable
[db]
host = "localhost"
port = 5432
```

## よく使うパターン

### pyproject.toml

```
[project]
name = "myapp"
version = "1.0.0"
dependencies = ["flask>=3.0"]
```

### Cargo.toml

```
[package]
name = "myapp"
version = "0.1.0"
edition = "2021"
```

### ヒント

| Command | Description |
|---------|-------------|
| `taplo` | TOML ツールキット — フォーマッターとリンター |
| `No null` | null をセットする代わりにキーを省略 |
| `No anchors` | YAML と異なり、参照/エイリアスシステムはない |
| `Strict` | 重複キーなし、型の混在した配列なし |
