著者: Jerry Fan2026年6月 更新

JSONLとは?JSON Lines形式の完全ガイド

JSON Linesについて知っておくべきすべて——構文、例、ユースケース、ベストプラクティス。

JSONLとは?

JSONL(JSON Lines)は、Newline Delimited JSON(NDJSON)とも呼ばれ、各行が有効なJSON値であり、改行文字で区切られたテキストベースのデータ形式です。データを単一の配列やオブジェクトで囲む標準的なJSONとは異なり、JSONLは1行に1レコードを格納します。

このシンプルな設計により、JSONLはストリーミング、ログ記録、大規模データセットの処理に最適です。各行をファイル全体をメモリにロードすることなく、独立して読み取り、解析、処理できます。

この形式は、OpenAI(ファインチューニングデータセット用)、BigQuery、Apache Spark、ログ管理システムなど、大量のデータを処理するツールやプラットフォームによって普及しました。

JSONL構文ルール

JSONL形式はいくつかのシンプルなルールに従います:

  • 各行は有効なJSON値(オブジェクト、配列、文字列、数値、ブール値、またはnull)でなければなりません
  • 行は改行文字(\n)で区切られます
  • 行間にカンマや区切り文字はありません
  • ファイルはUTF-8エンコーディングを使用する必要があります
  • ファイル末尾の改行はオプションです
  • 空行はほとんどのパーサーで無視されます
有効なJSONLファイル
'{'"name":"Alice","age":30,"city":"New York"'}'
'{'"name":"Bob","age":25,"city":"London"'}'
'{'"name":"Charlie","age":35,"city":"Tokyo"'}'

注意:各行は完全で独立したJSONオブジェクトです。行間にカンマはなく、外側の配列で囲まれていません。

JSONL例

シンプルなオブジェクト
'{'"id":1,"name":"Alice","email":"[email protected]"'}'
'{'"id":2,"name":"Bob","email":"[email protected]"'}'
'{'"id":3,"name":"Charlie","email":"[email protected]"'}'
ネストされたオブジェクト
'{'"user":'{'"name":"Alice","age":30'}',"scores":[95,87,92]'}'
'{'"user":'{'"name":"Bob","age":25'}',"scores":[88,91,76]'}'

JSONLの各行は同じ型である必要はありません。各行が有効なJSONであれば問題ありません:

混合型
'{'"event":"login","user":"alice","timestamp":"2026-01-15T10:30:00Z"'}'
'{'"event":"purchase","user":"alice","amount":29.99,"items":["book","pen"]'}'
'{'"event":"logout","user":"alice","timestamp":"2026-01-15T11:45:00Z"'}'

JSONLの最も人気のある用途の一つは、OpenAIのファインチューニングデータセットです:

PopularOpenAIファインチューニング形式
'{'"messages":['{'"role":"system","content":"You are a helpful assistant."'}','{'"role":"user","content":"What is JSONL?"'}','{'"role":"assistant","content":"JSONL is a text format where each line is a valid JSON value."'}']'}'
'{'"messages":['{'"role":"system","content":"You are a helpful assistant."'}','{'"role":"user","content":"How do I read a JSONL file?"'}','{'"role":"assistant","content":"Read the file line by line, parsing each line as JSON."'}']'}'

JSONLファイルの読み方

JSONLファイルは、行ごとのテキスト処理をサポートするあらゆるツールで読み取ることができます。最も一般的な方法は以下の通りです:

標準的なUnixツールでJSONLファイルを検査:

コマンドライン
# 最初の5行を表示
head -n 5 data.jsonl
# 総行数(レコード数)をカウント
wc -l data.jsonl
# jqで各行を整形表示
cat data.jsonl | jq .
# フィールド値でフィルタリング
cat data.jsonl | jq 'select(.age > 30)'

Pythonの組み込みjsonモジュールはJSONLを自然に処理できます:

Python
import json
with open('data.jsonl', 'r') as f:
for line in f:
record = json.loads(line)
print(record['name'])

Node.jsでJSONLファイルを行ごとに読み取り:

JavaScript / Node.js
import '{' createReadStream '}' from ''fs'';
import '{' createInterface '}' from ''readline'';
const rl = createInterface('{'
input: createReadStream(''data.jsonl'')
'}');
for await (const line of rl) '{'
const record = JSON.parse(line);
console.log(record.name);
'}'

オンラインJSONLビューア

視覚的に確認するには、jsonl.coを使用して最大1GBのJSONLファイルを開いて閲覧できます。アップロード不要、すべてブラウザ内で処理されます。

