Perl_CGIのすすめ

[Internet Server]

 Internet ServerとはInternetで情報発信するコンピュータ、またはそのソフトウエアの事をいいます。個人のホームページはプロバイダー業者のInternet Serverに置かれる場合が多いようです。
 CGIはInternet Serverに置かれた仕組みで、それによって、ブラウザ側からInternet Serverに情報を送りつける事ができる様になります。

[CGIとは]

 CGIプログラムは原理的には、各種の言語で開発でき、かつては、CGIプログラムはC言語で作られていました。CGIプログラムの仕組みはWindows型ではなく、以前のDos型のアプリケーションに近いものです。
 つまり標準入力から読み込み、標準出力へ書き込むという方式です。標準入力とはDosアプリケーションではキーボードに相当し、標準出力は同じくディスプレイ装置に相当します。CGIプログラムでは、HomePageのTextAreaなどが標準入力となり、ブラウザの表示領域が標準出力となります。これはCGI 規約で決められていることです。このようにCGIプログラムは従来のDosプログラムに近い形式です。
 またCGI用のプログラム言語には環境変数の値を取得/更新できる機能が必要です。CGIプログラムがブラウザ側からデータを取得する方法は、環境変数を参照するか、標準入力から読み込むか、またはプログラムの引数として取り込むかのいずれかです。

 Windowsに強く依存しているVisual Basic 6では、標準ではCGIプログラムは作成できません。Visual Basic 6には標準入出力という概念がありませんので、Windowsでは広く普及していて、プログラマー人口も多いのですが、CGIの分野ではVisual Basic 6の出番は少ないようです。
 が、VB.Net(Visual Basic 2005以降)になってから、CGIも容易に作れる様になりました。現実には、ASPで構成する場合が多いですが。

[Perlとは]

 最も初歩的なCGIプログラムでは、環境変数の参照と標準入出力への読み書きができればよいので、従来からUNIXで使われていたPerlインタープリタが、CGIプログラムにも使われるようになりました。Perlはインタープリタですから、それほどのスキルは要求されません。手軽にCGIプログラムを作成できるというメリットのため、Perlが比較的よく使われています。(他に可搬性のメリットもあります。)
 Perlは元々UNIX向けに開発されましたが、Windows版のPerlインタープリタもあり、Internet Serverソフト(ApatchまたはWindows/IIS)と協調して動くようにできます。

 CGIプログラムにPerlを使うメリットは、プログラムが簡潔に記述できる点にあります。Perl本来の機能で、文字列をデリメータ(特定の区切り文字)で分解したり、分解した文字列を配列に格納したりすることが、簡潔に記述できるため、プログラム行数が少なくてすみます。
 しかし、簡潔に記述できることは必ずしも簡単にとは限りません。プログラム行数が少ないことは、それだけ分かりにくいとも言えます。Perlに習熟したプログラマーが書いたPrelソースは、部分的にはたいへん分かりにくい箇所もあります。しかしこの場合はこう書く、という定型パターンとなっているようです。その定型パターンなども含めて、Perlを深く理解することは、割と難しいようです。
 しかし、それほど深く理解していなくても、Perlで初歩的なCGIプログラムは比較的簡単に作れます。また、現実的にCGIプログラムを作る場合は、PerlかASP系か、いずれかから選ぶしかありません。

 本格的に、つまり業務に使うようなCGIプログラムを開発する場合は、データベース機能が必要と考えられます。Perlにもデータベース機能を持つサブセットは用意されていますが、そこまで行おうとすると、かなり専門的な知識が要求されます。そうするとPerlの手軽さはなくなりそうに思われます。

 つまり、Perlの良さは手軽に簡潔にCGIプログラムを作れることにあるわけで、CGIに複雑で高度な機能を持たせたい場合にPerlを使うのはやや疑問です。不可能とは言えないまでも、手軽さというPerlのメリットは失われるように思われます。また、Perlは開発ツールが不十分で、しかも基本的には変数は全てグローバルですから、大規模システムに向くとは思われません。
 つまり業務に使うような本格的なCGIプログラムを開発する場合は、むしろ他の言語で本格的に開発する方が良いように思われます。

 つまり、CGIにそれほど高度な機能が要求されない場合は、Perlは最も手軽な開発手段です。