CGIを使ったWebページ
Webの話題
1999.09.16
注:このトピックは、分割表示バージョンを開発する前(一括表示バージョンのみで公開されていた時)に書かれました。(1999.12.25)
Webページを、単に見るだけのものでなくインタラクティブなものにするための手法として、「SSI」や「CGI」というテクニックが使われることをご存じの方も多いだろう。私の手元にある解説書にも、CGIによって、アンケート処理やアクセスカウンタやゲームなどが実現できる、と書かれている。これに限らず、ちまたの解説書で、まるで「SSIやCGIはインタラクティブのためにある」かのような物言いを目にすることがよくある。事実そのように誤解している人も多いかも知れない。しかし私はそれに異論を唱えたい。
CGIやSSIは、何もインタラクティブの専売特許ではない。それが証拠に、今ごらんになっているこのページ、実はこれはHTMLファイルではなく、CGIの出力である。
http://www.letre.co.jp/~iwaki/essay/index.html というファイルには、実は下記の1行しか書いていない。
<!--#exec cgi = "essay.cgi"-->
詳しい方にはピンと来ると思う。そう、これはSSIである。これを見て、SSIの知識のある方なら、このページは「essay.cgi」を直接呼び出すことによっても表示されるのでは、と思うことだろう。その通りである。納得したい方はどうぞ下記のURLを試してみてほしい。
では、このCGIで何をやっているかというと、「複数のファイルの連結とタグの付加」を行っているのである。このページは一つのHTMLファイルではない。このページでの連載は、冒頭の「はじめに」を入れると今回で6回目だが、原稿は各回ごとに別々のファイルになっている。つまり、今ごらんになっているこのページは、6つ(=今回執筆時点)のファイルがCGIによって整形&連結されたものなのである。しかも原稿となる各ファイルは完全なHTMLではなく、中途半端なタグ入りテキストで書かれている。例えば、これが今回の原稿である。このような原稿ファイルがCGIによって連結、整形されて、今ごらんになっているような体裁で表示されているわけである。具体的には、このCGIは以下のような処理を行っている。
- 各原稿の一行目を集め、<LI>や<A>を適宜付加して目次を生成する
- こうして出来た目次の次に、順に原稿を表示していく
- 各原稿は下記のルールで書かれているので、これに沿うように適宜タグが付加される
- 一行目にタイトル
- 二行目にサブタイトル
- 三行目に日付
- 以下、空行でパラグラフを区切って書く。空行で挟まれた文字列(パラグラフ)には、自動的に前後に<p>、</p>が付加される。
- タグはそのまま書けば有効。「<」や「>」といった文字を書きたいときは「<」「>」のように実体参照を書く。
- 改行したいときは、ただ単に改行する。その部分には自動的に<br>が出力される。
- ただし「<」で始まるパラグラフには<p>、</p>は付加されず、改行時の<br>も出力されない。つまり、パラグラフが終わるまで(次に空行が出現するまで)何も付加されない。
上記の原稿のルール、一見えらく複雑に見えるかも知れないが、私には一番書きやすいルールである。つまり、原稿は自分の一番書きやすい形で書き、決まり切った整形はCGIにまかせる、という考え方なのである。この方法を採用したことで、連載の文章を書く労力が大幅に軽減された。このシリーズをこのペースで続けられているのも、そして、このページに文法ミスがほとんど無いのも、すべてCGIを導入したおかげである。
「労力を軽減できる」−−これこそ、コンピュータを使う最大の利点だと思うのだが、この点に着目してSSIやCGIの解説がされることが少ないのは、ちょっと残念なことだと思っている。
私の結論:SSIやCGIの使用をインタラクティブな部分に限定するのはもったいない。