この連載は Ruby も CGI も知らないけれど、CGI プログラムを作ってみたいという人を対象に、Ruby プログラミングの基礎とともの CGI プログラミングを解説します。
この記事を読んでいる皆さんは CGI プログラムに興味があるのだと思います。 皆さんが CGI プログラムを作りたいと思った理由は何でしょうか? 人によってその理由は様々だと思いますが、 大まかに二つに分かれると思います。
一つ目の理由は Web ページに動きが欲しいということです。 通常、 HTML だけで Web ページを作った場合、 そのページを何回表示させても内容は変化しません。 CGI プログラムを使うえば、 アクセスのたびに違う内容の Web ページを表示させることが出来ます。
二つ目の理由は他人の投稿を受け取るということです。 CGI プログラムと HTML のフォームを組み合わせれば 利用者が書いた文章を受け取ることが出来ます。 HTML だけではこうした事は出来ません。 チャットや掲示板は 投稿を受け取る CGI プログラムの代表的なものです。 皆さんも一度は利用したことがあるでしょう。
この連載では皆さんと一緒に CGI プログラムを作成し、 それを通じて CGI プログラムの作成に 必要な知識や技術を身に付けてもらいたいと思います。
この連載の最終目標は以下のとおりです。
HTML を書ける人が自分のサイトに自作の掲示板 CGI プログラムを設置する。
CGI プログラムを作りたいと思う人の多くは 掲示板を最初の目標とします。 CGI プログラムに馴れた人にとって掲示板はさほど難しくありませんが、 初めて CGI プログラムを作る人にとっては荷の重い課題です。 CGI プログラムの作成では最初に覚えなければならない約束事が多く、 それを覚えながら一緒にプログラミング (プログラムの作成) についても 覚えようとすると混乱してしまうからです。
そこで、この連載では幾つかの段階に分けて 掲示板プログラムに挑むことにします。 連載第一回の今号では 最初に練習用の CGI プログラムを 3 つ作り、 さらに HTML を表示するだけの CGI プログラムと ランダムに画像を表示する CGI プログラムを作ります。 そうやって少しずつ CGI プログラミングと Ruby プログラミングに 馴れてもらい、連載の最終回では掲示板を作るところまでもっていきます。
このやり方は少々まだるっこしいことも確かです。 掲示板の作り方くらいさっさと教えて欲しいと思う人もいるでしょう。 ですが、さきほども書いたようにそれでは一度に 覚えなければならない知識が多過ぎるのです。 少しずつ身につけていけばなんでもない事でも、 一度にたくさん覚えようとすると壁になってしまいます。
今号では本当に簡単なプログラムしか作りません。 皆さんの中には「こんな小さなプログラムを作ってどうするんだ」 と思う人もいるでしょう。 でも、どんな小さなプログラムでも、 自分で作ってそれが自分の思うように 動くということは楽しいことです。 今号で学ぶ事は多くありませんが、 その範囲であっても CGI を使わなければ 出来なかったことが出来るようになります。 いったん学んでみれば、色々と応用例も浮かぶことでしょう。
この連載は次のような読者を対象とします。
Ruby の知識、CGI の知識は問いません。
一つ目の条件は HTML を作成出来ることです。 この連載は HTML を理解し、自分で作成出来る人を対象に書かれています。 もし、HTML を理解しているかどうか自信が無いのでしたら、 HTML について書かれた別の文章を先に読んで下さい。 今号の最後に HTML を解説した文章へのリンクがあるので、 参考にしてみて下さい。
二つ目の条件は CGI プログラムを作る環境として Windows を使うことです。 検証済みの Windows は 98/2000/XP ですが、 その 3 つ以外のバージョンの Windows でも動作すると思います。 連載の中では Mac OS X や UNIX 系 OS については触れません。
この連載は Ruby による CGI 入門ですが、 さきほども述べたように Ruby や CGI に関する知識はこの連載で解説するので必要ありません。
最初に CGI そのものについて考えてみましょう。 長々と説明しても疲れるので、結論から先に言うと、 CGI はプログラムを実行するための枠組み です。 所々で掲示板やチャットのことを CGI と書いてある Web ページを見かけますが、 正確に言えばそれは間違いです。
掲示板やチャットは CGI という枠組み (約束事、ルール) に則ったプログラムであり、 CGI そのものではありません。 これから皆さんが作るのも CGI プログラムです。 CGI という約束事は勝手に作れませんからね。
CGI と CGI に則ったプログラムとを区別するために 掲示板やチャットのようなプログラムは しばしば「CGI プログラム」と呼ばれます。 この連載でも CGI の枠組みに従って作られたプログラムを 「CGI プログラム」と表現します。 また、CGI という枠組みそのものを指す時には 「CGI」という言葉を使うことにします。
CGI の具体的な説明は連載中に少しずつ行いますので、 今はそういう枠組みがあるんだなあと思って下さい。
次に Ruby について触れておきましょう。 ここでは Ruby の紹介と Ruby が CGI プログラムの作成にどう役に立つのかを説明します。
皆さんが読んでいるこの記事は「るびま」 という Ruby の雑誌に掲載されています。 この Ruby が何かということですが、 一言で言えば Ruby は プログラミング言語と呼ばれるものの一つです。
プログラミング言語というと堅苦しい感じがするかもしれませんが、 大雑把に言えばプログラムを作るための言葉です。 私たちが話す言葉とは少々違いますが、 文法や規則のようなものもあります。
今述べたように Ruby はプログラミング言語ですから、 Ruby で プログラムを作ることが出来ます。 CGI プログラムは CGI というルールに従ったプログラムなので これも Ruby で作ることが出来ます。 図にすると下のような関係になります。
私達が話す言葉に日本語、英語、フランス語、……と たくさんあるようにプログラミング言語にもたくさんの種類があります。 CGI プログラムは CGI というルールに従ったプログラムですから、 CGI というルールに従えばどのプログラミング言語でも CGI プログラムを作ることが出来ます。 たくさんの種類のプログラミング言語の中から Ruby を選んだ理由は以下のとおりです。
Ruby の作者である まつもとゆきひろ さんは使いやすさを重視して Ruby を開発しており、Ruby を使ったプログラム作りは容易です。 また、CGI プログラムでは頻繁に文字列の処理が必要となり、 文字列処理を得意とする Ruby とは相性が良いと言われています。
プログラムがプログラミング言語で書かれているというのは 先ほども述べました。 一般にコンピューターはプログラムに書かれている言葉を理解して、 その言葉どおりに動きます。
ところが、コンピューターは Ruby の言葉を そのままでは理解出来ません。 そのため Ruby で書かれたプログラムを動かすには Ruby の言葉をコンピューターが理解する言葉に 翻訳する必要があります。 例えて言えば、Ruby の翻訳機のようなものです。
Ruby の翻訳機がなければ Ruby の言葉でプログラムを書いても プログラムとして使うことが出来ませんし、 当然、プログラムを作ることも出来ません。 Ruby の翻訳機の入手方法については次のページで説明しますが、 Ruby のプログラムには Ruby の翻訳機が必要なんだということを 覚えておいて下さい。
これまでに 2 つの Ruby が出てきました。 プログラミング言語としての Ruby と 翻訳機としての Ruby です。 両方とも Ruby と言うので、 紛らわしいかもしれません。 しかし、一般にその二つを区別して書くことは少ないので、 この連載でもそれぞれに対して同じ Ruby という表記を使います。