久幸繙文

meta要素覚書

meta要素とは

meta要素は、HTML文書の中に文書全体に共通する情報(メタ情報)を埋め込むための要素である。メタ情報の例として「著者」「最終更新日」「文字コード」などが挙げられる。

meta要素は他の要素と違い、属性値を作成者が自由に定義することが出来る。より正確に言えばmeta要素の記述をどう処理するかは、仕様上で明確に決められていない。そのため一部の検索サイトやWebブラウザなどでは、自身のサービスを充実させるために、meta要素の値を定義し公表している。

一方、内容や処理を明確に決めていない以上、たとえ著者名など情報を埋め込んでいたとしても、それを表示に反映させるアプリケーションソフトもあれば、完全に無視を決め込むものもある

本仕様は、正当なメタデータのプロパティ集合を定義することはしない。 プロパティ及びその正当な値集合は、プロファイルと呼ばれる参照辞書で定義される必要がある。 例えば、検索エンジンによる文書の索引づけを補助する目的で設計されたプロファイルは、「author (著者)」、「copyright (著作権)」、「keywords (キーワード)」などのプロパティを定義するであろう。

(中略)

ユーザエージェント[1]は、メタデータ機構のサポートは要求されない。メタデータをサポートしようとするユーザエージェントに対して、本仕様はメタデータをどう解釈すべきかを定義しない。

そのためmeta要素は、何が何でも記述しておかなければならないというものではない。あくまでも「無いよりはあった方がマシだろう」程度の認識にとどめておくべきである。

[註.01] Webブラウザなどを含む、Web上のデータを処理する全てのアプリケーションソフト。

meta要素の記法

基本的には、name属性にて何についての情報を埋め込むかを規定し、content属性でその情報の値を記述する。

meta要素で埋め込むべき情報は属性で定義されるため、中身を持たない空要素となる。また文書全体を対象とするため、body要素ではなくhead要素の子供となる。

name属性の代わりにhttp-equiv属性を用いると、そのHTML文書を処理するサーバの出力するHTTPヘッダの値を指定することが(定義上は)出来る。しかし、Apacheをはじめとした殆どのサーバは、現況この仕様を完全に無視している[2] そのため、多くのWebブラウザはHTTPヘッダを置き換えたと仮定して処理している。


<html>
<head>
     <meta http-equiv="content-type" content="text/html; charset=shift_jis">
     <meta name="author" content="久樹 輝幸">

     <title>meta要素の記述例</title>
</head>

<!-- XHTMLの場合は空要素の記法に注意する -->

<body>
(省略)
</body>
</html>

[註.02] もしするとすればSSIと同じくデータの解析が必要であり、処理負担が増大することが要因と考えられる。

meta要素における代表的な情報とその値

筆者が知っている範囲で代表的なmeta要素の値を紹介する。

繰り返すが、このメタデータをどう扱うかは、扱う側に完全に依存する。書いたからといって絶対確実という代物ではないと言うことを、作成者は常に認識して欲しい。

文書そのものについての情報

著者名を指定する
<meta name="author" content="久樹 アマテル">
著作権保有者を指定する
<meta name="copyright" content="(C) 2004-2006 Hisaki Amateru">
制作アプリケーションソフトを指定する
<meta name="generator" content="MKEditor">
文書のカテゴリを指定する
<meta name="classificationr" content="HTML">
対象年齢を全年齢に指定する
<meta name="rating" content="general">
対象年齢を未成年に指定する
<meta name="rating" content="child">
対象年齢を成年に指定する
<meta name="rating" content="adult">

検索サイトなどが独自に定義している情報

検索エンジンにページを登録し、他のページも参照して欲しい場合
<meta name="robots" content="index follow">
検索エンジンにページを登録するが、他のページは参照して欲しくない場合
<meta name="robots" content="index nofollow">
検索エンジンにページを登録しないが、他のページは参照して欲しい場合
<meta name="robots" content="noindex follow">
検索エンジンにページを登録せず、他のページも参照して欲しくない場合
<meta name="robots" content="noindex nofollow">
文書の要約を指定する
<meta name="description" content="meta要素の使い方と代表的な値の説明">
検索時のキーワードを指定する
<meta name="keyword" content="高天原,久樹 輝幸,WWW,HTML,CSS,meta要素">

更新情報取得ソフトなどが独自に定義している情報

WWWCに対して更新日を知らせる
<meta name="WWWC" content="2006/09/24 12:15">
WWWCに対して更新内容を知らせる
<meta name="WWWC" content="meta要素覚書を公開">

HTTPヘッダ情報

Content-Type(文書の文字コードとMIME Type)を指定する(シフトJISの場合)
<meta http-equiv="content-type" content="text/html; charset=shift_jis">
Content-Style-Type(使用するスタイルシート言語)を指定する(CSSの場合)
<meta http-equiv="content-style-type" content="text/css">
Content-Script-Type(使用するスクリプト言語)を指定する(Java Scriptの場合)
<meta http-equiv="content-script-type" content="text/javascript">
Cache-Control(キャッシュファイルの取り扱い)を指定する(キャッシュを取って欲しくない場合)
<meta http-equiv="cache-control" content="no-cache">
ページを自動更新するよう指定する(5秒後にindex.htmへアクセスして欲しい場合)
<meta http-equiv="refresh" content="5; URL=index.htm">

HTTPヘッダについてのより詳しい情報はHTTP Header Fieldsを参照されたい[3]

もしHTTPヘッダの値とmeta要素の記述と実際のデータとが一致しない場合、アプリケーションソフトによっては文字化けなどの不具合をきたす虞があるため、注意して欲しい[4]

[註.03] 当たり前の話だが、仮にHTTPヘッダから適切に情報を出力出来るのであれば、これらの記述は本質的に「必要のないもの」といえる

[註.04] 文字コードについての詳細は神崎氏による日本語と文字コードなどを参照されたい。

久樹 輝幸