タイトル【Darwinシリーズ】テキストファイルの改行はLFカテゴリーDarwin 1.0, Darwin
作成日2000/6/1 9:34:57作成者新居雅行
Darwinに最初から作られている設定のテキストファイルを参照してみた。英語ばかりなので、ASCIIコードであると言えばいいのか、UNICODEでUTF-8だと言えばいいのかは微妙ではあるが、ファイルをMac OSから参照した場合、内容はきちんと読み込むことができる。しかしながら、改行は、LF(0Ah)だけなのである。
Mac OSのテキストファイルの改行コードは、伝統的にCR(0Dh)だけだった。ちなみに、WindowsはCR+LFの2バイトが改行コードとして扱われる。異なるOS間でのテキストのやり取りを行うときには、この改行コードが問題になることがあったし、WebサーバでPerlのCGIプログラムを作る時のように、FTP転送中にコンバートをかけたり、あるいはあらかじめ変換しておくなどの手段が必要だった。CGIが動かないで悩んだ結果、ファイルの改行コードがLFじゃなかったということを経験した方も多いだろう。
いずれにしても、Darwinのレベルのテキストファイルについては、改行コードはLFとなっている。今までのMac OSとの連続性を考えると、Mac OS XはCRであるべきと考えるのが一般的だろう。しかしながら、BSDやMachといった既存のシステムを利用するという意味でのコアOSのDarwinではLFを採用したのは、問題が起きなくするという点では正しい選択だと考えられる。Mac OS Xとして完成したとき、テキストファイルの改行がどんな問題を発生するかを考えてみよう。いずれにしても、今まではUNIXは別プラットフォームだったのでとにかく別物としていればよかったのだが、今まさにMac OSの中に統合されてしまったのである。

まず、アプリケーションソフトでは、おそらくはCR、LF、CR+LFはいずれも改行とみなすようなつくりになるだろう。少なくとも、現状のワープロソフトなどはおおむねそうなっており、一般ユーザが、文書やデータなどを含んだテキストのやりとりにおいては、大きな混乱はないと思われる。もちろん、現状もそうなのだが、アプリケーションなどを作る側は、いずれの改行でもいいようにプログラムを作るのか、特定の改行コードを想定するのかなどの考慮はなくならない。テキストの書き出しでは、LFが主力となるのかもしれないが、Windows連係を考えれば、改行コードを選択できるようにするのが1つの結論と言える。
システムの設定ファイルのうちテキストファイルを利用するものについては、おそらくはLFを改行にしたものでないとうまく機能しないと考えられる。たとえば、WebサーバのApacheの設定ファイルをCR改行のファイルでうまく動くかどうかは、どちらかと言えばLF改行の世界のものだけに、あまり期待はできない。こうした設定ファイルを作る時には明示的にLFでファイルを作る必要がある。もっとも、Mac OS X全体のデフォルトでLFになるのなら、Mac OS Xでテキストファイルを作る上では問題はないのかもしれない。だが、こうした設定ファイルを作る必要性が出てくるのだろうか? 一般ユーザレベルではテキストファイルで設定を指定するということはまずないと思われる。設定を行うアプリケーションなどを利用することになり、そのアプリケーションで適切な処理が行われるだろう。だから、問題ないと言えばないとも言える。管理する側も一般には管理アプリケーションを使うだろうから、直接ファイルを書くということは少ないかも知れない。
しかしながら、アプリケーションを作る立場、システムを管理する立場からは、やはり改行コードの問題をすっかり忘れてしまうのは危険だと考えられる。電子メールでテキストファイルを生のままやり取りした場合、勝手に変換されることもあるなど、必ずしも意図した結果にならないことだってあるわけだ。いずれにしても、こうした改行コードの問題は、デベロッパあるいは管理者の段階で吸収できるというのが、大きな目標となるだろう。
関連リンク