■ CGI を使うには 
説明の中心は「Perl」です。「PHP」も自分でスクリプトを組んでる人には人気なんですが、ここでは初心者向けの説明なので、割愛。「PHP」も実行の拡張子が決まってるときがあったり……注意点がないわけじゃないけど、 自分でスクリプトが組める人は、そんなの知ってるし。(^ ^;)
CGI(シージーアイ)とは?
CGI(Common Gateway Interface)は、ブラウザとサーバーの間でやりとりして、Web上での双方性を生かす仕組みといえます。従来のHTMLページは、情報を一方的にユーザーに与えるだけでしたが、CGI を使うことによって、ユーザー側からの情報を生かしたページを作れるようになりました。
CGI を動かすには、「CGIプログラム(スクリプト)」と呼ばれるプログラムが必要です。言語は、「Perl(パール)」「PHP(ピーエイチピー)」「Ruby(ルビー)」「C(シー)」などが有名で、無料スクリプトとしてよく配布されているのが「Perl」です。サーバ側も「Perl」使用を前提としているし、一番使われているので、利用しやすいです。
■ CGI の危険性
このように、ユーザー側からいけば、常に受身だったHTMLに比べ、CGI を使うと、情報の流れが双方向になります。つまり、ユーザー側から情報が発信(書き込み)可能になるわけです。ちなみに、こういう「読み込み・書き込み・実行」など、ユーザー側の権限(やっていいこと)を設定するのが、「パーミッション」の設定です。
で、こういう権限がユーザー側にあるのは、ある意味、非常に危険です。CGI素材で、タグの使用を禁じているスクリプトが多いのは、このせいです。タグ使用を有効にすると、サーバーダウンを狙ういたずらが可能になったり……ありとあらゆる破壊工作が可能になるからです。悪意を抱いたユーザーと、良識を持ったユーザーの区別なんか、誰も判断できません。権限を与えてしまえば、どんな人にも平等に権限が与えられ――早い話が、「荒らし」「情報漏洩」「ページ改ざん」が身近に迫る可能性が高くなるということです。CGI を使うときは、便利さに潜む危険性についても考えた上で使用しましょう。
必須知識
ちらっとスクリプトを見た感じ、「Perl」は初心者でもとっつきやすいプログラム言語のように思います。わかりやすいリファレンスを買って覚えれば、自分で設置することも可能だと思います。プログラミングができなくても、無料で使えるスクリプトがたくさん配布されているので、そういうのを使うのもいいでしょう。スクリプトを使うには、最低限、パーミッションの変更・FTPについてや最低限のインターネットの仕組み、ディレクトリ構造やパス指定、すっごく簡単なプログラミング知識(画像ファイルへのパスを自分で書き換えるくらいは出来ないと困る (^ ^;) )が必要なので――本当の初心者の場合は、無料で借りられるレンタルなどを借りるのが最適です。
あと、CGIは動作が非常に重いです。このため、サーバ側で CGI に規制をかけているところが多くあります。そもそも、サーバ仕様が、CGIが動きやすい・動きにくい(設定しやすい・しにくい)という感じて、スペースごとにピンキリなんですが、その上、CGIを無限においていい・なるべく置くな、こちらが用意したのだけ設置OKとか、制限もいろいろあります。レンタルサーバーを借りるときは、こういうサーバーの仕様や制限についても考慮して選ぶといいです。また、無料のホームページスペースでは、やたらとCGI設置が難しい(サーバ仕様がそうなってる)場合が多いです。覚悟しましょう♪
絶対、これだけは知らないと設置できない!
▼ Perl までのパス
CGI を処理する実行ファイルがどこにあるのかを指定しています。多いのは、#!/usr/local/bin/perl 次いで #!/usr/bin/perl かな? と思うんですが、このパスを間違っていると、絶対CGI は(SSIも)動きません。CGIを設置したいサーバの「Perl」までのパスを、一番はじめに確認してください。お使いのサーバによって異なります。
※必ずスクリプトの一行目にないとまずいし、この指定パスの前後に空白を入れただけで実行できなくなるくらい、うるさい指定です。(^ ^;) CGI設置に失敗したら、まず最初にここを確認ください。
▼ CGI の実行ディレクトリ
どこでも実行OKというサーバならいいんですが、「ここじゃないと動かない!」と、けっこううるさいことをいうサーバもあります。確認しましょう。そして、そのサーバの指示通りの場所で実行しましょう。
※あと、よくある制限に、「cgi-bin 以下に画像ファイルが置けない」というのもあります。画像ファイルを使うCGIで、画像だけが表示されない場合は、画像ファイルを cgi-bin とは別のディレクトリ(フォルダ)に移してください。./cgi-bin/images じゃダメだけど、./images と指定すれば、問題なく表示されることが多いです。セキュリティの関係で、この制限が効いてるサーバは非常に多いです。
▼ パーミッションの変更
ユーザー権限(アクセス権)の設定です。ユーザ(u:ファイルやディレクトリの所有者)、グループ(g:ファイルやディレクトリの所有者と同じグループに属するユーザ)、その他(o:それ以外のユーザ)と、権限を設定する対象が三つに分かれています。それぞれ、「r(Read:読む)」「w(Write:書く)」「x(eXecute:実行」を設定します。
変更の方法
FTPクライアントソフトで行います。「属性変更」という機能があるので、それで変更してください。具体的には、どのソフトを使っていても、リモート側のファイルにマウスを当て、右クリック→「属性」とかを選ぶと変更できると思います。権限内容を見てチェック印をつけたり外したりして設定もできるし、ダイレクトに数字でアクセス権を入れてもいい。CGI素材屋さんだと、アクセス権の数字があると思うので(「755」とか8進指定されてる数字)、それを入れてください。
サーバの制限で、パーミッション値がCGI素材屋さんが指定した通りに出来ない場合は、サーバによっては、そのCGI実行が不可能な場合があります。でも、パーミッション値は、指定値以外はダメってわけじゃないので、けっこう動いたりするんですけどね。セキュリティ上、優位になるように、わざと数値を変えて設定したけど、ちゃんと動いてるし。(私が使ってるサーバだと、パーミッション値が小さいほど、セキュリティ上優位になる (^ ^;) )
※CGIスクリプトを配布しているサイトでは、実行ファイルを <755>、データファイルを <666> と設定しろと書かれている場合が多い。で、パーミッション値を、755→700、666→600 と小さく設定したんですけどね、私は。(動かなくなったのは、リンク集だけだった。掲示板とかはちゃんと動いていた)
▼ アップロード時の注意
オーナー権限とかの関係で、ユーザディレクトリにCGIスクリプトを転送動作させるためには、そのユーザのアカウントで ftp しないといけない。つまり管理者権限じゃダメなときがある。←意味不明なら、すっ飛ばしてください。
あとは、転送モードがあってないともちろんダメ。バイナリモード(.jpg/.gif)、アスキーモード(.html/.cgi)はほとんど自動だけど、たまに、jcode.pl がバイナリモードで転送されてしまってエラーになることがあるらしい。
▼ その他の基本的な知識
ディレクトリ構造とパス指定は、とらぶるれすきゅーの「ホームページを作る上でのトラブル」を参照ください。インターネットについては、てらこやでござーいの関連ページを参照ください。あとは、画像ファイルのこととか、そういう基本的な知識もあるといいかも。
具体的なCGI設置の注意事項
CGIで可能な機能は、「アクセカウンター」「フォームメール」「掲示板(BBS)」「チャット」「ショッピングカード」「アクセス解析」「ランキング」「サーチエンジン」など、数え上げたらキリがありません。ここでは、無料スクリプトを設置するときの、ちょっとした注意点を書いておきます。
一般的な傾向として、初心者向けのスクリプト(設置に関して、説明が事細かに書かれているサイト)は、初心者向けです。見た目、すごいと思うような素材で(フラッシュが被さってるような)、設置説明も少ないサイトは、上級者向けです。自分のレベルにあった素材を選んだほうが、最初から嫌にならずに済むと思います。もちろん、やる気があれば、何でもありだとは思いますが。(笑)
■ カウンター
テキストカウンター、画像(グラフィック)カウンターの二種類あります。「CGI」+「SSI」で動くものと、CGI単独で動くものもあります。「SSI」が必要なものは、サーバの仕様を確認ください――SSIが使えないサーバがあったり、実行の拡張子が決められている場合があるので(「.shtml」のように)。画像カウンターの場合は、「GIF」ファイルを使うことになると思うんですが、インターレスGIFとかアニメーションGIFとかはダメな場合が多いので、何のへんてつもないGIFファイルを使うようにしましょう。
カウンターを表示させたいときは、HTMLページに、カウンターを呼び出すタグを埋め込みます。SSI使用のときは、SSIのコマンドで呼び出します。「#exec」(コマンドの実行)とか、「#include」(外部ファイルの取り込み)とかを使うようです。CGI単独のときは、img タグで実行するCGIをリンク指定します。SSI使用でも、画像カウンターなら、imgタグのほうで表示します。(詳しいタグは、配布サイトの説明を参照ください)
■ フォームメール
「sendmail」を使ったものが多いです。その場合、「sendmail」の使用が認められたサーバーじゃないと動かないので、まずそれを確認してください。サーバによってはサポートされてないし。……ま、その分、CGIを設置しなくても「フォーム」を使える簡易機能がサポートされてるときもありますけどね。
で、CGI側の設定が必要なのと、HTML側の formタグの埋め込みが必要なのが面倒なところです。formタグの action で実行する CGI を指定して、input・textarea・select・option 属性とかで、入力する項目を指定して……とか、ややこしいです。でも、一度設置に鳴れてしまえば、簡単だってことに気づきます。