基礎からわかる!パソコン入門・再入門 / 無料パソコン教室・基礎知識・Word・Excel・PowerPoint

ウェブページの仕組み(5) ~ CGIとは ~

ラウザの機能だけでは表現しきれないコンテンツやファイル形式、サービス等を表現するために、プラグインをブラウザに追加して機能を拡張することができます。

しかし、基本的にはブラウザの機能拡張であり、表示や表現の幅を広げるもので、主に文字や画像、音声、動画の再生に利用されます。

一方、多くのウェブサイトで見かけるように、アクセスカウンタやBBS(電子掲示板)、ショッピングカートなどのように、ユーザーとの間でデータのやり取りをするような複雑な仕組みはブラウザの機能拡張では実現できません。

また、ウェブページを構成するHTMLファイルもただのテキストファイルであり、HTMLだけでも表現することはできません。

なぜなら、こうした個々のユーザーとデータをやり取りする仕組みやコンテンツは、ユーザーとWWWサーバとの間でデータのやり取りが行われているということだからです。

つまり、ウェブサイトを訪れた個々のユーザーが、WWWサーバに何らかの働きかけを行うことで、WWWサーバにその結果を返してもらって、それが表示されるという仕組みが必要になるためです。

例えばアクセスカウンタは、訪れるたびにカウント数が増えて行きます。こうした仕組みは、WWWサーバとやり取りできなければ管理できるはずもなく、HTMLだけで実現することはできません。

このように、HTMLファイルにインタラクティブな機能を付加するためには、HTML言語以外のプログラム言語を組み合わせた別の仕組みが必要になります。

代表的なものが、

CGI(シー ジー アイ)

と呼ばれる仕組みです。CGIは「Common Gateway Interface」の略で、インターネットで最もよく利用されている仕組みのひとつです。

CGIは、先述のアクセスカウンタや電子掲示板、オンラインショッピングの他にも、アクセス解析、フォームメール、投票、ランキング、ゲーム等に利用されています。

CGIの仕組みは、まず、訪問者のカウントやショッピングの金額計算といったHTMLでは処理できないプログラムを作成して、WWWサーバに保存 しておきます。

このプログラムは、

CGIプログラム

と呼ばれ、HTML言語以外のプログラム言語で記述されています。(Perlという言語が多い。詳しくは後述します)

このCGIプログラムは、WWWサーバに保存しておくことで、WWWサーバで統括的でなおかつユーザー個別的に処理を行うことができます。

一方、HTMLファイル側(ウェブページ側)には、このCGIプログラムを呼び出すトリガー(記述)を埋め込んでおくのです。例えば、そのページにアクセスしたり、ボタンをクリックしたりするとCGIプログラムが実行されることになります。

そして、WWWサーバで処理が行われて結果が返されてきます。その結果はHTMLファイルに読み込まれて(新しいHTMLファイルとなって)表示されるというわけです。

下図は、アクセスカウンタを例に、CGIの仕組みを解説した図です。

CGIのイメージ

このように、CGIによってHTMLでは表現し得ないインタラクティブなウェブページを実現することができます。情報をやり取りするようなページでは必ずといっていいほど使われている技術です。

しかし、そんなCGIにも短所があります。

CGIプログラムはWWWサーバ上で実行されるので、そのプログラムにエラー(誤動作やプログラムミス)があると、WWWサーバの動作に影響を与えてしまうということです。

つまり、個人でWWWサーバ(自宅サーバ)を立ち上げて、ウェブサイトを公開しているのであれば何ら問題はありませんが、多くの個人は、契約しているプロバイダのサーバや、レンタルサーバ を利用しているため、

そのサーバを利用している多数のユーザーが迷惑を被る

可能性があるということです。万一、CGIプログラムの悪影響でサーバが停止してしまうようなことになれば、損害は計り知れません。

したがって、プロバイダのサーバやレンタルサーバでは、そのサーバが許可しているCGIプログラムしか設定することができないことがほとんどです。つまり、

CGIプログラムを自作しても自由に設定できるわけではない

という制約があるのです。

また、サーバのデータベースを検索したりするようなCGIの場合、処理量が多くなってサーバに負荷がかかり、パフォーマンス(処理速度)が低下することもあります。この場合も、多くのユーザーに迷惑がかかってしまいます。

CGIプログラムを自作する場合は、プログラミングに十分注意して、また自分のコンピュータで何度も動作チェックすることはもちろんですが、契約しているサーバがそのCGIプログラムを許可しているのかを確認しておく必要もあります。場合によっては、サーバの変更も必要になります。

ただ、多くのサーバでは、いろいろな種類のCGIを用意してくれているので、初心者でも簡単にCGIを設定して、インタラクティブなページを作成することができます。上級者でない限り、CGIプログラムを自作する必要なないでしょう。

