【一覧表】改行コード(CR/LF)の違いと使い分け|Windows・Mac・Linuxの推奨設定
プログラミングを学習中、またはWindowsとMacでファイルをやり取りしている時に、「改行コードが違います」というエラーや、Gitの大量の差分(diff)に悩まされたことはありませんか?
改行コードは「見えない文字」ですが、OSによってルールが異なるため、ここを理解していないと予期せぬバグやトラブルの原因になります。
この記事では、CRとLFの違いを一目でわかる一覧表で整理し、開発現場での正しい使い分けや変換方法について解説します。
【早見表】OSごとの改行コードの違い
まずは結論から。主要なOSで使用される改行コードは以下の通りです。
現在のWeb開発やプログラミングでは、基本的に「LF」に統一するのが主流となっています。
| OS環境 | 種類 | 表記 | 特徴・備考 |
|---|---|---|---|
| Windows | CRLF | \r\n |
CRとLFを2つ重ねて使う |
| macOS / Linux | LF | \n |
現在の主流(Unix系標準) |
| 古いMac (OS 9以前) | CR | \r |
現在はほぼ使われません |
改行コード(CR・LF)の意味と由来
「改行」と一言で言っても、コンピュータ内部では以下の2つの動作に分かれています。
これらはタイプライター時代の名残です。
LF(Line Feed / ラインフィード)
- 意味:「改行」。紙を1行分上に送る動作。
- エスケープシーケンス:
\n - 16進数:0x0A
- 主なOS:macOS, Linux, Android, iOS, Chrome OS
CR(Carriage Return / キャリッジリターン)
- 意味:「復帰」。印字ヘッド(キャリッジ)を左端に戻す動作。
- エスケープシーケンス:
\r - 16進数:0x0D
- 主なOS:Classic Mac OS(現在はほぼ絶滅)
CRLF(CR + LF)
- 意味:「左端に戻して(CR)、紙を送る(LF)」。Windowsはこの2つの組み合わせで「改行」とみなします。
- エスケープシーケンス:
\r\n - 主なOS:Windows
改行コードが違うと何が起きる?(トラブル事例)
異なるOS(例:WindowsのAさんとMacのBさん)で同じファイルを編集する場合、改行コードの違いが以下の問題を引き起こします。
1. Gitの差分(diff)が大量発生する
コードを1行も書き換えていないのに、「ファイル全体が変更された」とみなされることがあります。
これは、誰かがファイルを保存した瞬間に、エディタの設定で「LF」が「CRLF」にすべて書き換わってしまったためです。チーム開発では最も避けるべきトラブルです。
2. プログラムが動かない(シェルスクリプト等)
LinuxやMacで動かすための「シェルスクリプト(.sh)」をWindowsで作成し、CRLFで保存してしまうと、Linux側で実行した際にエラー(command not foundなど)が発生します。
Linuxは改行コード末尾の「CR(\r)」を文字として認識してしまうためです。
3. 表示崩れ
「メモ帳」などの古いエディタでは、LFのみの改行コードを理解できず、改行されずに文字がすべて繋がって表示されることがあります。(※現在のWindows10以降のメモ帳は対応済みです)
【解決策】プログラミングで推奨される設定
基本は「LF」に統一する
Web開発(HTML/CSS/JavaScript/PHPなど)や、Python、Rubyなどのモダンな開発環境では、OSに関わらず「LF(\n)」に統一するのが業界標準です。
VSCodeでの確認・変換方法
現在最も使われているエディタ「VSCode」では、右下のステータスバーを見るだけで確認できます。
- 右下に「CRLF」または「LF」と表示されています。
- ここをクリックすると、そのファイルの改行コードを変換して保存し直すことができます。
Gitでの自動変換設定(autocrlf)
Gitには、コミット時やチェックアウト時に改行コードを自動変換する機能があります。
Windowsユーザーでチーム開発をする場合は、以下の設定を確認しましょう。
git config --global core.autocrlf input
※inputに設定すると、コミットする時は必ず「LF」に変換されます(Windows環境のみ)。チームのルールに合わせて設定してください。
まとめ
たかが改行、されど改行。
改行コードは普段見えませんが、チーム開発やクロスプラットフォーム開発では品質に関わる重要な要素です。
- Windowsは「CRLF」、Mac/Linuxは「LF」
- プログラミングでは基本的に「LF」に統一する
- エディタやGitの設定で自動統一するのが安全
この基本を押さえておけば、無駄なエラーや差分トラブルに時間を取られることなく、スムーズに開発を進めることができます。
※参考にされる場合は自己責任でお願いします。
PCトラブルは解決しましたか?
もし「会社のPCが全部遅い」「Office 365のエラーが多発する」「ネットワークが不安定」といった、調べても解決しない「会社全体」のお悩みがありましたら、ぜひご相談ください。
「Windows11 高速化」といったお悩み検索で毎月1,200人以上が訪れる、
このサイトの運営者(建設会社IT部長)が、川崎・横浜・東京城南エリアの法人様限定で「無料ITお困りごと診断」を行っています。