Hatena::ブログ(Diary)

TopCoderとJ言語と時々F# このページをアンテナに追加 RSSフィード

2009-07-11

[]HTMLで文書を書く上で

HTMLで文書を書く上で、h1〜h6要素、p要素、a要素さえあれば何とかなる、と言った旨の発言をしたらだいぶ批判されたので、この発言の意図を書いておこうと思う。

まず自分はHTMLを素直に「文書にマークをつける言語」として見ている。まあこれは当たり前のことだけれど、そういう風にとらえてるから当然まずは文書ありきということになる。最初に文書があって、それに対してHTMLを使ってマークをつけていく。

文書を書く上でもっとも基本になるのはタイトルと段落である。

タイトルはその文書に書かれている内容を端的に表し、段落は文章の内容を意味ごとに分けて述べる。まずはこの二つがあれば文書は成り立つ。

そしてこの最低限の構造の文書をHTMLでマーク付けすることを考える。

この最低限の構造の文書にはタイトルと段落がある。タイトルはtitle要素で示すが、細かく見出しで分けられている場合はそれぞれh?要素で表し、段落はp要素で表す。ちなみに自分の発言にtitle要素のことが入っていないのはbodyの中身の事を言ったからである。

またHTMLはWeb上で取り扱われる文書を記述するマークアップ言語だから、とうぜんWebの性質を持った要素がある。

そのWebの性質の中でもっとも大事なのは、他の文書のURIを示すことでその指定された文書に飛ぶことができるハイパーリンクである。HTMLで言えばa要素がこれにあたる。

文書としてのタイトルと段落、Web上の文書としてのハイパーリンク、これさえ備えればその文書は「最低限のWeb上の文書」になる。先の自分の発言はこういった考えがもとである。

とうぜんこれは最低限の文書であるから、文書として成り立っているし、きちんと読めるけれども、強調されてる部分がないので文章に凹凸がない等、その内容を伝える上でまだ障壁が残っている。明確さに欠けている部分もあるかもしれない。

それを出来るだけ取り去るためには、「ここは強調して言いたいな」というところをstrong要素でマーク付けしたり、「ここは引用文だ」というところをblockquote要素でマーク付けしたりと、さらに追加のマーク付けが必要になってくる。

もちろん自分の発言はその追加のマーク付けを否定するわけではない。

自分の発言について id:qnighyifとgotoがあればチューリング完全なのでプログラミングできます!みたいな話だと言っていたけど、言ってしまえばその通りである。ただ自分はifとgotoだけでプログラミングしないし、そうすべきだとも思わない、という話だ。

最後になるが、「何とかなる」という表現は誤解を招くおそれがあって不適切だな、とは思った。ここは自分の過失。

2009-04-05

[]アクセシビリティ

アクセビリティ の検索結果 約 6,070 件

6070件とかわろす

2009-03-03

[]HTMLの正しさが軽視されるのはなんでだろうね

プログラミング言語っていうのは文法が規定されていて、それに反したものを書くとコンパイラなりインタプリタなり処理系がエラーを吐く。

これは当然のことで、プログラマは皆使ってる言語の仕様を守る、というか守らなければ成果物ができない。

気にくわない仕様があったり、どうしてもこう書きたい、なんてことがあってもそれは出来ないし、どうしてもやりたくて仕方ないなら自分でそれが出来る言語を作るしかない。

もし間違った文法にそってかかれたプログラムを許容する処理系があったとしよう。例えば、C言語で行末にセミコロンが書かれていなくても、構文解析でどこにセミコロンがあるべきなのか把握できる程度なら自動で補完してくれるとか、そういうことだ。

もちろんセミコロン忘れ以外にも様々な部分で許される文法違反が出てくるし、プログラマがそれぞれ好き勝手に俺のやり方でやると、書き方もどんどん滅茶苦茶になってくる。

そういう風に標準に定められた文法を守れないソースが増えてしまうと、後々のメンテナンス等に大きな支障を来すことになるのはどう考えても明らか。だから、コンパイラとかは絶対に文法違反は許さない。

でも、HTMLだとどうだろう。

HTMLだと、W3Cの勧告で、例えばどの要素は使うべきじゃないとか、どの要素はどの要素の入れ子になってはいけない、とかが言われているし、要素云々以前にタグの書き方等も定められている。

しかし、HTMLを書いた人がその勧告に従っておらずとも、あるいはタグの書き方が間違っていても、UAの中でもIE,FF,Operaなどブラウザはそれをある程度補完してまともに解釈してくれる。(当然ぶっ飛んで間違ってるようなのは無理だが)

つまり、間違ったHTMLをそのまま受け容れてしまう。

プログラミング言語ならば間違ったものからは成果物が生まれないのに、HTMLだと生まれてしまう。ブラウザによってページは確かに表示される。

このことが、HTMLを書く人たちに「正しく書くこと」の意識を薄れさせている。

間違っていても「ここでちゃんと見えている、表示されている」からOKである、と思ってしまうような人を増やす原因になっている。

もちろんHTMLでも、正しくないものは後々のメンテナンスに支障を来す。たとえば色付けにfontなんかを濫用していれば、あとでCSSを適用してデザインを変えようと思ったとき何かに困るだろう。

プログラミング言語でも、文法の面でなく例えばアルゴリズム面などで「今は動くからこれでいいや」では後々困るように、HTMLでも「今は表示されるからこれでいいや」ではいけないのである。

締めの文章が思いつきませんでしたごめんなさい。