JSONLファイルの作成方法

JSONLファイルの作成は簡単です。1行に1つのJSON値を書き込むだけです。

Python
import json
records = [
'{'"name": "Alice", "age": 30'}',
'{'"name": "Bob", "age": 25'}',
'{'"name": "Charlie", "age": 35'}',
]
with open(''output.jsonl'', ''w'') as f:
for record in records:
f.write(json.dumps(record) + ''\n'')
JavaScript / Node.js
import '{' writeFileSync '}' from ''fs'';
const records = [
'{' name: ''Alice'', age: 30 '}',
'{' name: ''Bob'', age: 25 '}',
'{' name: ''Charlie'', age: 35 '}',
];
const jsonl = records
.map(r => JSON.stringify(r))
.join(''\n'');
writeFileSync(''output.jsonl'', jsonl + ''\n'');

JSONLにコメントを追加できますか?

いいえ。JSONL仕様はコメントをサポートしていません。JSONLファイルの各行は有効なJSON値でなければならず、JSON自体にコメント構文はありません。

データと一緒にメタデータや注釈を含める必要がある場合、一般的な回避策は以下の通りです:

  • 1JSONオブジェクトにメタデータフィールドを追加:'{'"_comment": "テストデータ", "name": "Alice"'}'
  • 2JSONLファイルと一緒に別のメタデータファイルを使用
  • 3ファイルの最初の行にメタデータを追加:'{'"_meta": '{'"version": "1.0", "created": "2026-01-15"'}''}'

「コメント」フィールドは通常のデータとして解析されることに注意してください。JSONLファイルを消費するアプリケーションは、メタデータフィールドを無視するように設計する必要があります。

JSONL vs JSON

主な違いは構造です。JSONはすべてを単一の値でラップしますが、JSONLは1行に1つの値を格納します。

JSON標準JSON
[
'{'"name": "Alice", "age": 30'}',
'{'"name": "Bob", "age": 25'}'
]
JSONLJSONL (JSON Lines)
'{'"name":"Alice","age":30'}'
'{'"name":"Bob","age":25'}'
  • JSONは解析するためにすべてメモリにロードする必要がある;JSONLは行ごとに読み取り可能
  • JSONは要素間にカンマが必要;JSONLは改行を使用
  • JSONは設定ファイルやAPIに適している;JSONLは大規模データセットやストリーミングに適している
  • JSONにデータを追加するにはファイル全体の書き換えが必要;JSONLは新しい行を追加するだけ

詳細な比較については、完全な JSON vs JSONL guide.

一般的なユースケース

機械学習とAI

最も人気

JSONLはML訓練データの標準形式です。OpenAI、Hugging Face、その他のAIプラットフォームは、各訓練例が独立した行であり、効率的にシャッフル、サンプリング、ストリーミングできるため、ファインチューニングデータセットにJSONL形式を使用しています。

ログファイルとイベントストリーム

JSONL

構造化ログシステム(ELKスタック、Datadog、CloudWatch)はJSONL形式でログを出力します。各ログエントリは1行のJSONで、新しいエントリの追加やリアルタイムのログ処理が容易です。

ビッグデータ処理

JSONL

Apache Spark、BigQuery、AWS AthenaなどのツールはJSONLをネイティブサポートしています。行ごとの形式により、分散システム全体での並列処理が可能です。各ワーカーが独立して行のチャンクを処理できます。

ストリーミングAPI

JSONL

大きな結果セットを返すAPIは、しばしばJSONLストリーミングを使用します。クライアントは完全なレスポンスを待たずに、結果が到着次第すぐに処理を開始できます。

JSONLファイル拡張子

JSONLファイルは一般的に以下の拡張子を使用します:

.jsonl標準的なJSONL拡張子、最も広く使用されている
.ndjsonNewline Delimited JSON——技術的に同じ形式で名前が異なるだけ
.json一部のツールは.json拡張子でJSONLを出力するため、混乱を招く可能性がある

3つの拡張子はすべて同じ形式を含んでいます——1行に1つのJSON値。JSONLのMIMEタイプはapplication/jsonlまたはapplication/x-ndjsonです。

無料のJSONLツールを試す

JSONLの構文を検証し、形式間の変換やファイルの表示が可能です — すべてブラウザ内で完結します。

JSONLビューアを試す

ブラウザで最大1GBのJSONLファイルを開いて、表示・編集。アップロード不要、100%プライベート。

よくある質問

参考資料