基礎からわかる!パソコン入門・再入門 / 無料パソコン教室・基礎知識・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には最適と言われています。

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

ページトップへ戻る


関連情報&オススメ

JALカードはJALマイレージバンク機能に、各提携会社のクレジット機能が備わったクレジットカードです。フライトでもショッピングでも効率よくマイルをためることができます。

マイルをためようとている方、旅行好きな方には最適なクレジットカードです。JAL派とANA派に分かれますが、JAL便を多く利用するなら、はっきり言ってJALカードは「必須」です。

JAL便の場合、チェックインも搭乗手続きもJALカードをかざすだけで可能になりますし、カード付帯保険や各地の特約ホテルで割引などもあります。

たまったマイルは特典航空券と交換でき、マイルをためることで無料で旅行を楽しむことができたりもします。その他にも様々な商品や各地で使えるクーポン、電子マネーやAmazonギフト券などとも交換することができます。

私はクレジットカードはすべてJALカードにまとめ、電話代等の引落しもJALカードを使っています。すると、月々の支払いによってマイルが自動的たまり、数年に一度は無料で飛行機に乗ったり、Amazonギフト券に交換したりと重宝しています。

ページトップへ戻る

更新履歴

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

ページトップへ戻る

参考文献・ウェブサイト

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

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

ページトップへ戻る