HTMLの書き方

はじめに タグ 気をつけること HTML 属性 アドレス 文字 要素 コメント DOCTYPE HTML4

はじめに

 HTMLは、ハイパーテキストマークアップランゲージの略なんです。簡単な英語ですが直訳すると「スゲ〜文章に印をつける言語」って感じですか?え?なんか違う?まあいいじゃないですか、細かいことは。

 まぁ、冗談はさておいて、ハイパーテキストっていうのは、簡単に言うと意味を持ったテキストです。何言ってんだオメ〜、文章に意味があるのは当然じゃねーかとか言わないで下さい。そりゃ、文章に意味はありますよ。でも、ここで言う「意味」ってのは、その文章の持っているパラメータのことです。例えば、「この花は赤い」という文章の意味は文字通り「ここに転がってるこの花の色が赤いぜ」なわけなんですが、ハイパーテキスト的な意味は、もしこれがタイトルとして存在する文章なら「タイトル」、駄文として存在する文章なら「駄文」ということになります。分かりますか?つまりHTMLは文章自身にあなたはどこどこのパーツだから、それなりの見え方をするように、と教えてあげるための方法なんです。

 さて、そろそろ本題に。これからHTMLの書き方を説明していきたいと思ってます。はい。市販のオーサリングツール(某ホーム○ージビ○ダーなど)をないがしろにするつもりはありませんが、手打ちはいいものです。うどんにしろそばにしろ、手打ちが一番です。HTMLも同じです。たかがHTMLを書くためだけに、高価な(一万円ぐらいですが)マシーン(ソフトのことですよ)なんか買う必要ないんです。その気になればどんなOSにも必ずついてくる程度のユルいテキストエディタで十分なんです。ようは、パソコンで文字が打てる環境があればいいんですから。

 これだけHTMLは簡単だ〜っていうニュアンスを匂わせておけば少しはとっかかりやすいでしょうかね。これでもまだ「だるいからいや」って人は、お金出してマシーンを購入してあげてください。そのほうが日本が不況を脱出できていいかもしれませんからね。

「たぐ」ってなんだろな

 HTMLは、地のテキスト文章にタグと呼ばれる一種の記号を書き込むことで、その文章に意味を与えた文章です。

 一般的にタグは区間を示して使いますから、区間の始まりと終わりを書き込む必要があります。区間の始まりを書き込むタグをとりあえず開始タグ、区間の終わりに書き込むタグを終了タグと呼ぶことにします。そして、意味を与えるための本体の部分を要素、その要素の細かい設定を属性と呼びます。呼ぶったら呼びます。

 早速ですが、ちょっとHTMLの例を見てみましょう。

<p>
<SMALL>ちっちゃな</SMALL>ころから悪ガキで、<EM>15</EM>で不良と呼ばれたよ。<BR>
ナイフみたいに尖っては、触るものみな傷つけた。
わかってくれとは言わないが、そんなに俺が悪いのか?
</p>

 この中にタグはいくつあるか分かりますか?まだ何も説明してませんが、大体の勘でわかるでしょう。7つです。ちなみに要素は四つあります。

 タグにはいくつかバリエーションがあります。<で始まって>で終わるものと、</で始まって>で終わるものです。前者が前に書いた開始タグで、後者が終了タグです。では、要素をみるにはどこを見ればいいのでしょうか。

 要素は、タグの中身に書き込まれています。pSMALLEMBRが要素になり、文章に意味を与える本体になります。属性もタグの中に書き込むんですけど、その話は少し後にします。

 えと、例に出したHTMLの解説を始めましょう。先ほど、四つの要素があるといいましたが、そのうちのP要素は、パラグラフ、つまり<p>から</p>までの文章が「1段落である」ということを明らかにする効果があります。同様に、<SMALL>から</SMALL>までの文章が「小さい」、<EM>から</EM>までの文章が「強い(エンファシス)」ことを明らかにしています。最後に残ったBR要素ですが、これは「改行」を意味するんですけど、見てのとおりセットで存在するはずの終了タグが存在しません。これはBRが特殊な要素で、終了タグが存在できないからです。直感的にも、「改行」は範囲を指定するようなものではないから閉じる必要なさそうだ、とわかりますね。

 では、実際に例文をブラウザで表示させるとどうなるかをみてみましょう。

