ニフティホームページでCGIを(2)

前回: なおさん亭::別館: ニフティホームページでCGIを(1).

前回は、何かプログラミングをやりたい、だったら手軽なCGIで、ということだった。今回は、ニフティホームページでCGIを実現する方法について書こうと思う。ニフティホームページとは@Hompageのことで、ニフティの会員であれば誰でも使うことのできるホームページスペースだ。Lacoocan(ラクーカン)という高機能なサービスもあるが、とりあえずオプション料金なしで使える@Hompageを使うこととして話を進めていく。

さて最初に思ったのは、@HompageではCGIが使えるのかしら?ということである。こういう大手のプロバイダでは、CGIが使えないか、使えてもあつらえもののCGIしか使えないことが多い。私の使っているある地元のCATV系のプロバイダでは、掲示板やメール送信フォームなど、あらかじめ用意されたものしか使えない。大昔から使っている別のプロバイダでは、CGIの使用に特に制限はない。この違いはどこから来るかというと、単なる方針といってはそれまでだが、CGIが作り方によってはサーバに大きな負荷をかけることがあることに理由がある。ある人がサーバに負荷をかけるCGIを動かしてしまうと、同じサーバを使用している別の人に迷惑がかかることがある。最悪の場合、サーバがダウンしてしまう可能性もある。こういった理由から、CGIの使用に制限をかけているプロバイダが多いのは事実だ。

@Hompageでは、無制限というわけではないが、自作のCGIを動かせるということだ。とすれば、CGIを動かすための情報を調査しなければなるまい。CGIを動かそうとする場合、最低限以下のような情報を知っておく必要がある。

  1. サーバOSのタイプ(UNIX系か、Windows系か)
  2. 使用できるスクリプト言語(shやPerlなど)
  3. その他の情報

1の項目は非常に重要だ。これによって、CGIの作り方が根本的に変わるからだ。ただし、ほとんどのプロバイダはUNIX系のOSを使っており、@Hompageも例外ではなかった。なので、UNIX系OSにCGIを置く一般的な技法がそのまま使える。

2も重要だが、あまり一般的でないスクリプト言語を使おう、ということでもない限り心配する必要はないだろう。たいていのUNIX系OSでは、sh(シェルスクリプト)もPerlもサポートするからだ。Perlは、CGIを作るときの定番とも言える言語で、これが使えなくてCGIをサポートします、と言ったら詐欺になるだろう。

3は、プロバイダ特有の情報や制限があれば、しっかりと把握しておこうということだ。@Hompageの情報には、以下のようなものがあった。

  1. ホームページのサーバと、CGIのサーバが異なるので、URLが変わってくる。
  2. Perlの置き場所は、/usr/local/bin/perlである。
  3. Perlのバージョンは、5.8である。
  4. CGIから、ホームページのデータに直接アクセスできない。

1は、@Hompageならではの事情で、これによって他の制限が生まれてくると言ってもいい。@Hompageに置いたホームページのURLは、たとえば「http://homepage2.nifty.com/nao3/」というようになるが、CGIを呼び出すときには、「http://hpcgi2.nifty.com/nao3/」となる(数字や「nao3」の部分はユーザ毎に違う)。URLだけ見たら別のサイトを意味するから、CGIからホームページ上のデータにアクセスするには、URLを使うしかない。PerlでURLを使ってアクセスするのは面倒だから、事実上できないと思っていた方がいい。できるのは、CGIからホームページ上のデータ(画像等)にリンクを張るくらいである。これくらいに思っていた方がいい。

2は、知っておいて下さいレベルの話である。CGIの本体であるPerlスクリプト先頭の「シェバング」と呼ばれる部分に書く情報だ。「このCGIは、/usr/local/bin/perlを使って動かしてね!」という一種の伝言と思っていればいい。

3は、Perlのバージョンによっては、使える機能に差があるので注意しようということだが、バージョンの差が気になるほどのプログラムをCGIで書くことはさほどないと思われるので、5.8なのか、そうか、新しいね、程度の認識でいれば問題ない。

4は、1にも関連するが、同じサーバにあると見なされないので、データにアクセスするにはURLを使うなど面倒なことになる。@Hompageの場合、データ転送のためFTPでログインすると、/cgi-binと/homepageが見えて、これはそのままhpcgi2.~とhomepage2.~に対応している。なんだ、同じサーバにあるじゃないか、と見えるのは見えるだけで、実際には別のサーバになっている。なので、CGIからパスを辿って、ホームページ上のデータにローカルアクセスすることはできない。これはかなり不便で、CGIで直接使いたいデータファイルなどは、CGI側のサーバに置かなければならない。

さて、まとめておこう。

  • サーバOSは、UNIX系だ。
  • 使用できる言語は、shとPerl。
  • Perlのパスは、/usr/local/bin/perlである。
  • Perlのバージョンは、5.8である。
  • CGIを呼び出すときのURLは、hpcgi?.nifty.com/user/となる(?は数字)。
  • CGIのサーバでの置き場所は、/cgi-binである。
  • /cgi-bin以下から、/homepage以下への直接のアクセスはできない。

ここまで情報を集めたら、次は組んでみるだけなのだが、長くなったので次回。

続き: なおさん亭::別館: ニフティホームページでCGIを(3).

コメント