World Wide Web の仕組み(3)

共通科目情報処理(上級)、インターネットの仕組み、2004年01月19日

                                       電子・情報工学系
                                       新城 靖
                                       <yas@is.tsukuba.ac.jp>

このページは、次の URL にあります。
http://www.coins.tsukuba.ac.jp/~yas/ipe/inet-2003/2004-01-19
あるいは、次のページから手繰っていくこともできます。
http://www.coins.tsukuba.ac.jp/~yas/ipe/
http://www.coins.tsukuba.ac.jp/~yas/
http://www.ipe.tsukuba.ac.jp/~yshinjo/

■復習

■今日の重要な話

■スタイルシート

HTML は、「本来は」、文書の構造を記述する。

HTML で記述できる文書の構造:

HTML では、文書の構造を記述することができるが、「表示の方法」 を記述することは、本来はでない。 ワープロは、紙に印刷した時の、このような表示の方法を設定す るためのプログラムである。

表示の方法:

表示の方法を記述するには、スタイルシートを用いる。

■カスケーディング・スタイルシート

◆例

見出しを青くする。
H1 { color: blue; }

◆カスケーディング・スタイルシートで記述できること

段落書式 文字書式 箇条書き イメージ その他:

◆スタイルシートを書く場所

HTML のヘッダに書く。
<HTML>
<HEAD>
<TITLE>タイトルです。</TITLE>
<STYLE TYPE="text/css"><!--
(ここにスタイルシートを書く)
--></STYLE>
</HEAD>
別ファイルに書いて読み込む。 スタイルシートのURLは、filename.css のようなファイル名が多い。
<HTML>
<HEAD>
<TITLE>タイトルです。</TITLE>
<LINK rel="stylesheet" type="text/css" href="スタイルシートのURL">
</HEAD>
<HTML>
<HEAD>
<TITLE>タイトルです。</TITLE>
<STYLE TYPE="text/css"><!--
@import url(スタイルシートのURL);
(ここにスタイルシートを書く)
--></STYLE>
</HEAD>

複数 @import することもできる。 複数のスタイルは、混ぜられる(カスケード)。 対立する定義は、後から出てきた方が有効になる。

HTML のタグの属性として書く。宣言部分だけ。

<P STYLE="color:#444444">文。文。文。</P>

コメントは、/**/ で括る。 C言語やJava言語と似ている。 コメントは、デバッグ時など一時的に無効にしたい時にも使える。

◆基本的な文法

次のような規則の並び
セレクタ  { 宣言;  }
セレクタ, セレクタ, ..., セレクタ { 宣言;宣言;宣言;  }
1つひとつの宣言は、次の形式。
プロパティ:式
「式」には、数、文字列、%、単位つきの長さ、URL などが書ける。

◆書式の有効範囲(セレクタ)

クラス(class)ごと、IDごとの場合は、次のタグで範囲を指定する。 クラスとは、似たような要素の集まり。 同じクラスの要素は、似たような書式になる。 ID(identifier) は、全体の中で1つだけ。

H1	{ color:blue; } /* <H1></H1> だけ */
UL LI   { color:blue; } /* <UL></UL>の中の <LI> だけ*/
OL > LI { color:blue; } /* <OL></OL>の直接の子供の <LI> だけ*/
H1 + P  { color:blue; } /* <H1></H1>に隣接する <P> だけ*/
 *      { color:blue; } /* 全ての要素 */

.important    { color:blue; }  /* class="important" と指定したものだけ */
P.important   { color:blue; }  /* <P class="important"></P> と指定したものだけ */
#n10          { color:blue; }  /* id="n10" と指定したものだけ */

P:first-line   { color:blue; } /* <P></P> の中の最初の行だけ */
P:first-letter { color:blue; } /* <P></P> の中の最初の1文字だけ */
A:link    { color:blue; } /* 未訪問のリンク */
A:visited { color:blue; } /* 訪問済みのリンク */
A:active  { color:blue; } /* アクセス中 */
A:hover   { color:blue; } /* カーソルを重ねた時 */

