改行関係のコードの考え方


よく知られている改行関係のコードとして下記があります。

CR(Mac OS 9まで。本来は改行でなく「復帰」)
LF(UNIX系、Mac OS X、他)
CR(+)LF(Win、ネットプロトコル多数、他)

他にも多数のマイナーなものがあります。

一方、HTMLで書く場合、
下記2つの改行関連のタグがあります。

<p>…</ p>(改段を伴う改行)
<br />(単純な視覚的改行)

この2つに相当する区別は重要であり、
私は、冒頭の3つのコードが、
一般に、HTMLの2つのタグのどちらに相当する意味で
処理されているのか、
知りたく思います。

というのも、
私は今、様々なデジタル・システムにおいて、
ユーザーが文字列を入力・保存する際、
どのコードが、何個まで許されるか、纏める作業をしており、
これらを区別することが避けられないためです。

この目的は、
具体的規則を集積し、最大公約数的な少数の規則を析出して、
データの生産性と再利用性を最大化し、
環境フリーな生産形態を導く事です。

具体例として、下記URIをご覧下さい。
http://goo.gl/hYUA4M

どうか、ご助言をお願い申し上げます。

回答の条件
  • 1人3回まで
  • 登録:
  • 終了:2015/02/14 10:00:07
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:a-kuma3 No.1

回答回数4973ベストアンサー獲得回数2154

改行コードは、もともとタイプライターの動作から来ています。
CR(キャリッジリターン)は、ヘッドを行頭に移動。
LF(ラインフィード)は、紙を一行分送る。

これがテレックスが開発されたときに、そのままコード化されました。
ですから、元々の意味合いとしては見た目の制御だけで、「段落」という考え方がありません。

HTML は、テキストデータに文書の構造という考え方を持ち込みます。
質問でも書かれている通り、<br/> が見た目の改行(文書の構造としての意味を持たない)で、<p></p> が囲まれた部分をひとつの段落としての意味を持たせます。
その意味では、三つの改行コードがどちらに該当するのかというなら、<br/> になります。

HTML で言えば、CSS で見た目を制御できます。
文書の構造としては、段落が分かれているが、お互いを改行せずに見せる、ということも可能です。


目的の部分が、ちょっとぼくの理解が追いついていないのですけれど、こんな感じで回答になっているでしょうか。

他3件のコメントを見る
id:akkeyyyy

ハムスター氏、覚えています。もういないのですね。

ポイントに関するアドバイス、ありがとうございます。では、

・非常に困っている/プロフェッショナルでないと分からない:500 or 300pt
・知識を広げたい程度/プロに限らず広く意見等を収集したい:300 or 200pt

を目安にして、しばらく試してみたいと思います。

2015/02/14 21:53:45
id:akkeyyyy

あ、言い忘れました。
こちらこそ、今後とも、どうぞよろしくお願いいたします。

2015/02/14 22:22:15
id:blue_star22 No.2

回答回数297ベストアンサー獲得回数12

改行はbrです。pは段落の成形であって、その末尾に改行も伴うです。

id:a-kuma3

質問に挙げられた CR+LF、CR、LF の三種類の改行コードとの対応はどこに行っちゃったんでしょうか?

2015/02/01 00:06:31
id:akkeyyyy

あまりにも無意味なご回答です。

2015/02/11 23:55:03
id:akkeyyyy

あと3日間で回答期限が終わります(14日終了)が、現在、回答欄においては、意味のあるご回答が得られておりません。

コメント欄に、rouge_2008 様が有益な記述を下さっていますが、コメント欄ゆえ、ポイントを差し上げる術がありません(ですよね?)。rouge_2008 様、回答欄に、何かご記入いただければと存じます。

----

(質問終了後の追記)

