制作者(webmaster)
野嵜健秀(Takehide Nozaki)
改訂
2002-11-21

meta

head要素内に記述される、文書情報(メタデータ:meta data)記述用の要素です。

HTML 4.01の仕樣書は、メタデータに記述出來る事柄を、具體的に定義してはゐません。(This specification does not define a set of legal meta data properties.:本仕樣では、正當なメタデータのプロパティセットを定義しません。)

meta data以外に、HTML文書と他のリソースとの關聯を記述する爲の仕樣は、Resource Description Framework (RDF) Model and Syntax Specificationにまとめられてゐます。

基本的な使用方法

http-equiv屬性は本來、メタデータを載せてHTTPヘッダを出力するやう、サーヴァに指示を出す爲の記述です(content屬性の値がその中身)。

しかし、多くのサーヴァがmetaを讀んでHTTPヘッダを出力するやうな設定になつてゐません。さう云ふ場合、仕方がないので、User Agent/ブラウザ等のクライアントプログラムは、文書内のmetaの記述を讀んで、それなりに適當な動作をしてゐます(ゐる事があります)。

name屬性は、content屬性と組合せて、色々な情報を示す爲に用ゐられます。

制作者・著作者の情報

address要素で、文書の制作者・記述者への聯絡先を明示出來ます。meta要素に制作者名と著作權情報を、link要素に聯絡先メールアドレスを記述する事もできます。

ISO-HTMLでは、「address要素で文書全體の制作者・記述者への聯絡先を記述する事は出來ない」と考へられてゐるやうです(私見)。

制作者情報

<META name="Author" content="Dave Raggett">

著作權情報
<meta name="copyright" content="(c)1998-2003 T Nozaki">

なほ、著作權情報を書かないでゐても、法律上、著作權は發生します(日本ではさうなつてゐますし、多くの國ではさう解釋されます)。

ロボット向け

メタデータをユーザエージェントがどう活用するかは、ユーザエージェントの實裝次第です。檢索エンジンなどのロボットは、以下の記述を利用する事がありますけれども、利用しないで勝手に動作する事もあります。

内容説明

<meta name="description" content="正字正かなの原理">
文書の要約を書いておきます。檢索エンジンのロボット(crawler)が拾つて、サーチ結果のコメント部に利用するかも知れません。
<meta name="keyword" content="正字正かな,歴史的仮名遣,歴史的假名遣,現代かなづかい,日本語,国語">
文書のキーワードを書いておきます。檢索エンジンのロボットが拾つて、ここで記述されたキーワードで檢索がかけられた時、檢索結果に出やすいやうにして呉れるかも知れません。
<meta name="robots" content="noindex,nofollow">
ロボットの擧動に對する希望を書く事も出來ます。「データを拾はないで呉れ」とか、「この文書以下のリソースを辿らないで呉れ」とかいつた希望があれば、上記のやうに書いておく事は出來ます。ロボットによつては、この手の記述を無視します。

「文字コード」

所謂シフトJIS
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis">
ISO-2022-JP(「JIS」と呼ばれる事もあるが不正確)
<meta http-equiv="Content-Type" content="text/html; charset=iso-2022-jp">
EUC
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp">

解説

「文字コード」の記述で不適切な事を書くと、ブラウザで文字化けの嵐となるので氣をつけるやうに、と言はれます。それは或意味、慥かにさうなのですが、しかし、そもそもmetaで「文字コード」を指定するのは無意味です。

或HTML文書の「文字コード」は、本來HTTPヘッダで指定される筈のものです。http-equiv屬性附きのmetaでなされてゐる事を見ればわかる通り、metaでの「文字コード」の指定は、サーヴァに適切な文字コード情報をHTTPヘッダに乘せるやう指示する爲のものです。ただ、サーヴァがさつぱりこの記述に從つて呉れないので、ブラウザが仕方なしにこの記述を讀んでゐるだけです。

meta自體の記述をブラウザが讀取りに失敗する、と云つた事態も、ないとは言へません(UTF-16やUCS-4)。metaに「文字コード」を書けば安心、とは言切れません。この記述が出現するまでascii文字しか出現しないHTML文書ならば、取敢へず多くの場合、ブラウザは動作すると思はれますが、そこには何の保證もありませんので、注意して下さい。

使用するスタイルシート・スクリプトの種類

Style Sheet

<META http-equiv="Content-Style-Type" content="text/css">
Content-Style-Type屬性附きのmetaは、標準で使用するスタイルシート言語を指定します。CSSを使用するなら、上記のやうに記述しておいて下さい。JavaScript Stylesheetを使用する場合、どうすれば良いのか、私は知らないので、ここには何も書きません。

Script

<META http-equiv="Content-Script-Type" content="text/javascript">
Content-Script-Type屬性附きのmetaは、標準で使用するスクリプト言語を指定します。JavaScriptを使用する場合、上記のやうに記述しておいて下さい。VBScriptの場合には、text/vbscriptを記述しておいて下さい。

デフォルトのスクリプト言語を記述した場合でも、個別のscript要素で、type屬性に記述したスクリプト言語を使用する事は、可能です。

例によつて、http-equiv屬性附きのmetaですので、この手のデータは、HTTPヘッダで送れれば送つた方が、ベターと言へばベターです。まあ、仕樣と現實が乖離してゐる現状、何をどう書けば確實、とは全然言へませんので、どつちみち「念の爲」と云ふ事にしかなりません。

キャッシュ

例によつて、http-equiv屬性附きのmetaの話です。

HTTPヘッダでの指定

クライアントなどにリソースのキャッシュをさせたくない場合、サーヴァが送出するHTTPヘッダに、no-cacheが出力されてゐれば、クライアントはキャッシュからデータを讀込みません(仕樣では)。

HTTP/1.0
Pragma: no-cache
HTTP/1.1
Cache-control: no-cache

解説

このHTTPヘッダが附いて送られてくるHTML文書を、ブラウザはキャッシュしません(仕様では)。更新された内容を毎回読んでくれます(くれる筈です)。

metaでの指定

サーヴァの設定を直接弄れない場合、metaでサーヴァに指示を出す事が(仕樣上は)できます。

HTTP 1.0
<meta content="no-cache" http-equiv="Pragma">
HTTP 1.1
<meta content="no-cache" http-equiv="Cache-Control">

解説

HTTPヘッダでやつた方がスマートだ、と言はれますが、metaで書く事も出來なくはない、と云ふ話です。

しつこいやうですが、サーヴァやクライアントのプログラムにおける實裝状況により、この手の情報が使はれるか使はれないかは變化します。はつきり言つて「技術的には何も信じられない」と云ふのが現状です。結果として、メタ情報/meta/HTTPヘッダをきちんと使ふか使はないかと云ふ議論は、「律義な事をするか、手を拔くか」と云つた、技術者のプライドとか言論人の態度とか云つた「宗教」レヴェルの話になりかねません。

参考

Cache Control Tips
Perlスクリプトを改造しよう!
mod_nocache.c: Add "Pragma: no-cache" header
Netscapeのキャッシュ機構
http://www.java-conf.gr.jp/archives/servlet-ml/msg01313.html
http://www.java-conf.gr.jp/archives/servlet-ml/msg01314.html
[IE4] "Pragma: No-Cache"があるページがキャッシュから削除されない

參考資料