ちっちゃなころから悪ガキで、15で不良と呼ばれたよ。
ナイフみたいに尖っては、触るものみな傷つけた。 わかってくれとは言わないが、そんなに俺が悪いのか?

 どうですか、お客さん。一段落ってのは見えなくても、「小さく」を指定した部分は小さく、「強く」を指定した部分は強く、改行を指定したところでは改行が表示されていませんか?見えていたら万歳、大成功、無問題です。

 ですが。問題は三行目でしょう。HTMLでは行を変えてあるのに、表示した文章では行が変らずに「傷つけた」と「わかってくれとは」が続いて表示されていませんか? もしかするとちょうどその部分にブラウザの端が来て偶然改行されたように見えるかも知れませんけど、それはまやかしです。ブラウザウインドウのサイズを大きくするか小さくするかすると、きっと改行位置もずれることでしょう。

 というわけで、その説明を次に行いましょう。

ちょっと気をつけよう

 さて、勘のいい人ならすでに気づいているかと思いますが、HTMLではエディタ上で地の文を改行しても、ブラウザ側では改行されません。そのために、改行専用のBR要素が存在しているんです。といわけで、このセッションではそのようなHTMLを書く上で気をつけなければならないことを書いていきます。

改行したつもりでは改行されない
上に書いてあるとおりです。画面上で改行させるにはBR要素を使うか、ブロック要素のタグを使います。
半角スペースはいくつ連続しても一つ分
日本語の文章では「半角スペースを無視」と言っているのにほぼ等しいです。これのおかげでリストやテーブルみたいな複雑なタグを書くときに整理しやすくなっています。なお、半角スペースを連続して表示させることもできます。後にある「特殊な文字」を見て下さい。
タグは半角英数字で
そのままの意味です。全角で書いても意味ないですから、タグを書くときにはIMEをオフにする必要があります。めんどくさ。
タグの中身は大文字小文字関係なし
これもそのまま。例えば、EM要素は<EM><Em><eM><em>の四通りの書き方ができます。全て意味は同じです。BlockQuote要素に至っては2048通りの書き方ができます。
意図しないところもタグになる
タグは間に改行(BR要素ではない)を含むことができます。つまり複数行にわたってタグが存在する場合がありますから、うっかりタグの開始記号である「<」を使ってしまうと、もしかするとそれより後ろのすべての文字をブラウザはタグと認識して、画面表示されないかもしれません。これを回避する方法もちゃんと存在します。後ろにある「特殊な文字」を見て下さい。

実際のHTML

 さて、いよいよ実際にHTMLを書いていこうと思います。これから書こうとする文章はHTMLですから、この文章がHTMLであるという意味を与えてあげる必要がありますから、そのものズバリの要素HTML要素をつけます。また、HTML文章のタイトルも指定しなければなりませんから、TITLE要素が必要です。そして、そのタイトル要素はヘッダと呼ばれる部分に書かなければなりませんから、HEAD要素も必要になります。そして、本文がなければ始まりませんから、本文を示すBODY要素も必要です。

 なんだかいろいろと注文をつけた形になりましたけど、実際にHTMLにすると次のようになります。

<HTML>
<HEAD>
<TITLE>タイトル</HEAD>
</HEAD>
<BODY>
本文
</BODY>
</HTML>

 これだけで、もう立派なHTMLです。あとはここに本文を書き加えてタグを書き込んでいけばお好きなHTMLが書けるわけですね。

属性の書き方

さて、前に「要素の細かい設定を属性と呼ぶ」と書きましたが、実際にはどうやって書くのでしょうか。このセッションではその辺のところをBODY要素を使って説明したいと思います。

<BODY bgcolor="#FFFFFF" text="#000000"
      Link="#FF0000" ALink="#00FF00" VLink="#0000FF"
      background="背景.jpg">

 BODY要素の属性はいくつかありますが、ここで指定したのは背景色を表すbgcolor属性、テキストの色を表すtext属性、リンクの色を表すLink属性などです。その他の属性についてはタグ一覧で確認してください。

 さて、例を見ただけで属性の指定方法がわかってしまったあなたは超天才です。すごい。そんな人はごく一部でしょうから、指定方法を説明します。

 「<」から「>」までがタグとして扱われることは前に書きましたから、この場合はこの例全体で一つのタグになります。そのタグの開始を表す「<」の後ろにくっついているものが要素で、この場合はBODYですね。

 今回は改行が無視される例もかねて途中で改行を入れたりもしましたが、一行に書いてしまってもかまいません。重要なのは属性の名前(この場合はbgcolortext)の後ろにイコールをくっつけて属性の値を「"」(ダブルクオーテーション)で囲って書く、というところです。そして、属性を複数書く場合は一つ以上の半角スペースを区切りに挟んで属性を書き連ねるということです。これだけわかればオッケーです。

 さて、注意深い人は二つ前のセッションで「タグは半角英数字で」と書いたのを覚えているかもしれません。そして、この例のタグの中に半角英数字でない文字、「背景」という文字が入っているのに気が付くかもしれません。が、これはこれでいいんです。確かに、タグの要素名も属性名も半角英数で書きますが、属性の値は半角英数と決まっているわけではないからです。そのためにダブルクオーテーションでくくっているといっても過言ではないほどです。

