中級者向け 知識

【知識】プログラムで使用する改行コードCRLF、LF、CRの意味は何?

パソコン・モバイル
この記事は約7分で読めます。

文中の説明画像をクリックすると拡大します。

Pocket

改行コードのLF、CR、CRLFの意味は何?

改行コードとは、改行を表す制御文字です。

制御文字というのは、コンピュータに指示を出す特殊な文字のことで、「改行」以外ではスペースやタブなどが有名です。

改行コードには、以下の3種類があります。

  • LF(ラインフィード)
  • CR(キャリッジリターン)
  • CRLF(キャリッジリターン+ラインフィード)

これらの単語は、タイプライターの用語に由来しています。

LF(ラインフィード)

LFは、ラインフィード(Line Feed)の略称です。

タイプライターで、「用紙を1行分送る」ことを指す用語です。

次の行へ移動させることから、コンピューターでの改行コード名にされたのでしょう。

プログラミングで書く場合は「\n」と記述します。

CR(キャリッジリターン)

CRは、キャリッジリターン(Carriage Return)の略称です。

タイプライターで、用紙を動かすパーツをキャリッジと呼び、「行の先頭に用紙を移動する」のをキャリッジリターンと言います。

キャリッジリターンをしただけでは、行の先頭に戻すだけで印字済みの場所に再度印字することになるため、必然的にラインフィードをして改行します。

このことから、キャリッジリターンが改行を表す用語として、コンピューター用語に入ってきたのでしょう。

プログラミングで書く場合は「\r」と記述します。

ちなみに、キーボードで改行する際にタイプする「Enterキー」は、このキャリッジリターンから「Returnキー」と表記されているものもあります。

CRLF(キャリッジリターン+ラインフィード)

CRLFは、キャリッジリターン+ラインフィード(Carriage Return + Line Feed)の略称です。

タイプライターで、「用紙を行の先頭に移動し、1行分用紙を送る」ことを意味します。

コンピューターで改行した際にはカーソルが一番左端に移動していますので、CRLFが最も正確にコンピューターでの改行を表していると言えるでしょう。

プログラミングで書く場合は、「\r\n」と記述します。

OSごとの基本とする改行コード

なぜ改行コードが3種類もあるのかというと、OSごとに基本とする改行コードが異なっているためです。

それぞれの改行コードを基本としているOSは以下の通りです。

  • LF:UNIX系、macOS(X以降)、iOS、Android
  • CR:Mac OS 9以前
  • CRLF:Windows

CRはMac OS 9以前だけなので、現在ではほぼ使われていません。

LFとCRLFを見比べてわかる通り、WindowsだけCRLFでそれ以外はLFとなっています。

だからといって、Windowsのシェア率は高いので、LFが主流とは言えない状態です。

ちなみに、WindowsでもExcelのセル内改行は、LFとなっています。

改行コードの調べ方

基本的にはOSで決まる改行コードですが、使うソフトウェアや人から受け取ったファイルでは、異なる改行コードになっている場合もあります。

そこで、どの改行コードが使われているかを調べる方法を紹介します。

この後にお伝えしますが、改行コードによってトラブルが発生することが知られたことで、現在は大半のテキストエディタ(メモ帳などのような自由にテキストを打ち込めるソフトウェア)で改行コードが表示されるようになっています。

テキストエディタの下部に表示されることが多いです。

例えば、Windows標準のメモ帳では次のように表示されます。

また、テキストエディターによっては編集部分に可視化するものもあります。

例えば、「サクラエディタ」だと次のようになります(例として見せるため、改行コードを混在させています)。

 

改行コードが違うことで起こりうるトラブル

改行コードが違うと次のようなトラブルが起きる可能性があります。

  • プログラム実行時にエラーが起きる
  • メモ帳などで表示すると改行がなくなるなど、表示がおかしい

特に原因として気づきにくいのが、プログラム実行時のエラーです。

Webだと、Windows環境(CRLF)でPHPファイルを作りLinuxのサーバー(LF)にアップロードしたら、上手く動かないといったことがあります。

PHPは、Webでよく使われるプログラム言語の1つです。

PHPについての詳細は、こちらをご覧ください。

【知識】PHPって何?
PHPは、サーバーサイドで動作するプログラミング言語で、動的にページを生成することができます。プログラミング言語にはコンパイル言語とスクリプト言語がありますが、PHPは記述されたソースコードを一行ずつ機械語に翻訳しながら実行するスクリプト言語です。

作成したPHPが改行関係でうまく動かない場合は、改行コードが違うことで改行を改行と認識できず、余計な文字が入り込んでしまうために起きるエラーです。