皆様の善意により、ポイントの配分(送信)ができただけでなく、人力検索の使い方のコツも知ることができました。意図せず大変有益な結果となりました。皆様にお礼申し上げます。

  • id:rouge_2008
    CR、LF、CR+LF等の改行コードは、HTMLなどのテキストソースを改行します。
    HTMLコードのbrタグ(要素)は、ブラウザ表示での改行で、ソースファイルは改行しません。
    ※pタグは段落です。(ブロック要素である為改行を伴いますが、改行が主体ではありません。)
    改行コードとHTMLタグは別の物ですので、仕様としてはbr、pのどちらにも相当しません。
    WordPressのビジュアルエディタ(※はてなブログでは「見たまま」)での入力における「Enter」キー(改行)はpタグとして処理され、「Shift」+「Enter」キーでbrになります。
    ほとんどは上記の動作仕様ではないかと思いますが、CMSや各種サービスによって異なる場合もあると思いますので、一つずつ調べる必要があると思います。

    ※Movable Typeでは、記事の編集画面でテキストフォーマットを「リッチテキスト」「改行を変換」等から選択できます。
    以下は最新版ではなく、バージョン5.2のドキュメントですが、現在のバージョンでも同じだと思います。(関連箇所を抜粋します。)

    ・ブログ記事とウェブページの編集
    http://www.movabletype.jp/documentation/mt5/compose/edit.html
    ----------------------------------------------------------
    テキストフォーマットについて
    "本文"や"続き"の入力する方法です。それぞれのテキストフォーマットの特徴や記法は、以下の通りです。

    ■"なし"
    入力したテキストがそのまま公開されます。X/HTMLで、かっちりと書きたい場合に利用します。

    ■"改行を変換"
    改行を br 要素に変換します。連続する行はひとつの p 要素でマークアップされ、空白行で区切られます。

    ... (略)
    ----------------------------------------------------------
  • id:a-kuma3
    rouge_2008>WordPressのビジュアルエディタ(※はてなブログでは「見たまま」)での入力における「Enter」キー(改行)はpタグとして処理され、「Shift」+「Enter」キーでbrになります。
    最初にIEが、contentEditable 属性を実装したときから、この動作でした。
    textarea だと、利用している側では区別ができません。

    rouge_2008>■"改行を変換"
    rouge_2008>改行を br 要素に変換します。連続する行はひとつの p 要素でマークアップされ、空白行で区切られます。
    これ、はてな記法も同じですね(ダイアリーだけ?)。
    何か元祖があるんですかね?
  • id:rouge_2008
    ありがとうございます。
    エディタでの改行時の動作は、contentEditable 属性によるものだったんですね。
    記事編集でも用意されているエディタをなんとなく使っているだけなので、全然気がつきませんでした・・・


    > これ、はてな記法も同じですね(ダイアリーだけ?)。
    > 何か元祖があるんですかね?

    はてな記法の改行記法の事ですか?
    ダイアリーだけじゃなく、はてな記法が動作するサービス全般だと思います。
    元祖は何でしょうね?
    Text-Hatenaプロジェクト( http://search.cpan.org/dist/Text-Hatena/lib/Text/Hatena.pm )では「Text::Hatena supports some simple markup language, which is similar to the Wiki format.」とありますけれど・・・
    Wiki記法を意識しながら独自に使い易いと思う形式にしたのかもしれません。
    ※WikiとMarkdownではどちらが先に普及したのか分かりませんが、これら両方の改行時の動作が類似しています。(私はどちらも使っていないのですが・・・)
    ※Movable Typeは「連続する行はひとつの p 要素」なので、はてな記法よりはWikiやMarkdownに似通っているかもしれません。
    はてな記法の場合、「はてなダイアリーでは、「*」や「-」などの特殊文字で始まらない通常の行は、自動的に<p>~</p>タグで囲まれ、~」なので、1行ずつ段落になります。

    ・改行タグを挿入する(改行記法)
    http://hatenadiary.g.hatena.ne.jp/keyword/%E6%94%B9%E8%A1%8C%E3%82%BF%E3%82%B0%E3%82%92%E6%8C%BF%E5%85%A5%E3%81%99%E3%82%8B%EF%BC%88%E6%94%B9%E8%A1%8C%E8%A8%98%E6%B3%95%EF%BC%89
  • id:a-kuma3
    rouge_2008>はてな記法の改行記法の事ですか?
    rouge_2008>ダイアリーだけじゃなく、はてな記法が動作するサービス全般だと思います。
    はい、改行記法のことなんですけど、ダイアリーと同じ実装になってるのは、はてなブログと、はてなグループだけだと思います。
    ここ人力検索も、はてなハイクも、連続した改行は <br> の連続になってます。
    今、試したら、はてなスペースも同じです。

    ぼくは、はてな記法を一番意識するのが人力検索なんですが、リスト記法とか表組み記法の後の改行の連続が、ちょっと微妙な感じだと思ってます。


    って、揚げ足を取るつもりはないんですが :-)
  • id:rouge_2008
    > ここ人力検索も、はてなハイクも、連続した改行は <br> の連続になってます。

    すみません。試していないので分からないのですが、連続した改行はbrになるのが正常動作のように思います。
    「はてなダイアリーでは、「*」や「-」などの特殊文字で始まらない通常の行は、自動的に<p>~</p>タグで囲まれ、~」の続きが、「一定の行間が設定されますが、何も書かない行を2回続けることで、意図的に改行タグ<br>を挿入することができます。」です。
    「何も書かない行を2回続けることで、意図的に改行タグ<br>を挿入」なので、空行が2回ごとにbrに変換されるのかもしれません。
    ダイアリー、ブログ、グループとハイクや人力検索ではどの辺りが違うのでしょう?
    (この後、自分でも少し試してみます・・・)
  • id:rouge_2008
    人力検索は確認しました。
    1つの回答全体が「<div class="section"><p>ここに回答本文</p></div>」で囲まれているので、さらに段落の中に段落を作成しない(※W3Cの仕様に沿う)ようになっているんですね。
    失礼しました。m(__)m

    ・・・という事は、段落になるのは日記系のサービスだけでしょうか?
  • id:a-kuma3
    あ、いや、ぼくも早とちり。

    ダイアリーで記事を書く際に、空行を挟む(改行2回)と段落(<p></p)になって、普通に改行で文を進めると <br> という理解だったんですが、最近の自分の記事を見てみると、ひとつの記事の中に段落の区切りが無くて、<br> の数だけになってました。

    段落をつけてたと思ったんですが...
  • id:rouge_2008
    私の場合、改行記法の説明通りpタグで囲まれたのですが、良く見たらはてなダイアリーには↓のような設定項目がありました・・・
    ※ちなみに段落モードにチェックが入っていました。(2つ以上連続した改行は、改行の個数 - 1 のbrになります。)

    ・「編集設定」画面( http://d.hatena.ne.jp//[*id*]/configedit )
    --------------------------------------------------------
    入力した改行の扱い 入力した改行の扱いについて

    改行モード(初期設定)
    改行を入力すると、そのまま画面上に反映されます
    段落モード
    改行を段落の区切りとして認識します。とくに長文を書くブログに便利です
    ※この設定は新しい記事だけでなく、過去の記事の改行の扱いも変更されます。
    --------------------------------------------------------
  • id:a-kuma3
    こんなのあるんですね。
    ぼくは(意識してなかったから、当然として)デフォルトの改行モードになってました。
  • id:rouge_2008
    Joe(id:akkeyyyy)さん、何回もコメントしてすみません。

    各OS標準の改行コードだけではなく、すべての改行コード(CR、LF、CRLF)に対応したテキストエディタがありますので、テキストファイルに関しては改行コードの影響を受ける事はおそらくほとんどないと思います。
    対象のデジタル・システムはどのような機能なのでしょう?
    入力時の改行の扱い(※そのまま保持、pあるいはbrへの変換等)に関しては、ブログ等HTMLによって表示するサービスではないのでしたら、特に気にしなくても大丈夫ではないかと思います。

    ファイル名(パス?)の文字数によるトラブルがきっかけの質問のようですが、安全の為にもファイル・フォルダ名は半角英数字、ハイフン、アンダーバーのみにするなど、なるべく記号や特殊な文字を使用しないようにするといいかもしれません。
    OSが異なるPC間でファイルをコピーした場合や転送方法によっては、ファイルやフォルダの名前が文字化けして正常に表示されない場合もあります。
    さらに情報が必要な場合、ファイルやフォルダ名の文字コードについては、詳しい人からの回答を待ってみてください。
    ※Windowsは内部ではUnicodeで表示がSJISだそうですが、アプリケーションによって異なるようですし、Windows7以降など現在でも同じなのか確認できませんでしたので・・・
  • id:jwrekitan
    CR(0x0D)、LF(0x0A)、どちらも1バイトコード。

    ラインプリンタと呼ばれる昔のプリンターは、
    LFコードを送らなければ改行しませんでした。
    確か、わざとLFコードを抜いたテキストファイルを印刷させると、
    CRで行頭に戻った後、同じ行に上書きを始めたはず。

    つまり、画面表示だけを考えると、
    CR+LFという2バイトコードは全くの無意味で、
    単なる容量の無駄遣いでしかないのですが、
    MS-DOSでは改行コードにCR+LFを採用する事によって、
    当時一般的だったラインプリンタにデータを転送する際、
    テキストデータを無加工のままプリンタに流すという手抜きができたんです。
    WindowsはMS-DOSがベースになっていますので、
    現在でもその習慣がそのまま踏襲されているという事になります。

    pとbrの違いはa-kuma3さん他、説明されているので省略するとして、
    HTMLのレンダリングにおいては、
    pre要素(整形済みテキスト)でも使われていない限り、
    出現するCRとLFを、レンダリングエンジンが全て無視するはずです。
  • id:akkeyyyy
    質問者です。

    結局、回答欄ではほぼ何も得ることができませんでしたが、rouge_2008 様、a-kuma8 様の、コメント欄のご助言のおかげで、質問文にある事柄について、かなり知ることができました。

    特に、
    ・WordPress
    ・MovableType
    ・Windows での内部処理
    ・複数 OS を意識したファイル命名規則
    について貴重な知見を得ました。

    また、椶櫚(id:jwrekitan)様の史的説明も、興味深く拝読いたしました。

    有難うございました。

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません