買い物かご 掲示板 メール DB 利用規定 FAQ サポートBBS


次(SSI)
前(---)
最初に知るべきこと
CGIことはじめ
CGI設置ノウハウ
Basic Top
Make CGI

Home



CGIとは? --CGIことはじめ--

■CGI

CGIとはホームページ上での何かしらの自動処理を実現するための仕組みです。
正確には、ホームページに自動処理を施すために、Perlなどのプログラミング言語で書かれた、プログラムの一種です。

また、CGIとPerl(あるいはperl)の違いだとか色々細かい説明も必要なのですが、ここでは割愛します。その辺のことを知りたい人は別のサイトで勉強してください。(そこから入ると初心者が逃げるので・・・)

原則としてUNIXと言われるOSで動作しますが、WindowsやMAC版のPerlとHTTPサーバーソフトをインストールすれば動作します。インストール方法については、それぞれのソフトの解説を読んでください。最近は、解説本が出版されていたり、たまに雑誌で特集が組まれていることがあります。

ただし、契約しているサーバー(UNIX)上では動いてもWindows上では動かない場合もあります。(メール送信とか・・・)


CGIを作るプログラム言語

CGIを作るためのプログラム言語として、「Perl」「C」などがあげられます。当サイトは元より、ほとんどのCGIスクリプトは、編集の簡単なPerlで作成されています。ここで、PerlとCで作成されたCGIの違いを少し説明します。今後さまざまなサイトからフリーのCGIをダウンロードしたり、専門業者に作成を依頼したときに役立つでしょう。

■C言語

WordやEXCELなどのアプリケーションと同じように、プログラムのソースコードをコンパイルしているため、スクリプトの改造ができません
改造どころか、あらかじめ決められている個所を除く、設定の変更や、デザインの変更もできません。そのため、有料で配布している高額なCGIスクリプトや、ソースコードを見られて真似をされたくないスクリプトの場合は、Cで作成されていることが多いようです。

また、Cで作成されているCGIスクリプトを許可していないサーバーもあります。これは、ソースが見えないため、どんな動作をするスクリプトなのか、サーバー管理者が把握できないためです。

■Perl

当サイトは元より、フリーで配布しているCGIは、ほとんどがPerlで作られています。
PerlでCGIを作ったり、設定を変更するために、特定のソフトは一切不要。メモ帳があればOKです。
また、初期設定では変えられない細かなカスタマイズも、perlの文法さえ知っていれば簡単に行えます。

その代わり、高価な商用スクリプトのように、勝手に改造されたり配布されては困る場合には向いていません。


CGIだけではできないこと

■メール送信

CGIは、契約しているサーバーが許可している限り、UNIX上のさまざまなソフトを利用できます。その代表が「sendmail」です。

「sendmail」が使えないサーバーではこのスクリプトは動きません。と注意書きされていますが、メールを送るCGIスクリプトは、メールプログラムにデータを渡すことしかできないので、このような注意書きがされているのです。

サーバー側が「使えない」と言っている以上どうあがいても使うことはできません。

■データベース

ホームページ上で顧客管理をしたり、ユーザーごとのページを自動生成したりするスクリプトのニーズが多いようです。スクリプトアイデアで最も多かったオーダーでしたが、はっきり言って私には作成できません。

これは、私のスキルの問題もありますが、CGIを作成するPerlという言語には基本的にデータベースの仕組みがない(あるにはあるけど実用にならない)からです。

いくつかの商品を登録しておいて、キーワードで検索させる使い方であれば、CGIだけで動作しますが、これとて、全てのデータをメモ帳で開ける「テキストファイル」として保存し、そのデータを一行ずつ読み出しているに過ぎません。

当サイトも含め「データベース型スクリプト」と言われているものは、本当のデータベース(MSアクセスのような)ではありませんので、会社で使っているアクセスで作った顧客管理システムのようなものは、作成できません。

最も、PostgreSQL MySQL Oracle等のUNIX上のデータベースシステムをサーバー側が公開していて、それらと連動できるPerlのモジュールがインストールされていれば開発は可能です。今では、PHP+MySQL(PostgreSQL)でデータベースを作成するためのノウハウ本がたくさん出版されています。Webデータベースに関する限り、CGIよりもこちらのほうが主流となるでしょう。PHPの高度な買い物かごシステムやWebメールシステム、検索システムがフリーで配布されています。

以上の言葉の意味がわからない場合は、フリーのスクリプトで実現しようとは考えないほうがいいでしょう。仮に配布しても設置はほぼ不可能です。(わかる人がいれば別ですけどね)

■時間を決めた自動処理

特定の日、時間に特定の処理をする(毎日05:00に一斉にメールを配信するとか)ことはCGIだけではできません。

この処理を実現するには「Crontab:クーロンタブ」と呼ばれる設定ファイルが必要です。通常クーロンタブを使用可能にしているレンタルサーバーはありませんので、原則として時間指定でスクリプトを実行することは不可能と思ってください。もちろん、サーバー側で許可していれば可能です。

もし使えた場合でも、フリーとして公開はできません。数秒ごとにアクセスログを取るみたいなものを設置した日には、あっという間にサーバーの契約を解除されますからね。

 


CGIを設置する前に

いまどき、CGIを使えないプロバイダやレンタルサーバーはないと思いますが、念のため、CGIを使えるかどうかを、契約前に確認したほうがいいでしょう。

中には、業者側で用意しているスクリプトしか使えなかったり、設置する前に、業者側でCGIのチェックを行うため、アップロードしてから使えるようになるまで、若干のタイムラグを生じるところもあるようです。さらに、メールを送信するスクリプトが一切使えないところもあります。

プロバイダのホームページ領域を使う場合、HTMLファイルをおくサーバーと、CGIをおくサーバーが分かれていることがあります。
たとえば、HTMLファイルが「www.ogipogi.ne.jp」で、CGIが「cgi.ogipogi.ne.jp」などと指定されている場合です。この場合は、CGIの初期設定を変更する必要がありますので、注意してください。

プロバイダ、レンタルサーバーによっては、チャットを禁止しているところがあります。チャットは、同時に複数のユーザーがアクセスすることを前提としているので、人気のチャットページがひとつあると、他のホームページへのアクセス速度が落ちたり、最悪サーバーが停止する可能性があるからです。利用規定に「チャット禁止」とかいてある場合はあきらめましょう。


CGIの動作確認

フリーのCGIスクリプトを使うときは、気にすることはありませんが、スクリプトを改造した場合は、必ず動作チェックを行うことを忘れないように。できれば、「Active Perl」と、「ANHTTPD」のようなWebサーバーソフトを導入して、自分のパソコンをWebサーバーにしてしまい、そこでチェックしてからアップロードしたほうがよいでしょう。

自分のマシンでチェックしたほうが、スピードは速いし、電話代はかからないし、いろいろ試せるし、「Active Perl」と、「ANHTTPDは是非導入しましょう。(「Active Perl」は英語版です。ページも英語です。でも、英語のだめな私でもインストールできたので、心配はありません。)

Active Perl:http://www.activestate.com/ActivePerl/download.html
ANHTTPD:http://www.st.rim.or.jp/~nakata/


Web寺子屋 OGIPOGI E-mail:info@web-terakoya.net
Copyright© 2000-2001 OGIPOGI All Rights Reserved.