実は属性の値をくくるダブルクオーテーションですが、必須というわけではありません。属性の値が半角英数字および半角のコンマとハイフン(マイナス)AからZ、0から9、および.と-)の時は省略してもいいことになっています。ですが、いつ何の拍子にそれ以外の文字が入らないとも限りませんから、いつもくくるクセをつけておきましょう。HTML4ではコロン(:)とアンダーバー(_)を含んでも省略可。

 さて、話を戻しますが、このように属性をずらずら書き連ねたBODY要素の終了タグはどうなっているんでしょうか。正解は

</BODY>

これだけです。何の属性も書かなかったときと同じですね。

属性は開始タグにかきこんで、終了タグはなにもいじらなくていいんです。終了タグに書き込んでもブラウザはそれを解釈してくれませんよ。

色の書き方

 HTMLで色を指定するとき(bgcolor属性など)、その色を表す方法はいくつかあります。このセッションではその方法に付いて書きます。

まず、次の例を見て下さい。

<FONT color="lime">緑</FONT>
<FONT color="#0F0">緑</FONT>
<FONT color="#00FF00">緑</FONT>
<FONT color="00FF00">緑</FONT>

実際に表示すると

となります。

 ブラウザにはどう表示されているでしょうか。一応、HTMLで定義されている色の指定方法は、一番と三番の方法なのですが。こちらで試したところでは、IEとNN4は2番が、NN6では4番が認識できませんでした(HTML4.01Transitionalの場合。HTML3.2と指定したときは2番が不可?)。

 では、それぞれがどのような方法なのか説明します。

 まず、一番の方法ですが、これは色のネームトークンを利用した方法です。定義されている色は次のとおりですが、ブラウザによってはその他のネームトークンも認識します。(その他のネームトークンについては色見本を参照)

Black  = #000000    Green  = #008000
Silver = #C0C0C0    Lime   = #00FF00
Gray   = #808080    Olive  = #808000
White  = #FFFFFF    Yellow = #FFFF00
Maroon = #800000    Navy   = #000080
Red    = #FF0000    Blue   = #0000FF
Purple = #800080    Teal   = #008080
Fuchsia= #FF00FF    Aqua   = #00FFFF

 次に、二番目の方法。これはスタイルシート(CSS)で色を指定するときの色コードの書き方なので、本来ならHTMLでは使用できない方法です。が、NN6はこれを解釈できます。形式自体は簡単なもので、シャープの後に赤っぽさ、緑っぽさ、青っぽさが続いています。いわゆる一つのRGBってやつです。ちなみに三桁ですから、4096色しか使えない計算になりますね。

 三番目の方法。これがHTMLでの一般的な色の指定方法になります。CGやってる人は馴染み深いでしょう。頭にシャープをつけたRRGGBB形式(sRGB)の24ビットカラーで、1677万色使えます。使えますがそのまま表示されるかどうかはパソコン次第です。ただ、1677万色もつかえるので、何をしていすればどんな色になるのか良く分かりません。魔導実験室にはカラーエディタがありますから、それを使えば簡単に色コードを求めることができます。宣伝だっ。

 最後の方法でちゃんと色が表示されるのは、ブラウザがエラー処理で、痛みに耐えてよくかんばった結果ですから、感動してもそれに甘えてはいけません。ちゃんと頭にシャープをつけてあげましょう。

 ま、大事なことはお気に入りの色を見つけたらそれをどうやって調べるか、ってことですな。カラーエディタを使ってイメージに近付けていくのも手だし、ブラウジング中に見つけたいい色のソースをみて自分のものにするのも手だしね。

