imgは画像、altは代替

LSC1月17日分の17b alt属性で、img要素について気になる記述がありました。

「alt属性は画像の代替」と考えるからおかしなことになる。

HTML は文章にタグで意味付けするものだから、既にある文章(フレーズ)をマークアップした結果が img要素になるべき。つまり、「画像はあるフレーズの代替」が正しいんじゃないかと。

これはちょっとひねって考えすぎなのではないでしょうか。

HTML仕様書を素直に読めば、img要素は埋め込み画像 (Embedded image)であり、alt属性は代替テキストなのだから、それを逆に考えるというのは無理があるように思います。

HTMLを書く上での考え方として、野嵜さんにより提唱された「はじめにテキストありき」という言葉があります。これは自然言語で書かれた文書をマークアップする上ではとても重要な考え方ではあるのですが、一方で、HTMLは自然言語で書かれた文書のためだけのマークアップ言語ではないということも留意しておくべきかと思います。

実際に、HTML 4.01 Strictの要素に限って見渡してみても、

といった機能が提供されており、これらは自然言語で書かれた文書という枠組みではとらえられないものです。

付け加えて言えば、画像等を文書に埋め込むことはHTML4仕様の目的にも折り込み済みであり、決して否定も非推奨もされていません。

以上のことから、img要素については「はじめにテキストありき」の考えを無理にあてはめるのではなく、言葉どおりに「imgは埋め込み画像のための要素、altは代替テキストのための属性」と考えるのが妥当と思います。

余談ですが、HTMLに関心を持つ個人サイトの中には「『はじめにテキストありき』 = HTMLの理念」ととらえているところも幾つかあるように見受けられます。HTML仕様の中に「はじめにテキストありき」のような概念が述べられているのであれば別ですが、実際にはそうではない(自分は見つけられませんでした)以上、「はじめにテキストありき」はHTMLという実在するアプリケーションの理念としてではなく、自然言語で書かれた文書のマークアップ一般における指標としてとらえるべきかと思います。

余談その2: 実際のところは、「『はじめにテキストありき』 ∈ HTMLの理念」だと思っています。

* * *

以上(余談を除く)を踏まえて、17b alt属性で提示されているマークアップ例を見てみます。

<dl>
<dt><img src="/memo/img/20070114mikoto" alt="美琴"></dt>
    <dd>『とある魔術の禁書目録』より、超電磁砲の御坂美琴を描いてみました。全然似てません。</dd>
</dl>

これじゃ駄目ですね。何が駄目なのかというと、「美琴」という言葉に対して「~全然似てない」という説明がなされている点(作者は「20070114mikoto」という画像に対して「~全然似ていない」という説明をしているつもり)。

駄目」な理由については書かれていることに同意なのですが、もう一歩踏み込んで何が駄目なのかを考えてみるなら、「画像はあるフレーズの代替」のような仕様に相反するような考えを導入せずとも、このように考えられないでしょうか: 「alt属性が適切ではないから」と。

そして、alt属性がどう適切でないのかについては、「画像が、人の手によって描かれた絵(要するにイラスト)であることが伝わらないから」と考えられないでしょうか。逆に、このHTML文書が文字情報しか出力できない環境で読まれたとしても、先にイラストであるという情報が提示されていれば、その後の記述: 「描いてみました」「全然似ていません」という言葉も容易に読み手へ伝わるものと考えられます。

そんなわけで、自分は代案として以下を考えました。

<dl>
<dt><img src="/memo/img/20070114mikoto" alt="イラスト: 美琴"></dt>
    <dd>『とある魔術の禁書目録』より、超電磁砲の御坂美琴を描いてみました。全然似てません。</dd>
</dl>

alt属性値として「美琴のイラスト」も考えられましたが、「美琴によって描かれたイラスト」という解釈を避けるため、このようにしてみました。記号でごまかしている感が無きにしも非ずではありますが……。

* * *

LSCの2月9日分記事、09aで挙げられた例:

<ul>
<li><img src="/memo/img/20070202girl.jpg" alt="海と水着とビーチボール"></li>
</ul>
<p>習作。何度でも言いますが、季節外れは仕様。</p>

についても、同様に適切なalt属性によって解決できるかと思います。img要素にリンクを張ったとしても、リンクの先にあるものが何なのか(イラストなのかどうか)は、実際にリソースを取得してみないと判断できません。リンクするかしないかはともかく、img要素で示されたリソースがどういう類のものなのかくらいは、あらかじめ文書中で提示しておいて損はないと思います。