Another HTML-lint 結果の解説 おまけ

おまけ

好ましくないHTMLなんだけど、Another HTML-lint では検出できないケースというのはたくさんあります。いくつか紹介しますが、どうもこういう話を始めると宗教色が濃くなってしまって、あまりよろしくありません。すべて私の主観的なものなので、話半分で聞いといてください。

注意: ここの内容もずいぶんと古臭くなってしまった気がします。だいたい 1998〜1999 頃に書かれた記事です。その積もりで読んでください。
  1. 全角空白をインデントを揃える目的に多用する。

    top

    次のように箇条書きなんかするときに使われます。□は全角空白のことね。

        次のような原因が考えられます。<BR>
        □□あそこがああだったから、ここがこうなってどうたらこうたら・・・<BR>
        □□上司が怠慢だったから部下がふてくされてああなってこうなって・・・<BR>
        日時:□□□平成9年8月15日(金曜日)午前2時<BR>
        場所:□□□山奥寺墓地<BR>
        雨天の場合:庫裏で行ないます<BR>
        連絡先:□□山奥寺株式会社、担当ねずみ男<BR>

    ちょうどいいインデントをHTMLに要求するのは無理なことです。これらの例ではウィンドウの幅が狭くなったときなど見にくいでしょうね。こういうのは例えば、素直に次のように書けばいいんです。もっと細かく設定したければスタイルシートを使うことになるでしょう。

        <DL>
        <DT>次のような原因が考えられます。
        <DD>あそこがああだったから、ここがこうなってどうたらこうたら・・・
        <BR>上司が怠慢だったから部下がふてくされてああなってこうなって・・・
        </DL>
        <TABLE>
        <TR><TD>日時:<TD>平成9年8月15日(金曜日)午前2時</TR>
        <TR><TD>場所:<TD>山奥寺墓地</TR>
        <TR><TD>雨天の場合:<TD>庫裏で行ないます</TR>
        <TR><TD>連絡先:<TD>山奥寺株式会社、担当ねずみ男</TR>
        </TABLE>

    WWWブラウザのフォント設定で、日本語の等幅フォントが設定されていないこともあります。多くの人がインストールしたままの状態でWWWブラウザを使用していることは大いに考えられます。

  2. 何でもかでも <PRE></PRE> で囲む。

    top

    何でわざわざ <PRE> にしなきゃならんのかよくわからないケースが多いです。どうも全角文字は半角文字の2倍の幅でなきゃならん、とかいう先入観があったりするからなのかなぁ、とも思います。また、プロポーショナルより等幅の方が美しくレイアウトされます、などと公言しているHTML指南サイトもあったりするからやになっちゃいます。原稿用紙をイメージしてあえてそのようにした、という優れた応用もあるのですが、ほとんどは <PRE> にする必然性のないことが多いです。本当に <PRE> でなきゃだめなのかもう一度よく考えましょう。少ない文字数で強制的に改行されている文章は、低い解像度ではあまり気になりませんが、高解像度では間が抜けているものです。
    全角半角混じりだと、うまく桁合わせができないから <PRE> で済ます、というのも多いです。

        <PRE>
        □□電話□03-5678-9XXX
        □□FAX □03-8765-4XXX
        </PRE>

    とかやるんですが、あなたの環境でちょうど揃って美しくレイアウトされているからといって、別の人の環境でもそうなる保証はどこにもありません。

    また、もともとの原稿が固定幅で改行されているものをHTML化するときに、<PRE> で囲んじまえば相当手抜きができます。ページの端から端までひとつの <PRE> なんてのもあります。

  3. 句読点など無視して、全行を <P></P> で囲む。

    top

    実際にあった(今もある)んですが、最初、とある財団法人のページはタグのひとつもないプレーンなテキストでした。原稿は何かのワープロで作ったんでしょう。文章は 40文字程度のところで一律に改行でぶち切られています。HTMLでは改行はただの空白になったり無視されたりするので、WWWブラウザで見ると全行が繋がって見えます。しばらくすると、そのことに気付いたらしく、全行の頭に <P>、お尻に </P> が書かれていました。<PRE> で全部を囲む智恵はなかったと思われます。一応、<HEAD> などのタグも付けられてはいました。HTMLとしては正しいんだけど、こんなのは厳しく減点したいものです。

  4. インデントを揃えたいがために、でかい <TABLE> を作る。

    top

    <TABLE> を利用して多段組をやっているページのことです。<TABLE> の応用としては正しいんだけど、ちょっとWWWブラウザの負荷が大きいですよね。なにしろTABLE全部評価し終わらないと表示を開始できないんですもの。

  5. クリッカブルマップしかないページ。

    top

    こんなのはお話になりませんね。何考えてるんでしょう。文章をわざわざイメージファイルにしてあるようなやつは最低だな。いや、スキャナで撮って無加工で貼り付けるだけだから、わざわざというのは当たらないか。

  6. 不用意に改行を入れる。

    top

    HTMLを普通のテキストエディタで書くことは多いでしょう。エディタによっては長い行が扱えないために、途中で改行せざるを得ないものも多いです。HTMLでは改行は空白なので、改行した部分は分かち書きされたとみなされます。つまり、隙間が空きます。改行は無視されるわけではありません。

        こういう長い文章が途中で切れてい
        るとそこには隙間が空くのですよ。

    なんて原稿では、「い」と「る」の間に空白が入ります。日本語には分かち書きの習慣はないので、無意識に切ってしまうのだと思いますが、WWWブラウザが表示するのは日本語だけではありません。英単語の word を wo と rd の間で改行する人はいません(たぶん)。改行するなら、句読点の後とか、語の切れ目とか、そういう場所でしてもらいたいものです。
    これは、LynxなどテキストベースのWWWブラウザをふだん使っている人のHTMLに多く見られる傾向です。テキストベースWWWブラウザでは、フォントは等幅で表示桁も固定なので、いつも決まった場所で改行されます。HTMLもそれに合わせて改行していることが多いようです。
    しかし、RFC2070には、ユーザエージェント(WWWブラウザのこと)は改行文字をスクリプト(英語とか日本語とかの表記のこと)に応じて適切に扱うように、と書かれています。日本語は分かち書きしないので、不要な改行はWWWブラウザが適切に無視すべきなのです。現実のWWWブラウザでそこまで処理しているのは、ごく一部ですがあるようですので、今後対応が進むことが期待されます。「本来WWWブラウザがやるべき仕事だからおれはそんなしちめんどうな本末転倒のことはやらない」というスタンスももっとも(わがままとも言える)なのですが、可能ならば、空白が入ってしまうWWWブラウザを使っている多くの人々のことを考えてあげてもいいのではないでしょうか。

    矢野啓介氏の「HTML文書中の改行文字について」も参考にしてください(注意:このページはスタイルシートの仕様を守って書かれていますがWWWブラウザの実装状況をまるで無視しているため、MSIE4以外のブラウザではスタイルシートの機能を外さないと正しく閲覧できません。改行がテーマの文書なのに、改行されるべきところで改行されないため、文意が損なわれてしまいます。1998/12)。ただし、わたしはこの30〜35文字程度で改行しましょうという考えには賛成しません。どこで改行するかは読み手にまかせるべきで、書き手に30〜35文字で改行するように勧めるべきではないと考えています(ここで言う改行とは、ページ端での行替えのことで、段落などのことではありません)。

    1. 日本語(によるスクリプト)は分かち書きしない?

      改行を空白で置き換えることは、分かち書きされる英語などの場合は自然な動きです。
      日本語で改行を無視するというのは、日本語が分かち書きされないという前提に立った話です。現実には日本語を(それがいいか悪いかは別として)分かち書きすることがあります。表現手段として利用するのです。
      分かち書きされる日本語を考えた場合、改行を無視するというのはうまくありません。つまり、分かつ場所で改行してしまうと、繋がってしまうからです。分かち書きはないというのなら、文中の空白も無視すべきでしょう。しかし、それではあまりにも自由な表現を奪ってしまいます。
      文中の空白は捨てないけれども改行は無視するというのは、折中案としてはそこそこいい線行ってますが、所詮は限られた環境で有効な方法でしかありません。

      他のスクリプトを混在させる場合、LANG属性による明示が薦められています

          日本語に含まれる <SPAN lang="en">English</SPAN> もある。

      このとき、SPAN前後の空白は分かち書きの区切りです。

          日本語に含まれる
          <SPAN lang="en">English</SPAN> もある。

      のように改行したら分けてくれないことになります。空白をSPANの中に入れることも考えられます。

          日本語に含まれる<SPAN lang="en"> English </SPAN>もある。

      しかし、このような書き方はHTML4.0では薦められていません

    2. 行あたり 35文字程度が読み易い?

      行あたり 35文字というのは、印刷物としての紙(または本)というメディアを前提としています。コンピュータのディスプレイなどにそのまま応用していいものではありません。書き手が読み手に対してどうしても 35文字を主張するなら、そのように整形した文書を提示すればよいのです。HTMLでそのようにすることは可能です。ちなみに、文庫本は 42字程度、新聞は 12字程度で折り返されますが、そこに改行が入っているわけではありません。
      また、書き手が改行を含めてテキストを書くかどうかは好き好きなので、1行が 1000文字に渡るのはけしからんというのはおかしな話です。少なくとも、改行でぶち切られたテキストを、再利用しようと思ったら、不要な改行を取り除く作業が不可欠なわけです。そして、どれが不要かを判断するのは、結局文章を読まないと*絶対に*わかりません。

    3. 悪いのはブラウザだからHTMLに手を入れる必要はない?

      正論です。ですが手前勝手です。ほんのちょっとした努力で、*今現在の*多くの利用者に益があるのですから、そうしてあげればいいでしょう。文法違反を犯すわけではありません。いつ改訂されるかわからない未来のブラウザに期待して(あるいは改訂を働きかけるにしても)あぐらをかいていていいとは思いません。
      多くのHTMLライタは、自分では使いもしないテキストベースのブラウザのことや、障碍者のことを考えてさまざまな工夫を凝らしています。仕様どおり書けば自動的にそうなるものでもありません(WAIのガイドラインに沿えばそうなります)。もっと普通の利用者の便も図ってあげましょう。
      単純に、ブラウザの問題で片付けてしまうのは、ブラウザを限定することと同じです。
      ちなみにXML1.0では改行は空白扱いです。

    テキストに不要な改行は入れないようにしましょう。30や35文字で切らざるを得ない環境ならばいざ知らず、現在のGUI環境にあるエディタでは、途中に改行を入れないことの方が普通です。1行35文字にしたければ、ウィンドウの幅をそうすればいいだけです。嬉しいことに、多くのテキストエディタは禁則処理も行なってくれるので、句読点が行頭に行ったりすることもありません。読み手に35文字改行を要求するなら、そのようなHTMLを書いてください。

    余談ですが、NCSA Mosaic では、行末にかかった日本語などの多バイト文字の追い出しがうまくないことがあるようで、そんなとき横スクロールバーが出てしまうようです。それを嫌って、余分な空白や改行を入れて調整したりすることがあるそうです

  7. スタイルシートでフォントファミリを指定する。

    top

    スタイルシートは、WWWブラウザの対応が追い付いていないとはいえ、利用しているページは多くなってきました。これらのページの作者は、MSIEでは見えるか、Mozillaではどうかといろいろ腐心されているかと思います。しかし、日本語に対してフォントファミリを指定するのは時期尚早のような気がします。うまく表示できる環境ももちろんありますし、そういう環境が増えるであろうことは明白です。しかし、現在のMacintoshのMozillaではうまくありません。いつまでたっても(4.5でも)改善されないので、あえて書くことにしました。MacのMozillaでは、フォントファミリが指定されていると、欧文フォントで処理されてしまい、文章を全く判読できなくなってしまいます。MSIE4.0は大丈夫なのですが、利用者の多さを考えると、無視するわけにもいかない気がします。自身がMacユーザなら気付いているでしょうから、Macを利用できる環境にない作者なので、気が付かなくて当然なのですが。
    最近(2002)のMozillaには、この内容を適用することはできませんのでご注意を

top