アドレスの書き方

 HTMLではリンクを書くときや画像を表示する時など、href属性src属性にインターネットアドレス(URLとかURIとか言われているアレです)を書かなければいけませんね。このセッションではその方法に付いて書きます。

 まず一つは、バカ正直にhttp://〜と書く方法。これは絶対アドレス指定と呼ばれている方法です。他人様のページにリンクするときはこの方法を取らざるを得ませんが、アドレスの半分以上が同じ自分のページ内へジャンプする時にわざわざこんなに長いのを書いてはいられません。そんなときには次の方法を使います。それは、相対アドレス指定と呼ばれている方法です。

 相対アドレスとは、現在表示されているページのファイルが置いてあるディレクトリ(フォルダ)から見て、目標のページのファイルが何段上とか何段下とかを指定する方法です。

 例えば、href="../index.html"とすると、一段下のindex.htmlが目標のアドレスになります。例えば、このページのURLはhttp://www.geocities.co.jp/Playtown-Denei/2996/hp/html.htmlだから、../index.htmlhttp://www.geocities.co.jp/Playtown-Denei/2996/index.htmlと同じ意味になります。(BASE要素を使えば自分がどこのフォルダのファイルか擬装できたりもしますがあまり使う必要はないでしょう)

 さて、いきなり妙な記号「../」を使ってしまいましたけど、この記号は、自分の一段下を表すための記号です。似たようなものに「./」があって、こちらは自分と同じ階層を表します。普通は、最初にhttp://と書かなければ頭に「./」がついてるのと同じ状態になるので省略します。そしてもう一つ、意外と知られていないですが、「/」だけを頭に付ける方法も存在します。この場合は何段下とかではなく、ドメイン直下を意味します。つまり、このページから/index.htmlを参照すると、http://www.geocities.co.jp/index.htmlが呼び出されます。二段下を表す方法は単純に「../../」 でオッケーです。一段上を表すにはそのままフォルダ名をくっつければいいです。sample/index.htmlみたいに。二段下から一段上がって・・・というのも../../sample/index.htmlのように書くことができます。

 そして、大事なこと。鉄の掟として、URLでは大文字小文字が完全に別物として扱われます。綴りはあってるのにうまく表示されない時はこの辺を疑ってください。拡張子だけ大文字になってたり、ってのは結構良くある話です。普段から小文字か大文字にそろえておけば問題ないですね。

 次に大事なこと。webサーバは大抵、index.htmlは省略できるようになってます。フォルダ参照するとindex.htmlが表示されているだけですが、つまり「./」とだけ書けば./index.htmlが参照されるようになっているわけです。この時index.htmlがなければ、geocitiesではエラー表示しますが、大抵のサーバはファイルリストを表示します。狙ってやるならいいですが、それ以外のときはフォルダにindex.htmlがないと痛いことになるかも知れないので注意してください。

 その次に大事なこと。ほとんどすべてのユーザーエージェント(ブラウザのことです)では、http://www.geocities.co.jp/Playtown-Denei/2996/http://www.geocities.co.jp/Playtown-Denei/2996/index.htmlhttp://www.geocities.co.jp/Playtown-Denei/2996同じファイルを参照させられているのに別のファイルをダウンロードしたつもりになってそれぞれ別にキャッシュ(溜め込み)を行います。これは読み込みのムダを発生させる原因になるので、どれか一つの方法で統一しましょう。私的な推奨は始めの方法です。./a.htmla.htmlはちゃんと同じファイルとして扱ってくれるので心配要りません。)

特別な文字

 HTMLでは半角スペースは区切り、<>はタグの文字など、役割のある文字がいくつか存在します。それらを表示するにはそのまま書いたのではブラウザが混乱してしまいますね。そこで、それらの文字を表示する仕組みが用意されています。文字実体参照と呼ばれている方法です

使い方は簡単で、表示したい文字の代りに次の表の文字を入れるだけです。

表示したい文字 書き込む文字 実際の表示
ダブルクオーテーション &quot; "
アンパサンド &amp; &
左カギ &lt; <
右カギ &gt; >
非改行半角スペース &nbsp;  
太スペース &emsp;
細スペース &thinsp;
スペース &ensp;
コピーライト &copy; ©
レジストレーション &reg; ®
はーと &hearts;
すぺーど &spades;
くらぶ &clubs;
だいや &diams;

注意。最初の5つはともかく、残りは全部ちゃんと認識されると思わないほうがいいです。つまり、最初の五つ以外はあまり使わないように。表のほかにもいろいろありますが、きりがないのでこのぐらいで。

ブロック要素・インライン要素?

 実験室のタグ一覧を見るに当たって少し補足的な内容を。HTMLで使用するタグ(要素)には大きく分けてブロック要素インライン要素の二つがあります。

 ブロック要素というのは、P要素やHR要素、テーブルやリスト、フォームなどで、表示される時に始まりと終わりで改行されます。ブロック(箱)だから。だからP要素で改行できたりします。また、ブロック要素の中にはインライン要素もブロック要素も入ります。(場合によっては指定要素以外は入らない場合あり)

 インライン要素はA要素やフォント(スタイル)制御系などで、ブロック要素と違って改行されたりはしません。インライン要素の中にはブロック要素は入りませんがインライン要素は入れられます。

 実は空要素と言うものもありますが・・・BR要素やIMG要素みたいな終了タグを書いてはいけない要素のことです。これはインライン要素に含めてタグ一覧を書きました。