◆書式設定の考え方

余白、境界、パディング(詰め物)がある四角い箱。
  ┌──────────────────────┐
  │       余白             │
  │ ┌──────────────────┐ │
  │ │     境界           │ │
  │ │ ┌──────────────┐ │ │
  │ │ │   パディング      │ │ │
  │ │ │ ┌──────────┐ │ │ │
  │ │ │ │ 内容       │ │ │ │
  │ │ │ └──────────┘ │ │ │
  │ │ └──────────────┘ │ │
  │ └──────────────────┘ │
  └──────────────────────┘

        │ エレメントの幅  │
  │      ボックスの幅          │

◆WWWページデザインの手順

  1. HTML で全部の表示したい内容を記述する。
  2. スタイルシートを埋め込み、見栄えを調整する。
スタイルシートをうまく活用すると、見た目を一度に調整できる。 いちいち <font> で指定すると、変更したくなった時には、 全部変えなければならない。 <span class="classname">のように、クラスを使ってマークして おけば、1個所クラスの設定を変更するだけで全部統一的に変る。 (同様に、ワード・プロセッサでも、スタイルをうまく活用したい。)

注意点

複数のブラウザ(違うバージョンも含む)で表示を確認したい。

◆CSSの利用例

その他、次のページが参考になる。 とほほのスタイルシート入門

■CGIとフォーム

WWW サーバは、普通は、ファイルに保存された HTML データやイメージ・データを 読み込み、WWWブラウザに返する。 CGI (Common Gateway Interface) では、ファイルが読み込まれる代わりにプログラムが実行され、その実行結果 がブラウザに返される。

Gateway とは、WWW で使われている HTTP というプロトコルへの入り口という 意味。 プログラムの実行結果は、普通は、HTML にすることが多いが、普通のテキス トであることもイメージであることもある。

クライアント、WWWサーバ、CGIによるプロセス、ファイル

図? CGIの仕組み

「プロセス」とは、実行中のプログラム。

CGI の利用例

◆CGI

CGI になるファイル名のパタン


/cgi-bin/name
/dir/name.cgi

◆CGIとセキュリティ

CGI は、プログラムを実行するので、セキュリティに細心の注意を払ながら利 用する必要がある。CGIで実行されるプログラムにバグ(誤り)があると、重要 なデータが盗まれることがある。

筑波大学教育用計算機システムでは、主サーバ(www.ipe.tsukuba.ac.jp)では CGI は使えない。CGI を使うためには、 申請して副サーバ (www2.ipe.tsukuba.ac.jp)を使う。

◆フォーム

ブラウザからサーバに情報を送ってほしい時には、 フォーム(form) という機能を使う。 を考えます。 HTML記述例:
<FORM ACTION="http://www.u-ust.ac.jp/cgi-bin/adduser" method="post">
    <P>
    姓: <INPUT type="text" name="lastname">
    名: <INPUT type="text" name="firstname"><BR>
    <INPUT type="radio" name="sex" value="Male"> 男 <BR>
    <INPUT type="radio" name="sex" value="Female"> 女 <BR>
    <INPUT type="radio" name="sex" value="Others"> その他 <BR>
    電子メール: <INPUT type="text" name="email"><BR>
    <INPUT type="submit" value="send"> <INPUT type="reset"> 
    </P>
</FORM>
表示例:

姓: 名:


その他
電子メール:

<FORM></FORM> で括られた部分が1つのフォームになる。

<INPUT>の部分が、ブラウザからサーバに送られるデー タを表わす。

send ボタンが押されると、ブラウザは、 HTTPの POST メソッドを使って、サーバにデータを送る。

サーバは、それを受け取ると、指定されたプログラムを実行する。 実行されたプログラムは、 環境変数と標準入力 (ともに、プログラムにデータを与える方法の種類) から データを受け取ることができる。

環境変数

REQUEST_METHOD
	データを送るのに使われたメソッド。POST か GET。
	GET は、普通のページを得るものと同じ方法で、長いデータは送れない。
