CGIのしくみ
いろいろとCGIを自分のページで使う方法を書いてきたんだけれど、
実際にCGIっていったいどんなものなのかを知りたいよね。
単に、掲示板やカウンターを使うにはCGIを使うって覚えておくだけでもいいんだけれど、
せっかくだから、もう少しだけ詳しく知っておこう。
タイトルには「CGIのしくみ」って書いてるけれど、そんなに難しいことまでしないので気楽に読んでいってね。
いろんなところでも書いているけれど、
CGIっていうのはどういう特徴があるのかというと、
サーバー上でファイルの読み書きができるというのが一番大きなところかな。
通常、ホームページを作るときに使うのが、
HTMLとかJavaScriptとかだよね。
これらはファイルを読み込むことはできるけど、書き込むことはできないんだ。
(厳密には言語自体にそういう機能が無いといったほうがいいのかな。あまり深く考えずにね。)
HTMLやJavaScriptを自分のホームページ上で見ようと思ったら、
サーバーにファイルをアップロードして、それをみんなに見てもらえるようにURLというページのアドレスを知らせてみてもらうんだよね。
この時に、普段あまり深くは考えてないとは思うけれど、
ホームページのURLを教えるというのは、ページを友達やその他いろんな人に見てもらうためだよね。
自分のページを編集(書き換え)してもらおうと思って教えるわけではないよね。
だから、ホームページを作るための言語は読み取り専用(つまり見ることしかできない)でも問題ないんだ。
で、さっきも言ったようにHTMLやJavaScriptというのは読み取り専用なんだけれど、
はじめは読み取り専用でも問題ないので(ページを見てもらえればいいから)、
HTMLなどの言語だけを使ってホームページを作っても問題ないよね。
(この辺でもちょっと間違ってるところがある。でも、はじめはこんな感じでイメージでつかんでいって欲しい。)
でも、いろいろページを作っていくと、こちらから情報を提供したいだけではなくって、
見ている人の意見を聞いたり、ページの企画に参加してもらったりといろいろとして欲しいことが出てくるよね。
メールとかでいろいろと情報をもらってそれを管理人がページに反映して・・・ってやっていってもいいけど、
はじめはいいけれどページが大きくなっていろんな人が投稿したりしてきたら、管理人は大変になってしまうよ。
それに、単純にユーザーからしても書き込みをしてすぐにページに反映された方がいいよね。
じゃあ、ユーザーによってページを反映するためにはどうしたらいいかをを考えてみよう。
例えば、一つの誰もいない教室があったとするね。
その部屋は誰でも入ることができるんだけれど、
今まで何人がその部屋に入ったのかをいつでもわかるようにしておかなければならないんだ。
さっきも言ったように誰もその部屋にいないとしたら、どうやって人数を数えたらいいと思う?
答え(?)はそんなに難しくなくて、教室に何か書くものを用意しておいて、
1番に教室に入った人は紙に"1"って書くようにして、
次に入った人は書かれている数字を1つ増やして"2"をその紙に書いておけばいいね。
そのようにして次の人は"2"に1つ数字を増やして"3"とするという決まりを作ってみんながそのようにすると、
いつでもその紙を見ると今までその部屋に入った人の人数がわかるよね。
(この考え方はホームページのカウンターの仕組みによく似てる。
わかるとは思うけれど、もし紙に今までの人数が記録されていなかったら当然自分が入ったときに何番目かわからない。)
じゃあ、今出てきた教室の考え方で人数を数えるのに最も重要な部分はどこかというと、記録するための紙だよね。
そう、いろいろな人が集まる場所で何かを記録として残しておくためには、
誰でも書き込んでいい記録用紙を準備しておく必要があるんだ。
それをホームページで考えると、サーバーを教室と考えて、記録用紙をファイルと考えると、
今までのような読み取り専用だけでなく、ユーザーが書き込みもできるファイルが必要になるんだ。
でも、単純に誰でもページの変更ができるとなると、必要の無いところまで勝手に変更できるから大変だね。
そこで、一般のユーザーが直接ファイルは書き込めないけれど、
ユーザーの書き込みによってプログラムで書き込みができるファイルを用意しておこう。
そのためには、ページを書き換えるためのプログラムが必要になるよね。
その時に使える一つの言語がCGIというものなんだ。
実はCGIというのは言語の名前ではなくて、ある言語を使って作られたものがCGIというものなんだ。
まあ、例えると「HTMLを使ってホームページを作る。」と言うように「****を使ってCGIを作る。」って言えるんだ。
いろいろと長くなったけれど、まとめると以下のようになる。
・ CGIというのは言語の名前ではなく、あるプログラム言語を用いて作られたものを言う。
※ Perlを使ってCGIを作る
・ CGIの主な特徴はファイルを読み書きできることである。
※ ファイルにいろいろと記録しないといけないからね
・ ファイルは誰にでも読み書きできるのは困るので、プログラムでのみ読み書きできるようにする
※ これがパーミッションの考え方につながる。パーミッションについては後ほど解説予定。
あまり深く覚える必要は無いので、
とりあえず以上の3つをイメージでいいので知っておくようにしよう。