例えるなら、日本語がわからない人に日本語で話しかけるという感じでしょうか。

相手のわかる言葉(LF)に変換することで、解決できます。

ちなみに、ファイルをサーバーにアップロードするFTPソフトには自動変換の機能が実装されているものが多く、アップロードするときはLFに、ダウンロードするときはユーザーの環境にあった改行コードに、変換してくれます。

FTPについての詳細は、こちらをご覧ください。

【基本】FTPって何のこと?
FTPとは、File Transfer Protocolの略で、クライアントの間でファイルを送受信する通信の手続きのことを言います。FTPを使う事で、自分のパソコンにあるファイルをWebサーバーに転送できます。

トラブルを防ぐ方法

改行コードのトラブルでは、表示がおかしいときはすぐに改行コードが原因と思い当たりますが、プログラムのエラーは簡単には改行コードに結びつかないこともあります。

そこで重要なのが、そのようなトラブルを未然に防ぐことです。

まとめると、以下の3つの方法になるでしょうか。

  • 同じソフトウェアを使う
  • 改行コードは何を使うのかルール化しておく
  • サーバーの改行コードを調べてそれに対応しておく

 

同じソフトウェアを使う

改行コードのトラブルを防ぐには、自身が作業する場合はもちろん、他者とファイルを共有する場合に同じソフトウェアを使うのが一番間違いありません。

 

ルール化しておく

同じソフトウェアを使うことができないのであれば、各改行コードに対応したソフトウェアを使い、事前に改行コードは何を使うのかルール化しておくと安全です。

 

サーバーの改行コードを調べる

Webの場合は、前述の通り自身のPCからサーバーにアップロードした際に、サーバーとの改行コードの違いで問題が発生することがあります。

サーバーの改行コードですが、基本的にはサーバーのOSに依存するので、OSを調べることで改行コードも知ることができます。

サーバーのOSは、だいたい利用しているサーバー会社のサーバー仕様に掲載されています。

あるいは、「(ロリポップなど利用しているサーバー会社名) OS」といったキーワードで検索しても見つかると思います。

サーバーは基本的にLinux系がほとんどで、意図してWindowsやMac OSのサーバーを借りてない限りはLinux系のLFとなるはずです。

 

HTMLファイルで使う改行コードはどれがいいの?

Webに関しては、サーバーの改行コードに合わせるということを説明しました。

では、HTMLファイルはどうかとういと、結論としては統一されていればどれでも大丈夫です。

HTMLはWebサイトの構造を作るための言語で、Webサイトの基本的なページを作っているのがHTMLファイルです。

HTMLについて、詳しくはこちらをご覧ください。

【基本】HTMLって何?
HTMLは、Webサイトの構造を作るための言語です。Webサイトを構成する要素に役割を与える「目印」のようなものです。Webサイトを構成する要素を「開始タグ」と「終了タグ」で囲むようにしますが、一部「終了タグ」が要らない場合もあります。

W3C(World Wide Web Consortium)という団体がHTMLをはじめ、Webに関する様々な決めごとをしています。

そのW3Cが、「改行コードはLF、CR、CRLFのどれを使っても問題ありません」と仕様書で伝えているのです。

他者と共同で作業する場合はルール化をし、自分しか使用しない場合は環境(OS)に合わせると良いでしょう。

HMTLファイルは、どの改行コードでも大丈夫ですが、「.htaccess」やPHPファイルなどのサーバー側が参照するファイルは、サーバーの改行コードに合わせるかFTPソフトで自動変換する必要があるので、ご注意ください。

ちなみに、HTMLファイルで普通の改行をしても、Webページとして表示した場合は改行されません。

Webページの表示として改行したい時は、「brタグ(<br>)」を使います。

HTMLLタグについて、詳しくはこちらをご覧ください。

【基本】基本的なHTMLタグ
HTMLの文書は、タグと呼ばれる要素で構成されています。しかし、タグを全部覚える必要はありません。基本的なタグを覚えておけば、あとは辞書をひいたりインターネット上の情報を見ればよいのです。

 

まとめ

  • 改行コードはLF、CR、CRLFの3種類があり、タイプライター用語に由来している。
  • OSごとに、基本とする改行コードが違う。
  • 改行コードの違いによって、プログラムの実行やファイルの表示に不具合が発生する場合がある。
  • 改行コードのトラブルを防ぐには、同じソフトウェアを使ったり、使う改行コードをルール化すると良い。
  • HTMLファイルで使う改行コードは、統一されていればどれを使っても問題ない。
Pocket