コメントってどう書くの?

 HTMLを書いてる途中で、メモ的なものを書きたくなることがあります。後のための布石や、定型文章(テーブルとか)の雛型などを。そういう時、コンピュータプログラムではコメントアウトという方法で、その一角を本体から隔離できるわけですが、これと同じようなことはHTMLではできないのでしょうか?

 正解は、できます。といっても、コメント専用の要素があるわけではなく(IEにはあるけど)、SGMLの仕組みを使ってコメントアウトするんですけどね。

 まぁ、SGMLがどうたらこうたらいうのは一般人は分からなくてもいいので(私も良く知らない)、こうすればコメントが書ける、というのを説明しましょう。

<!--と-->で囲んだ部分がコメントになります

コメントは普通次のように書きます。太字のところがコメントになります。

実は私は<!--大犯罪者-->だったのです!
何をしたかって・・・それは <!-- 万引き こそ泥 強盗 殺人 エトセトラ と複数行にまたがってもおっけーです。 --> 秘密です。

DOCTYPEって・・・?

 実は、HTML文章の頭にはDOCTYPE宣言文というのが必須なんです。

 が、そのことについて全く触れませんでした。それは、ほとんどのユーザーエージェント(ブラウザですよ)がDOCTYPE宣言を気にしないからです。でも正式なHTMLを書こうと思うとどうしても必要になるんです。とりあえず現時点ではNN6は若干この宣言文を気にしている節があります。例えば、HTML4.01Transitonalを指定すると<FONT>タグをHTMLとして解釈しますから色指定は六桁あれば解釈してくれますがHTML4.01Strictを指定するとどうもXML的な解釈がされているような気がします。スタイル的な色指定方法ができるし。まぁNN6のコード見たことなんかありませんからあくまでも勘ですが。

というわけで、DOCTYPE宣言とやらの例を見てみましょう。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
          "http://www.w3.org/TR/html4/loose.dtd">

 DOCTYPEというのは文章型のことで、この宣言文をHTML文章のあらゆるタグより前に書かなければいけません。つまり、<HTML>の前に書かなければいけません。

 また、これは型の宣言ですから、なんでもかんでもネコも杓子も上の例の宣言文を貼り付ければよいかというとそうは問屋が卸しません。上の例はHTML4.01Transitonalという形式でかかれたHTML文章だよ、と書いてあるのです。ここに書いた形式によって、ある要素は使うことができなくなったりもします。この場合は、じつはフレーム使えません。さらに・・・

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
          "http://www.w3.org/TR/html4/strict.dtd">

と書くとFONTとか使っちゃいけません。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
          "http://www.w3.org/TR/html4/frameset.dtd">

とかけば、フレームが使えます。といってもこれを書くのはフレームの親になるファイルだけです。その他のファイルには最初の宣言文でいいでしょう。

 素人HTML書きが頭を悩ませることでもないのでとりあえず最初のやつを書いておけばいいかもしれません。てゆーか現実問題として書かなかったからといってどうなるものでもなさそうなので書かないのも手ですね。ただ、これをちゃんと(間違った使い方をせずに)かければ、「俺ってHTML知ってんだぜ」と威張れます。

実験室のタグ一覧でフレームその他に分類されてるもの以外を使うんなら、最初のやつで多分おっけーですが。

HTML4.0

 HTMLにはいくつかバージョンがあって、私は3.2 か4.0、4.01あたりが主流になっているんじゃないかと思ってます。2.0てのも見かけないでもないですけど。

 で、このセッションはその中のHTML4(4.0と4.01)に付いてちょっと書こうかと。

 HTML4では見栄え的なことは全部スタイルシートで書く事になってます。見栄えというのは何も色や大きさに限定したものではなく、マージン幅やボーダーの幅、果ては自動改行制御からブロック要素のセンタリングや右寄せなどもです。だから、DIV要素のalign属性でセンタリング、って方法は非推奨です。

 実際にどうやるかはスタイルシートについて調べて見て下さい。我々素人HTML書きはみんなが使ってるブラウザ(IEとかNNとか)でとりあえず意図的に表示される程度でいいんじゃないでしょうか。最大多数の最大幸福といって、民主主義の原則です。


戻る
魔導実験室。