ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Macを教える・教わるコミュの【システム】UNIXがベースになったMacOS Xでは、改行コードはLFになっている?

  • mixiチェック
  • このエントリーをはてなブックマークに追加
「【システム】【テキスト関連】改行コードの素朴な疑問」(元タイトル)
*管理人追記 タイトル変更しました。
本来のトピ立て日時 2008年12月17日 09:09

どもです。
昨日、ふと疑問に思ってしまい調べ始めたら余計にわからなくなりました。

Mac OS9以前の時代に、公式のようにテキストデータの改行コードを
Mac CR
Windows / DOS CR+LF
Unix LF
と覚えまして、今まで疑いませんでしたが、MacOSXではUNIXがベースになっている訳で、では改行コードもLFとなったのか否か気になり始めてしまいました。
ググるとMac OS9以前の時代の情報が上位にきがちでなかなか真相にたどり着きません。

調べていたら、ラインブレイクとパラグラフブレイクという改行に関する種類があることはわかり、違いの意味を字面では認識しましたが、体感としてはピンときていません。

正直、緊急性は低い疑問です。
ご存知の方、急ぎませんので教えて頂けませんでしょうか?

コメント(9)

「Mac OS X 改行コード」でググったところ、次のページが見つかりました。
http://www.amy.hi-ho.ne.jp/~lepton/program/p4/prog431.html

で、手元の環境(Intel版Mac mini, Mac OS X 10.5.6)にて、テキストエディット.appでファイルを「Unicode (UTF-8)」で保存し od -xa したところ、やはり改行コードとしてLFが使われていました。
KENSAITO様
情報ありがとうございます。

このページを見てみると・・・かなりガチなプログラマの方も同じような疑問をもたれていた様子で。

私が疑問を抱いたきっかけは、JeditXで書類を作っていたところ改行コードのプルダウンで「Mac OS(CR)」という選択肢が目に入ったからなのですが、今回頂いたページを見た後他のソフトはどうなんだろうかと思いまして、とりあえずiText_expressを落として調べてみました。
やはり改行コードの選択肢は「Mac OS(CR)」とあります。

で、これらのソフトで改行コード「Mac OS(CR)」を選び書類を作り、KENSAITO様にならってターミナルで開いたところ、改行コードはCRでした。ちなみに環境はPPC/10.4.11です。

でで、この改行コードCRの書類をテキストエディット.appで開いたら、きちんと改行しました。

さらに、このテキストエディット.appで開いた改行コードCRの書類を別名保存したところ、CRのままで保存されました。

ついでにJeditXで改行コードCR+LFの書類を作り、テキストエディット.appで開いてみると、きちんと改行していました。

結論として、テキストエディット.appで新規作成した書類は改行コードLFだが、CRやCR+LFで作成された書類を開いても元の改行コードを変換せずに改行する、ということらしいです。

しかしこうなると更なる疑問が湧いてきます。
結局、MacOSXの標準改行コードはLFなのかCRなのか。多分LFが有力なのでしょう。
しかし、ならばなぜサードパーティー製テキストエディタはMacの改行コードをCRと定めているのか。
なんか、すっきりしないス・・・。
UNIX由来のアプリケーションはLF、Mac由来のアプリケーションはCR、と考えた方が妥当でしょう。

例えば、CarbonでMac OS X対応したもの、CarbonだったものをCocoaに書き直したものは元々のアプリケーションがMac OS由来ですから、従来との仕様の関係で改行コードをCRにするのが妥当です。

逆にUNIX/BSD/NEXTSTEP由来のアプリケーションは改行コードをLFにする方が従来のOSやUNIX系アプリケーションとの親和性が高いです。

ということで、標準改行コードというのがOS単一である、というよりは、アプリケーションの由来がどちらかで標準改行コードが変わるのがMac OS Xと考えた方がもっとも理解しやすい答えでしょう。
どもです。遅くなりました。
daishi様
ありがとうございます。
なるほど、OSでなくてアプリ視点で見る、と。
そうするとますます気になるのが改行コードとはなにか、ということです。

実は今回、ふと気になり出したきっかけは、KENSAITO様が教えてくださった
http://www.amy.hi-ho.ne.jp/~lepton/program/p4/prog431.html
のプログラマの方と根っこは一緒で、過去のトラブルの経験から、今の仕事での改行コードをチェックしないと・・・というタイミングでした。

それはWindowsで起きたトラブルでしたが、MacOSXで改行コードが混在していると、なんかこう、Macでもトラブルが起きそうで怖くなってきます。
問題なのは、UNIXのプログラム側に改行コードはJFであることしか前提においていないものが多いということでして、UNIXのコマンドに読ませる設定ファイルは改行コードをLFに変換しておいてください。

UNIXの場合OS=アプリと考えてあげないといけないってことです。
Mac OS XのGUIを持つアプリケーション(正確にはAppleがバンドルしているもの)は極力LFとCR両方を解釈するように配慮されています。
横から済みません。

MacBookを丁度1年前に購入したのですが、切っ掛けはwindowsのアホさ加減に愛想つかした訳ですが、FreeBSDがベースのGUIがMacのオリジナルXwindwでは無いかと思ったのです。

CGIをいじっていた時\nの改行をよく見かけていました。

このトピでふと疑問が出て来たのが改行がLF>ラインフィールドだと思い込んでいたのですが基本的にLFと解釈してしまって良い物なんでしょうか?

> 6

全然日本語になってないです (^^;;;

> FreeBSDがベースのGUIがMacのオリジナルXwindwでは無いか

翻訳求む。ちなみに、X window システムとは全然別の成り立ちです。

> 改行がLF>ラインフィールド

LineFeed 伝送制御文字の略称としてLFがあり、それは「ラインフィード」と表記すべきなのですが、

> 基本的にLFと解釈してしまって良い物なんでしょうか?

なんとも (^^;
> je6☆je6 さん、

ご質問の内容は別トピックの方が良いと思いますが、通常は
¥n = LF = ラインフィード
¥r = CR = キャリッジリターン
の制御コードを意味します。

httpなどのプロトコルでは、CR+LFをヘッダ情報の区切りに使用するなど特別な意味を持つこともありますが、CRやLFを改行として認識するかどうか、といった処理はアプリケーションの仕事のため、OSは関係ありません。

つまり、アプリケーションが単独のCR、LFを改行として扱うのか、CR+LFを改行として扱うのか、というのはアプリケーションを作った人たちが勝手に決めているだけなので、勝手仕様でも問題ない、ということになります。

例えば、HTMLは改行タグが定義されていますから、CRやLFを単独で入れてもWebブラウザの画面上ではHTML表示時には改行として表示していません。

WebブラウザからHTMLソースを見たときにCRやLFを改行として表示していることもありますが、これはWebブラウザ自身の仕様によるため、すべてのWebブラウザが保証しているとは限りません。
みんつさん

表現が曖昧すぎて済みませんでした、

ラインフィードの間違いです>ラインフィールドはタイプミスです。


daishiさん

曖昧な表現から趣旨を汲み取って頂いて有り難う御座います。
html文法でもソフトによって改行コマンドが違うのと同じ事なんですね。
有り難う御座います。

これだけで、充分に理解出来ました。

トピ汚して申し訳有りません。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Macを教える・教わる 更新情報

Macを教える・教わるのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング