前回: なおさん亭::別館: ニフティホームページでCGIを(3).
前回では、簡単なCGIスクリプトで、CGIを実際に動かしてみるまでを確認してみました。今回からは、実際に稼働させる目的を持ったCGIを作ってみます。@HompageでCGIを動かすための概要だけ知りたいという人は、この先を読む必要はありません。独自のCGI作りに励んで下さい。
第1回目で書きましたが、@HompageでCGIを作ろうとしたきっかけは、私のジャンクネタである「BCL資料室」のリニューアルをしようということでした。古い仕様では、HTMLですべてのコンテンツを扱おうということになっていましたが、1枚1枚のサムネール画像にいちいち拡大画像へのリンクを張るのも面倒だし、JavaScriptでちょっとしたアクションを付加するにも、それぞれのサムネール画像にその記述を行うのも面倒です。アクションを変更しようと思ったら、すべてを書き換えねばなりません。そこで、CGIの出番となったわけです。
幸い、@Hompageでは自作のCGIを置くことができるようなので、さっそくその仕様について勉強しました。これについては、第2回でまとめたつもりです。
さて今回は実践編になるので、実際のHTMLページ、CGIスクリプトをベースに話を進めた方がよいかと思います。まず、「BCL資料室」の一部のページを表示させてみます。
リンク: 国内放送(中波) – BCL資料室 – なおさん亭::本館.
ここには、「北海道」から「沖縄」までのリンクが並んでいますが、これらのリンクをクリックすると、指定した地方にある放送局のカードの一覧が表示される、ということを考えます。まずは、一覧を表示するCGIスクリプトを作る必要がありそうです。このCGIスクリプトは、bcl_list.cgiと名付けましょう。各地方で共通してこのCGIを呼び出すようにするので、どの地方が指定されているかという情報をCGIスクリプトに与えなければなりません。このように、CGIスクリプトに渡す情報は、「クエリ」(query)と呼ばれます。各地方の名称にマウスポインタを移動させると、リンクに設定されているURLが確認できるはずですが、最後の方に「?district=hokkaido」と付いている部分がクエリです。
CGIスクリプトbcl_list.cgiは、district=hokkaidoという文字列を受け取りますので、districtすなわち地方がhokkaidoすなわち北海道だと知ることができます。すると、CGIスクリプトが次に知りたいと思うことは何でしょうか?北海道にある放送局の一覧を知りたいと思うでしょう。そうでないと、一覧を表示させることはできませんからね。そのために、各地方に対応した情報のファイルを用意します。たとえばhokkaido.txtというファイルを用意しておき、そこに必要な情報を書き込んでおけば、CGIスクリプトbcl_list.cgiがそれを読み込んで自動的に一覧が表示されるようにします。地方名を表すhokkaidoなどに拡張子.txtを付けるだけに決めておけば、クエリで渡されたものをそのままファイル名に使えるので便利そうです。
bcl_list.cgiは、たとえばhokkaido.txtを読み込み、そこに書かれている情報に従って、サムネール画像を含むHTMLを書き出していけばよさそうです。ここで重要となるのは、hokkaido.txtがどのようなルールに基づいて書かれているか?ということです。CGIスクリプトというプログラムで処理する以上、一定のルールが必要になります。このルールの出来不出来で、CGIスクリプトの複雑さが変化しそうです。ですが最初からベストなルールを決められるはずもなく、スクリプトを実際に書きながらの試行錯誤になります。
次回は、実際のスクリプトと情報ファイルをもとに、さらに具体的に書いてみることにします。