このように、CGIはウェブの可能性を大きく広げてくれる仕組みですが、わずか一人のプログラムミスで何万人規模のユーザーに影響を与えてしまう可能性がある、もろ刃の剣でもあります。契約しているサーバをよく確認して、許可されていないCGIを使用することのないように十分注意してください。

さて、それでもCGIプログラムを作成してみようと思われる方のために、簡単にCGIプログラムの記述について説明しておきます。

CGIプログラムは、HTML言語以外のプログラム言語で作成されると先述しましたが、最も多く使用されている言語は、

Perl(パール)

と呼ばれるプログラム言語です。PerlはCGIのための言語というわけではありませんが、もともと文字列の検索や抽出といった文書処理等を行う言語だったので、HTMLと相性が良く、HTMLと組み合わせて使われることが多い言語です。

簡単に説明すると、プログラム言語には、「コンパイラ方式」と「インタプリタ方式」があります。

コンパイラ方式は、コンパイラと呼ばれる翻訳ソフトが、記述した言語を一括して機械語(コンピュータが直接処理できる0と1の2進数)に翻訳(変換)してCPUに処理させます。

一方、インタプリタ方式は、インタプリタと呼ばれる翻訳ソフトが、記述した言語を一行一行、機械語に翻訳してその都度CPUに渡して処理させます。

このような翻訳処理の違いによってプログラム言語は大別されますが、基本的に「コンパイラ方式」は大規模なソフトウェアやツールの開発に用いられ、「インタプリタ方式」は小規模な処理を行うプログラムの作成に用いられています。

コンパイラ方式は、高機能で処理は高速だが習得に時間がかかる、インタプリタ方式は、簡易的でコンパイラ方式より速度は劣るが習得しやすいといった特徴があります。

おわかりのとおり、Prelは、インタプリタ方式 のプログラム言語になります。Perlは習得しやすく、インタプリタ(翻訳ソフト)をサーバに置くことができるので、CGIには最適と言われています。

※ 正確には、インタプリタ方式の言語はプログラム言語ではなく、「スクリプト言語」と呼ばれています。つまり、プログラム言語とはコンパイラ方式の言語を指します。

ページトップへ戻る


関連情報&オススメ

『ニューズウィーク』は『タイム』とともに世界的に購読されているアメリカのニュース雑誌です。日本に関する記事は少ないですが、世界的な視点で編集されており、国際社会の様々な価値観を知ることができます。

様々な意見を取り上げ、いい意味で画一的でないので、私は、毎週読んでいくうちに「自分自身の考え」を持てるようになりました。国際情勢や経済、地域紛争などについて、自分がその歴史や背景、登場人物を認識していて意見できるくらいの知識を得ることができるようになったと思います。

読み始めた当初は、ほとんどのことが理解できないくらい難しい内容に感じました。たとえば、円高や金利などの経済の仕組みや国際社会の地政学的な背景などの基礎知識がなかったからです。しかし、「毎週全部の記事を読む」「わからないことはネットで調べる」と自分に決め、一年間読み続けたらなんとか理解できるようになり、記事を読むのが本当に楽しくなりました。

また、日本のメディアにはない視点に立って書かれている記事が多いので、感心させられることや考えさせられることも多々あります。例えば、日本では「クジラ食文化」は断固として守らなければならないという視点で記事が書かれますが、「クジラを食することを文化としてる日本人はどれだけいるのか」という視点から記事が掘り下げられていきます。

そこには、画一的な報道からでは見えない「気づき」があります。多角的な視点を持つことで、ニュースの裏に透けて見える矛盾や戦略を感じとる皮膚感覚が身についてきたように思います。

さらに、各国の元閣僚や大物財界人、ビッグスターの寄稿も多く、デービット・ベッカムが札幌でPKを決めたときの気持ちをつづったコラム(その前回のワールドカップで退場になった因縁のアルゼンチン戦)で、「もう、大丈夫だと思った」という言葉は今でも印象に残っています。

先進国の世界的不況や中東の動乱、そして東日本大震災における援助や報道など、世界の中で、国際社会と複雑に絡み合う時代に生きていることを教えてくれます。ひとつ上の目線と価値観を与えてくれた雑誌です。

決して安くはありませんが、1年購読は18,520円(一冊定価460円)です。

ページトップへ戻る

更新履歴

2009年6月26日
ページを公開。
2009年6月26日
ページをXHTML1.0とCSS2.1で、Web標準化。レイアウト変更。
2014年5月22日
内容修正。

ページトップへ戻る

参考文献・ウェブサイト

当ページの作成にあたり、以下の文献およびウェブサイトを参考にさせていただきました。

文献
図解入門 インターネットのしくみ参考文献

ページトップへ戻る