結論: Claude Code の改行・出力フォーマット制御は「CLAUDE.md の4行設定 + .editorconfig + git の autocrlf 設定」の3点を揃えれば、Windows/Mac/Linux 混在チームでも一貫した LF 出力を得られます。
この記事の要点:
- 要点1: LF/CRLF/CR の違いと OS 別デフォルト ── Windows は CRLF、Mac/Linux は LF。Claude Code は環境検出ミスによる CRLF 混入バグ(issue #2805 / #11327)が報告されており、明示指定が必須
- 要点2: 7パターンの出力制御(コードブロック・Markdown・JSON・CSV・YAML・Shell・日本語混在)それぞれに適切な設定がある
- 要点3: 5つのコピペ設定(CLAUDE.md / .editorconfig / git config / VSCode / Pre-commit hook)を今日そのまま使える形で全公開
対象読者: Claude Code を使い始めた開発者・チーム導入担当者(Windows ユーザー含む)
読了後にできること: プロジェクトに .editorconfig と CLAUDE.md の改行設定を追加して CRLF 混入を根本解消できる
「Claude Code に頼んで生成したシェルスクリプトを実行したら No such file or directory が出た……」
先日、ある研修先のエンジニアチームで、まさにこの問題が起きました。Ubuntu Linux で Claude Code を使ってデプロイスクリプトを生成させたところ、Windows 環境の CRLF が混入していて実行できないというトラブルです。「Claude が変なコードを書いた」と最初は思われましたが、原因は改行コードでした。
実はこれ、GitHub の公式 issue にも複数上がっている既知の問題です(issue #2805: Linux で CRLF が混入 / issue #11327: Windows で LF が混入)。つまり Claude Code は「プラットフォームを自動検出して改行コードを変えてくれる」という前提で使うと、予期しない動作をすることがある、ということです。
この記事では、Claude Code での改行・出力フォーマット制御を「7パターン × 全設定コピペ可能」で徹底解説します。CLAUDE.md への改行指示の書き方から、JSON/CSV/YAML 出力の制御、Windows ↔ Mac/Linux 混在チームでの git autocrlf 設定まで、今日すぐ使えるテンプレートをお届けします。
改行コードの基礎知識:LF / CRLF / CR とは何か
まず土台となる知識を整理しておきましょう。改行コードは歴史的な理由から3種類が並立しています。
3種類の改行コードとOS別デフォルト
| 改行コード | バイト列 | 主な使用OS | 用途 |
|---|---|---|---|
| LF(Line Feed) | n(0x0A) | Linux / macOS | Unix系の標準。シェルスクリプト・Web系プロジェクトの大多数 |
| CRLF(Carriage Return + Line Feed) | rn(0x0D 0x0A) | Windows | Windows アプリ・Excel CSV・バッチファイルのデフォルト |
| CR(Carriage Return) | r(0x0D) | 旧 Mac OS 9 以前 | 現代では稀。古い CSV・レガシーデータでごく稀に出現 |
現代では CR 単独はほぼ見かけませんが、LF と CRLF の混在は今でもチームの開発環境でよく起きます。特に Claude Code は OS 間を問わず動作するツールであるため、意識的に設定しないと改行コードがまばらになります。
改行コードが問題になる典型シーン
- シェルスクリプト実行失敗: CRLF が混入した
.shファイルは Linux/macOS でNo such file or directoryやbad interpreterエラー - git diff が全行変更として表示: LF ↔ CRLF 変換が入ると diff が爆発する
- JSON パースエラー:
rnが文字列内に残ると一部のパーサーが失敗する - Docker コンテナでのビルド失敗: Windows から Linux コンテナへコピーしたファイルの CRLF が問題になる
公式ドキュメント参照: Claude Code の端末設定と改行制御については Configure your terminal for Claude Code(code.claude.com)(参照日: 2026-06-04)に詳細が記載されています。
また、Claude Code のコアガイドである Claude Code 完全活用ガイドも合わせて読むと、ツール全体の動作理解に役立ちます。
Claude Code を業務に本格導入する際は、AIエージェント導入完全ガイドでエージェント全体の設計思想・ツール選定の考え方を先に把握しておくと、改行・出力フォーマット制御を含む設定方針が整理しやすくなります。
Claude Code 改行制御の設定5点セット(コピペ可能)
理屈より先に「今日すぐ使える設定」を全部出します。以下の5ファイルをプロジェクトに追加するだけで、チーム全員が LF 統一環境になります。
設定1: CLAUDE.md への改行指示(最重要)
CLAUDE.md はプロジェクトルートに置くことで、すべての Claude Code セッションにコンテキストとして読み込まれます(Output styles – Claude Code Docs、参照日: 2026-06-04)。改行コードの指示を書いておくことで、生成ファイル・出力テキストの改行コードを明示できます。
# プロジェクト設定
## 改行コード規則(必須遵守)
- すべてのファイルは LF(n)を使用すること
- Windows 環境でも CRLF を使わない
- シェルスクリプト(.sh)は必ず LF で出力すること
- コードブロック内の改行も LF のみを使用すること
## 出力フォーマット規則
- JSON 出力: 2スペースインデント、末尾改行あり
- CSV 出力: UTF-8(BOMなし)、フィールドはダブルクォート
- YAML 出力: 2スペースインデント
- Markdown: ATX見出し(# 形式)を使用
ポイント: 単に「LF を使え」と書くだけでなく、「Windows 環境でも CRLF を使わない」と明示するのが重要です。Claude Code の OS 検出バグの影響を避けるためです。
設定2: .editorconfig(エディタ横断で統一)
チームのエディタ設定を統一するには .editorconfig が最も確実です。VS Code・JetBrains・Vim など主要エディタがすべてこのファイルを読み込みます。
# .editorconfig
root = true
[*]
charset = utf-8
end_of_line = lf
indent_style = space
indent_size = 2
trim_trailing_whitespace = true
insert_final_newline = true
[*.sh]
# シェルスクリプトは特に LF 必須
end_of_line = lf
[*.bat]
# Windowsバッチファイルのみ CRLF を許可
end_of_line = crlf
[Makefile]
indent_style = tab
insert_final_newline = true は、ファイル末尾に改行を入れる設定です。これが欠けていると、git diff に余分な変更が出ることがあります。
設定3: git config(リポジトリレベルの制御)
git の設定は「マシン設定(global)」と「リポジトリ設定(.gitattributes)」の2層で管理します。.gitattributes を使うのが推奨です(Git Line Ending Issues の修正方法 – Linuxbeast、参照日: 2026-06-04)。
# .gitattributes(プロジェクトルートに配置)
# リポジトリ全体で LF に統一する
* text=auto eol=lf
# テキストファイル明示指定
*.sh text eol=lf
*.py text eol=lf
*.js text eol=lf
*.ts text eol=lf
*.json text eol=lf
*.yml text eol=lf
*.yaml text eol=lf
*.md text eol=lf
*.txt text eol=lf
*.html text eol=lf
*.css text eol=lf
# Windowsバッチファイルのみ CRLF
*.bat text eol=crlf
*.cmd text eol=crlf
# バイナリファイルは変換しない
*.png binary
*.jpg binary
*.gif binary
*.ico binary
*.zip binary
*.pdf binary
マシン別 git global 設定(端末で1回だけ実行):
# Mac / Linux / WSL2 を使う場合
git config --global core.autocrlf input
# ネイティブ Windows(PowerShell など)を使う場合
git config --global core.autocrlf true
# 設定確認
git config --global core.autocrlf
autocrlf=input は「コミット時に CRLF→LF 変換するが、チェックアウト時は変換しない」設定です。Mac/Linux 環境で最も安全な選択肢です。
設定4: VSCode settings.json
{
"files.eol": "n",
"files.autoGuessEncoding": false,
"files.encoding": "utf8",
"editor.formatOnSave": true,
"[shellscript]": {
"files.eol": "n"
},
"[python]": {
"files.eol": "n"
},
"[json]": {
"editor.defaultFormatter": "vscode.json-language-features"
},
"terminal.integrated.macOptionIsMeta": true
}
terminal.integrated.macOptionIsMeta: true は macOS で Option キーを Meta キーとして使う設定です。これにより Claude Code の Option+Enter(改行挿入)ショートカットが VSCode 内端末でも使えるようになります(公式ドキュメント: Configure your terminal – Claude Code Docs、参照日: 2026-06-04)。
設定5: Pre-commit hook(最後の砦)
#!/bin/sh
# .git/hooks/pre-commit
# CRLF が含まれているファイルをコミット前にチェック
CRLF_FILES=$(git diff --cached --name-only | xargs grep -lU $'r' 2>/dev/null)
if [ -n "$CRLF_FILES" ]; then
echo "ERROR: 以下のファイルに CRLF が含まれています:"
echo "$CRLF_FILES"
echo ""
echo "修正コマンド:"
echo " sed -i 's/r$//' <ファイル名>"
echo " または"
echo " git add --renormalize ."
exit 1
fi
または pre-commit フレームワークを使う場合の設定:
# .pre-commit-config.yaml
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.6.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: mixed-line-ending
args: ['--fix=lf']
Claude Code で入力時に改行を入れる7つの方法
「改行」には2つの意味があります。1つは「プロンプト入力時に改行を入れる(送信せずに次の行へ)」方法、もう1つは「Claude Code が生成するファイルやテキストの改行コードを制御する」方法です。前者から整理しましょう。
プロンプト入力時の改行ショートカット一覧
公式ドキュメント(Configure your terminal – Claude Code Docs、参照日: 2026-06-04)には以下の方法が記載されています。
| 方法 | 動作環境 | 説明 |
|---|---|---|
Ctrl+J | すべての端末 | セットアップ不要。最も確実な方法 |
+ Enter | すべての端末 | 行末に を書いてから Enter |
Shift+Enter | 端末依存(下表参照) | 多くの端末でデフォルト動作、一部は設定が必要 |
Option+Enter(Mac) | Option=Meta 有効時 | macOS で Option を Meta に設定した場合 |
| ESC → Enter(Vim モード) | Vim モード有効時 | NORMAL モードで o または O を使う |
端末別 Shift+Enter のサポート状況:
| 端末 | 状況 |
|---|---|
| Ghostty / Kitty / iTerm2 / WezTerm / Warp / Apple Terminal / Windows Terminal | セットアップなしで動作 |
| VS Code / Cursor / Devin Desktop / Alacritty / Zed | /terminal-setup コマンドを1回実行で有効化 |
| gnome-terminal / JetBrains IDE(PyCharm 等) | 非対応 → Ctrl+J を使う |
VS Code 内端末で Shift+Enter を有効にするには、Claude Code のプロンプトに /terminal-setup と入力するだけです。これにより端末設定ファイルへキーバインドが書き込まれます。
7パターン出力フォーマット完全制御
ここからが本題です。Claude Code が出力するファイルや文書の形式を、パターン別にコントロールする方法を解説します。
パターン1: コードブロック出力の制御
Claude Code はデフォルトで Markdown のコードブロック(``` 記法)でコードを出力します。CLAUDE.md で言語タグの付け方や行末の扱いを指定できます。
## コードブロック規則
- コードブロックには必ず言語タグを付ける(例: ```python、```bash)
- コードブロック内の改行は LF のみ
- インデントは言語ごとのスタンダードに従う(Python: 4スペース、JS/TS: 2スペース)
- コードブロック末尾の空行は1行以内
特定ファイルへの出力を指示する場合:
以下の条件でシェルスクリプトを作成してください。
- ファイル名: deploy.sh
- 改行コード: LF(n)のみ使用、CRLF(rn)は絶対に使わない
- 文字コード: UTF-8(BOMなし)
- 実行権限: 755 を想定した設計
パターン2: Markdown 見出し・構造の制御
## Markdown 出力規則
- 見出しは ATX 形式(# H1、## H2)を使用
- セテックス形式(=== / ---)は使わない
- 見出しの前後には空行を1行入れる
- 箇条書きは - (ハイフン)を使用、* は使わない
- コードスパンは バックティック1つ `code` を使用
- 改行は意味のある箇所にのみ入れる(段落分け)
Markdown → HTML 変換を想定した出力をさせる場合は、改行の扱いに注意が必要です。Markdown では1つの改行は段落内の継続行として扱われ、空行(2つの改行)が段落区切りになります。Claude Code にこの動作を意識させるには:
Markdownで出力する際:
- 段落の区切りは空行(2つの改行)を使うこと
- 段落内での折り返しは行わないこと(1段落=1行)
- リスト項目の間には空行を入れないこと(compact list)
パターン3: JSON 出力の制御
JSON 出力は整形(pretty-print)と圧縮(minify)の2種類があります。CLAUDE.md での指示例:
## JSON 出力規則
- インデント: 2スペース
- キーはダブルクォート
- 末尾カンマは入れない(標準 JSON)
- 文字列値内の改行は n エスケープ(実際の改行文字を入れない)
- 最後の行末に改行を1つ入れる
- 文字コード: UTF-8
Claude Code の CLI を使ってプログラム的に JSON 出力を得る場合(Run Claude Code programmatically – Claude Code Docs、参照日: 2026-06-04):
# 構造化 JSON 出力
claude -p "このプロジェクトの依存関係を列挙してください"
--output-format json
| jq -r '.result'
# JSON スキーマ指定で構造を強制
claude -p "package.json の dependencies を抽出してください"
--output-format json
--json-schema '{"type":"object","properties":{"dependencies":{"type":"array","items":{"type":"string"}}},"required":["dependencies"]}'
| jq '.structured_output'
--output-format json を指定すると、レスポンスには result(テキスト)、session_id、total_cost_usd などのメタデータが含まれます。
パターン4: CSV 出力の制御
CSV は改行コードが特に重要なフォーマットです。Excel で開く場合は CRLF が期待されますが、Linux/macOS での処理では LF が望ましいです。
CSVファイルを出力する際の規則:
- 文字コード: UTF-8(BOMなし、Linuxでの処理を優先する場合)
※ Excel で直接開く場合は UTF-8 BOM付きにすること
- 改行: LF(Linuxでの処理を想定)
※ Windows/Excel 向けには CRLF にすること
- フィールド囲み: すべてのフィールドをダブルクォートで囲む
- ヘッダ行: 必ず含める
- 日付形式: YYYY-MM-DD
- 数値: カンマ区切りなし(例: 1000000、not 1,000,000)
CSV をパイプ経由で処理する場合の例:
cat data.csv | claude -p '
このCSVを読み込み、"売上"列の合計を計算してください。
出力形式: JSON({"total": 数値})
改行コード: LF のみ使用
' --output-format json | jq -r '.result'
パターン5: YAML 出力の制御
YAML は Docker Compose・GitHub Actions・Kubernetes などで使われるフォーマットです。インデントの一貫性が最重要です。
## YAML 出力規則
- インデント: 2スペース(タブ禁止)
- 改行: LF のみ
- 文字列リテラル: シングルクォートを優先
(特殊文字を含む場合はダブルクォート)
- ブロックスカラー(|, >): 複数行テキストに使用
- コメント: # で始める(スペース1つ後)
- ファイル末尾に改行を1つ入れる
- document separator(---)は必要な場合のみ使用
GitHub Actions ワークフロー生成の指示例:
GitHub Actions の CI ワークフローを作成してください。
- YAML 形式、2スペースインデント
- 改行は LF のみ
- コメントは英語で記述
- ファイル名: .github/workflows/ci.yml
パターン6: Shell スクリプト出力の制御
シェルスクリプトの改行コードは最も問題が起きやすいパターンです。Linux でスクリプトが動かない場合、まず CRLF を疑ってください。
## シェルスクリプト出力規則(最重要)
- 改行コード: LF(n)のみ。CRLF(rn)は絶対使わない
- shebang: #!/bin/bash または #!/bin/sh を1行目に記述
- 文字コード: UTF-8(BOMなし)
- インデント: 2スペース
- エラーハンドリング: set -euo pipefail を冒頭に入れる
- 変数は ${VAR} 形式でダブルクォート
生成後の CRLF チェックと修正:
# CRLF が含まれているか確認
file deploy.sh
# → "ASCII text, with CRLF line terminators" と出たら CRLF 混入
# 修正(sed で r を削除)
sed -i 's/r$//' deploy.sh
# 修正後確認
file deploy.sh
# → "Bourne-Again shell script, ASCII text executable" が正常
# または xxd で直接確認
xxd deploy.sh | grep "0d 0a"
# 出力があれば CRLF が残っている
パターン7: 日本語混在テキストの改行制御
日本語テキストで最も問題になるのは「文章途中の不要な改行」です。特に Markdown 文書やメール文面の生成時に、英語テキストの感覚で行を折り返してしまう現象があります。
## 日本語テキスト出力規則
- 段落内での行折り返しはしない(1段落=1行)
- 句点(。)の後にのみ改行を入れる(段落区切り意図がある場合)
- 読点(、)の後には改行しない
- 長い文章を途中で折り返さない
- コードと日本語テキストが混在する場合:
コードブロックは独立した行で開始・終了すること
日本語の改行問題が出やすいのは、以下のようなプロンプトを使う場合です:
# 悪い例(日本語が途中で切れやすい)
この機能を説明してください。
# 良い例(改行制御を明示)
以下の規則に従って説明してください:
- 日本語の文章は途中で折り返さない(1文は1行で完結)
- 段落の区切りは空行(2回の改行)を使う
- コード例は ```bash ブロックで囲む
{質問内容}
Windows ↔ Mac/Linux 混在チームの完全対応策
Claude Code を Windows + WSL2、またはネイティブ Windows で使うチームは、改行コード問題が最も発生しやすい環境です。ここでは根本解決策を整理します。
Windows で発生する典型的な問題3つ
研修で企業の開発チームを見ていると、Windows 環境での Claude Code 利用で以下の3パターンが繰り返し起きています。
問題1: Linux 上で CRLF ファイルが生成される
GitHub issue #2805(公式 issue – GitHub、参照日: 2026-06-04)で報告された既知バグ。Ubuntu 環境で Claude Code を使ってシェルスクリプトを生成したところ CRLF が混入し、./script.sh: No such file or directory エラーが発生する事例が多数報告されています。
# 緊急対処: 生成されたファイルを一括修正
find . -type f -name "*.sh" -exec sed -i 's/r$//' {} ;
find . -type f -name "*.py" -exec sed -i 's/r$//' {} ;
# または git を使って一括正規化
git add --renormalize .
git status
問題2: Windows で LF ファイルが生成される
逆に、Windows ネイティブ(PowerShell)で Claude Code を使うと、Windows のデフォルトである CRLF ではなく LF のファイルが生成される issue も報告されています(issue #11327、参照日: 2026-06-04)。Windows の GUI アプリやメモ帳で開くと文字化けしたような表示になります。
問題3: Edit ツールが CRLF ファイルを編集できない
Claude Code の Edit ツールは、CRLF ファイルを読み込んで内部的に LF に正規化し、書き戻す際に「ファイルが変更されています」と誤報告することがあります(issue #13456、参照日: 2026-06-04)。これは Edit ツールの既知の挙動で、現時点では “Not planned” として対処されていません。
回避策: 編集対象ファイルを事前に LF 正規化する
# 編集前に対象ファイルを LF に変換
dos2unix target_file.py
# または
sed -i 's/r$//' target_file.py
# その後 Claude Code で編集
WSL2 環境での推奨設定
# WSL2 の ~/.gitconfig に追加
git config --global core.autocrlf input
git config --global core.eol lf
# WSL2 の ~/.bashrc または ~/.zshrc に追加
export CLAUDE_CODE_EOL=lf
# プロジェクトごとの .editorconfig で統一(前述の設定5点参照)
tmux 内で Claude Code を使う場合の注意
tmux 内で Claude Code を動かすと、Shift+Enter が正しく動作しない場合があります。~/.tmux.conf に以下を追加してください(公式ドキュメント: Configure your terminal – Claude Code Docs、参照日: 2026-06-04):
# ~/.tmux.conf
set -g allow-passthrough on
set -s extended-keys on
set -as terminal-features 'xterm*:extkeys'
設定後:
tmux source-file ~/.tmux.conf
Claude Code の –output-format による出力制御(CLI・自動化)
Claude Code を自動化・スクリプト化する際には --print(-p)モードと --output-format フラグを組み合わせます。
3つの出力フォーマット
# text: デフォルト、プレーンテキスト
claude -p "このファイルを要約してください" --output-format text
# json: 構造化 JSON(result + metadata)
claude -p "このファイルを要約してください" --output-format json
# stream-json: リアルタイムストリーミング JSON
claude -p "長いドキュメントを分析してください"
--output-format stream-json --verbose --include-partial-messages
JSON フォーマットのレスポンス例:
{
"result": "このプロジェクトは...",
"session_id": "sess_01abc...",
"total_cost_usd": 0.0012,
"model": "claude-opus-4-5",
"usage": {
"input_tokens": 1234,
"output_tokens": 456
}
}
JSON Schema を指定して出力構造を強制する場合:
claude -p "src/ ディレクトリの関数一覧を出力してください"
--output-format json
--json-schema '{
"type": "object",
"properties": {
"functions": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {"type": "string"},
"file": {"type": "string"},
"line": {"type": "number"}
}
}
}
},
"required": ["functions"]
}' | jq '.structured_output.functions[]'
ストリーミング出力でリアルタイム処理
# 生成テキストをリアルタイムで受け取る
claude -p "このコードベースのアーキテクチャを詳細に説明してください"
--output-format stream-json
--verbose
--include-partial-messages |
jq -rj 'select(.type == "stream_event" and .event.delta.type? == "text_delta") | .event.delta.text'
CI/CD での使用例(package.json):
{
"scripts": {
"review:claude": "git diff main | claude -p "セキュリティ上の問題がないかレビューし、指摘事項を JSON 形式({issues:[{file,line,description}]})で出力してください" --output-format json | jq '.result'"
}
}
5ステップのトラブルシュート:改行問題を確実に解決する
改行コードを特定する: 問題のファイルに実際にどの改行コードが含まれているかを確認します。
# ファイルの改行コード確認 file problematic.sh # → "with CRLF line terminators" が出たら CRLF # xxd で直接バイト確認 xxd problematic.sh | grep -E "0d 0a|0d$" # 0d 0a = CRLF、末尾の 0d = CR のみ # または cat -A で可視化 cat -A problematic.sh | head -5 # 行末に ^M が見えたら CRLF(r が ^M として表示される)CLAUDE.md に改行指示を追加する: プロジェクトルートの CLAUDE.md に「すべてのファイルは LF を使うこと。CRLF は禁止」と明記します(前述の設定1を参照)。単に「LF を使え」と書くだけでは不十分なケースがあるため、「Windows 環境でも CRLF を使わない」という否定形での明示が有効です。
.editorconfig を配置する: プロジェクトルートに .editorconfig を置きます(前述の設定2を参照)。これはエディタ側での自動設定であり、Claude Code 生成ファイルをエディタで保存し直すときに適用されます。
git を使って既存ファイルを一括修正する: .gitattributes を追加後、既存のすべてのファイルを正規化します。
# .gitattributes を追加してコミット git add .gitattributes git commit -m "chore: add .gitattributes for LF line endings" # 既存ファイルを一括正規化 git add --renormalize . git status # 変更があればコミット git commit -m "chore: normalize line endings to LF"Pre-commit hook で次回から自動チェックする: 前述の設定5(Pre-commit hook)を
.git/hooks/pre-commitに保存し、実行権限を付与します。chmod +x .git/hooks/pre-commit # または pre-commit フレームワークを使う場合 pip install pre-commit pre-commit install
よくある失敗パターン4選(❌⭕形式)
失敗1: CLAUDE.md なしで Claude Code に「LF を使え」と毎回プロンプトで指示する
❌ 毎回のプロンプトに「改行は LF で」と書く
⭕ CLAUDE.md に一度書いておく
なぜ重要か: プロンプト内での指示は会話が長くなると context から押し出される可能性があります。CLAUDE.md はセッション開始時に常に読み込まれる設計なので、改行設定はここに書くのが確実です。
失敗2: .gitattributes を入れずに git autocrlf だけで解決しようとする
❌ git config --global core.autocrlf true だけ設定する
⭕ .gitattributes をリポジトリに追加 + マシン別 autocrlf を設定する
なぜ重要か: autocrlf はマシンごとの設定であり、新メンバーや CI 環境では設定されていないことがあります。.gitattributes はリポジトリに含まれるため、すべての環境で同じルールが適用されます。
研修先の中規模 SaaS チームで、Windows メンバーの PR がマージされるたびに全ファイルの改行コードが変わり、コードレビューが困難になっていた事例を見ました。.gitattributes を入れたことで1回で解決しました。
失敗3: JSON 出力に実際の改行文字(n リテラル)を含める
❌ JSON の文字列値に実際の改行文字(バイト 0x0A)を含める
⭕ JSON 文字列内では n(エスケープシーケンス)を使う
なぜ重要か: JSON 仕様(RFC 8259)では、文字列リテラル内に制御文字(改行を含む)をそのまま入れることは不正です。n エスケープを使わないと JSON パーサーがエラーを返します。
# NG: 実際の改行が入っている(不正な JSON)
{"message": "line1
line2"}
# OK: n エスケープを使用
{"message": "line1nline2"}
Claude Code への指示:
JSON を出力する際は、文字列値内に実際の改行文字(バイト 0x0A)を入れないこと。
改行が必要な場合は n エスケープシーケンスを使用すること。
失敗4: 日本語テキストの途中での改行で Markdown が崩れる
❌ Markdown の段落内で日本語を長さで折り返す
⭕ 段落内では折り返さず、空行で段落を区切る
なぜ重要か: 多くの Markdown レンダラーは段落内の単一改行を空白スペースに変換します。日本語テキストが 一文字後に折り返し
のように表示されてしまいます。
# NG(段落内で折り返し)
これは日本語のテキストの例です。
このように途中で改行があると、
レンダリング後に単語の間にスペースが入ることがあります。
# OK(段落内で折り返さない)
これは日本語のテキストの例です。このように1文を1行にすると、レンダリング後も正しく表示されます。
(ここで空行を入れると段落区切り)
次の段落はここから始まります。
Claude Code Windows 連携ガイドとの関係
Windows 環境での Claude Code セットアップ全般については、Claude Code Windows 完全ガイドで詳しく解説しています。WSL2 を使わずに Windows ネイティブで動かす方法から、Windows Terminal の設定まで網羅されています。
本記事で解説した改行設定は、Windows での Claude Code 利用時に特に重要です。Claude Code の Windows 環境での改行コードの自動検出は完全ではない(前述の issue #2805 / #11327 参照)ため、本記事の設定を適用しておくことで多くのトラブルを予防できます。
Output Style による出力スタイル全体の制御
改行コードの制御に加えて、Claude Code には「出力スタイル(Output Style)」機能があります。これは応答の口調・形式・詳細度を変える機能で、CLAUDE.md とは別のレイヤーで動作します(Output styles – Claude Code Docs、参照日: 2026-06-04)。
ビルトイン出力スタイル4種
| スタイル | 特徴 | 使いどころ |
|---|---|---|
| Default | 標準のソフトウェアエンジニアモード | 通常の開発作業 |
| Proactive | 承認待ちを減らして即実行 | CI/CD・自動化タスク |
| Explanatory | 実装の選択理由を解説しながら進む | 学習・コードレビュー |
| Learning | TODO(human)マーカーを入れて学習者が実装する箇所を残す | ハンズオン研修・教育 |
カスタム出力スタイルで改行・フォーマットを固定する
特定のプロジェクトで常に同じ出力フォーマットを使いたい場合、カスタム出力スタイルとして定義できます:
# .claude/output-styles/strict-lf.md
---
name: Strict LF Output
description: すべてのコード・設定ファイルを LF 改行コードで出力するスタイル
keep-coding-instructions: true
---
## 改行コード
- すべてのファイル出力は LF(n)のみを使用する
- CRLF(rn)または CR(r)は絶対に使用しない
- シェルスクリプト・Python・JavaScript・TypeScript・YAML・JSON すべて LF
## コードフォーマット
- インデントは各言語の標準に従う
- 行末の空白を含めない
- ファイル末尾は改行1つで終わる
## JSON
- 2スペースインデント
- 文字列内の改行は n エスケープを使う(実際の改行文字を含めない)
## Markdown
- ATX 見出し形式(#)を使用
- 日本語テキストは段落内で折り返さない
設定後、/config コマンドで「Strict LF Output」を選択することで適用されます。
まとめ:今日から始める3つのアクション
- 今日やること: プロジェクトの CLAUDE.md に「すべてのファイルは LF(n)を使用。CRLF は禁止」の5行を追加する(設定1のコードをコピペ)
- 今週中: .editorconfig と .gitattributes をプロジェクトに追加し、
git add --renormalize .で既存ファイルを一括修正する - 今月中: Pre-commit hook または pre-commit フレームワークを導入して、CRLF 混入を CI レベルで防ぐ仕組みを作る
あわせて読みたい:
- Claude Code 完全活用ガイド ── セットアップから高度な活用まで体系的にまとめています
- Claude Code Windows 完全ガイド ── WSL2・Windows Terminal・PowerShell での設定を詳解
参考・出典
- Configure your terminal for Claude Code – Claude Code 公式ドキュメント(参照日: 2026-06-04)
- Output styles – Claude Code 公式ドキュメント(参照日: 2026-06-04)
- Run Claude Code programmatically – Claude Code 公式ドキュメント(参照日: 2026-06-04)
- [BUG] Claude Code consistently creates files with Windows line endings on Linux systems – GitHub Issues(参照日: 2026-06-04)
- [BUG] Claude Code Edit tool fails on files with CRLF line endings – GitHub Issues(参照日: 2026-06-04)
- [BUG] Claude Code consistently creates files with Linux line endings on Windows systems – GitHub Issues(参照日: 2026-06-04)
著者: 佐藤傑(さとう・すぐる)
株式会社Uravation代表取締役。X(@SuguruKun_ai)フォロワー約10万人。
100社以上の企業向けAI研修・導入支援。著書『AIエージェント仕事術』(SBクリエイティブ)。
SoftBank IT連載7回執筆(NewsPicks最大1,125ピックス)。
ご質問・ご相談は お問い合わせフォーム からお気軽にどうぞ。