SCRIPT_NAME
	プログラムの名前。
QUERY_STRING
	URLの指定で「?」以下に指定された文字列
メソッドとして POST が使われた時、標準入力からは、 <FORM></FORM>で指定されたパラメタを受け取ることが でる。

このデータは、「&」で区切られた 「フィールド名=」の並びになっている。

例:

lastname=姓&firstname=名&sex=Male&email=who@u-ust.ac.jp
環境変数 CONTENT_LENGTH からは、データの長さが得られる。

メソッドとして、GET が使われた時には、 環境変数 QUERY_STRING に 「&」で区切られた「フィール ド名=」の並びが含まれている。

送られてくるパラメタの中に漢字など含まれていた場合、 「%hh(2桁の16進数)」 という形になっている。

これを元にもどすには cgiparse というプログラムや perl の命令 hex() が使われる。

■SSI (Server Side Include)

SSI (Server Side Include) は、CGI よりも手軽にHTML の途中に、他 のファイルの内容やプログラムの実行結果を埋め込むための仕組。

SSI が使えるシステムでは、 file.html の変わりに file.shtml とすると、 SSI の機能が働くようになります。

例1: ファイルの内容の読込み

<!--#include file="filename"-->
例2: プログラム/bin/calの実行結果の埋め込み
<PRE>
<!--#exec cmd="/bin/cal"-->
</PRE>
例3:ファイル file.shtml の更新時刻の表示
最終に変更されたのは、
<!--#config timefmt="%Y/%m/%d %H:%M:%S"-->
<!--#flastmod file="file.shtml"-->
です。

◆SSIとセキュリティ

SSI を使う時にも、CGI と同様に、 セキュリティに気をつける。 特に、 `#include'`#exec' で、大事なファイルが盗まれないように、細心の注意を払ながら利用する必要 がる。

筑波大学教育用計算機システムでは、SSI は使えないような設定になっている。

■Javaアプレット

Java アプレット(applet) とは、 Javaというプログラム言語 で書かれたプログラムの一種。

画面に何かを表示する機能があり、WWWブラウザ上で動く。 Javaアプレットを使うと、アニメーションを作ったり、 CGI を使わずにユーザとの対話できる。

CGI では、プログラムは、WWWサーバが走っているコンピュータで動くが、 Javaアプレットは、プログラムはブラウザの上で動く。

◆Javaアプレットのタグ

Javaアプレットは、HTML からみると、 インライン・イメージと似ている。 Javaアプレットのためのタグは、 <APPLET></APPLET>

HTML記述:

<APPLET CODE="rctext.class" WIDTH="500" HEIGHT="50">
<PARAM NAME="message" VALUE="hello,world">
与えたメッセージが動き回るJavaアプレット。
</APPLET>
表示例:

与えたメッセージが動き回るJavaアプレット。

CODE属性で、Javaアプレットを保存している ファイルのURL(ただし、同一ホスト内)、 WIDTH属性で、幅、 HEIGHT属性で、高さを指定する。 <PARAM>タグを使えば、アプレットに オプションを渡すことがでる。

<APPLET></APPLET>の間には、 Java Applet に対応していないブラウザのためのテキストを書く。

ソース・プログラム

Java言語については、 共通科目では別の講義がある。

■アクセス制御

■実習

◆課題6 HTMLとCSS による WWW ページの作成

HTML と CSS で WWW ページを作成しなさい。 まず 前回の課題 を完成させ、それをコピーしなさい。 コピーしたページに対して、スタイルシートを含めなさい。 上の条件を満たす WWW ページを作成したら、その URL を 講義の掲示板 に張り付けなさい。

注意:自分の ホーム・ページ である必要はない。課題を満たすために、どこからもリンクが張られていない 孤立したページを作ってもよい。

締め切りは、2004年1月27日火曜日とする。


↑[もどる] ←[1月13日] ・[1月19日] →[1月26日]
Last updated: 2004/02/01 23:06:34
Yasushi Shinjo / <yas@is.tsukuba.ac.jp>