プログラム言語の考察:特にCGIに絡めて

序文

 世間には、それは多くのプログラム言語があります。マイナーなものも含めれば、確実に3桁はいってるでしょう。4桁はないとおもうのですが…わかんないですねぇ。しヌるほどマイナーな言語、ってのもあるでしょうし。特にスクリプト系、インタプリタ系の言語を考えてしまうと。
 で。少なくとも数百からあろうかという言語なのですが、ことCGIを作成するときは、きわめて限定された少量の言語しか使われていない場合が多い、というのが実情です。
 無論、いろいろなものをむやみに使えばいいというものでもないのですが。しかし一方で、盲目的に「CGIならこの言語」と決め付けてはいないでしょうか?
 という理由付けを元に、独断と偏見に基づいて、いくつかの言語の、CGIへの考察を行ってみました。

Perl

 有名です。「CGIというのはPerl言語のことなんだ」と勘違いされる方がいるくらいに(本当にいます)、CGIという場面で、Perlは数多く出てきます。
 とりあえず、利点と欠点を考えてみましょう。
 最大の利点は「整っていない環境で使いやすい」事です。自社サーバがない、或いはパーソナルユーザでも、FTPさえできれば、ほぼ確実に使用することが出来る。これが、PerlでCGIを組む、最大のメリットであり、武器であるといえます。
 翻って、性能面を考えると。正直、これは今一つです。インタプリタ系なのでやむをえないのですが、カリカリとした性能を考えると、やはり他の言語に一歩譲ってしまいます。
 また、メンテナンス性も、これは組む人にもよるのですが、概して今一つになりがちです(皆さん、もっとサブルーチン(関数)を使いましょう)。最近プログラマ達の間ではやりつつある「オブジェクト指向」も、Perl5で実装はされているものの、見ている限りで今一つ、ではあります。  このあたりを要約すると「個人ユースや簡単な、性能を要求されないものであればPerlが便利」である、といえます。

PHP

 いくつかのWebサーバでサポートされているPHPですが。元々「CGIを作るために」作られているだけあって、非常に簡単なのが特徴の一つです。
 最近多くなってきた「HTMLに埋めこむ」タイプなので、デザイン/レイアウトの変更が容易である、といわれています(いえ、いわれているだけであって、しかるべき人間が作ればどんなCGIだって容易にレイアウト変更が出来るのですが…)。
 もしあなたの環境でPHPが許されていて(個人環境が以外と厳しい−ISPさんでPHPを個人に対してOpenにしているところをあまり知らない−)、これからCGIを学ぼうと思う場合。或いは非常によい選択肢かもしれません。
 無論、ある程度のレベルのCGIも、十分PHPで耐えられます。
 しかし、Perlと同じように、ある程度以上の性能を求める場合、PHPでは難しくなってくることでしょう。

Javaサーブレット

 実は、個人的にはかなり評価が低い言語です。が、好みを除外して考察すると、これはこれでそこそこ便利なものではあります。
 基本的にはPHPと同じようにHTMLに直接埋めこむJSPというものがあり、これと連動させて使います。技術的には恐らくPerlやPHPよりも早く、かつそれなりに利にかなったつくりをしているので、現行でシェアが増えている気持ちはよくわかります。
 ある程度以上の規模で、PHPのような利便性と、それ以上の拡張性を求める場合は、Javaサーブレットが、現在かなりよい選択肢になるでしょう。
 私がもう一つ好まない理由は非常に簡単で「何故にサーバでJava?」という単純な理由です。個人的には、クライアントでこそJavaを使いたいので。
 あと、コンポーネントが割合にごちゃごちゃしているのもあまり好まないですねぇ。

C言語

 プログラム言語としては相当に有名か、と。実際、UNIX系のOSのアプリケーションなどは、かなりの数がこの「C言語」によって作成されています。
 というわけで、無論CGIの作成も十分可能なのですが。
 一つには「CでCGIが組める技術者が少ない」事が、CGIの業界でC言語をあまり見ない原因か、と思います。下手な人間が組めば、あっという間に危険なプログラムが作成できますし。そしてもう一つ。C言語や次に紹介するC++は「コンパイル」と呼ばれる作業が必要になって。この作業が行える環境というのがまた少ないので、結果としてさらに「C言語でCGI」が減っていく、と。
 OSでさえ作成できる強力な言語なので、特に高い負荷がかかりそうなCGIなどの場合に真価を発揮します。
 ちなみに余談ですが、弊社のCGIの多くはC言語で作成されています(残りの大半はC++で、ごくまれに他言語)。

C++

 C言語と似た言語で、こちらはオブジェクト指向のプログラム言語になります。
 オブジェクト指向の言語は、設計するべき人間が設計をすると、メンテナンス性、拡張性、生産性に極端に優れたものを作ることが出来ます。
 ただ、えてしてC言語で(きちんと組める人間が)組んだときよりも、マシン資源(メモリとかCPUとか)を食いやすいので、真に性能が要求されるレベルのものにC++が利用されているケースは少ないようです。
 継続的にCGIを作成するようであれば、C++で一度きちんと設計しておくとよいでしょう。ちなみに弊社でも、大量のクラスを保有しております。
 Cとほぼ同様に、性能をシビアに要求されている場合に最適な選択であるといえます。

ASP(アクティブサーバスクリプト)

 Windows系のHTTPサーバ「IIS」で使えるスクリプト。PHPやJSPと同様に、HTML埋めこみタイプになります。
 言語のベースはVisual Basic。
 ほんの少し弄くったことがある程度ですので、コメントはあえて控えた以下と思います。ただ、現在Microsoftの.NETの推進で、ASPもASP.NETになるそうで。
 しかも、ASP.NETサーバではASPは動かないそうです。…言語的な互換性が高いといいのですが。そうでないと過去資産総つぶれですねぇ。今後、明らかにASPの方はサポートがおざなりになるそうですし。

Ruby

 日本発の、オブジェクト指向言語です。CGIも割と簡単に書けそうなので、最近注目の的です。
 これは個人的(かつ希望的)推測ですが。各ISPさんがRubyにしっかり対応してくれば、Perlは少しづつ追いやられていく可能性が高いように思います。Rubyのコードのほうがメンテナンスしやすく作ることがより容易ですし。
 ただ、現状では「とりあえず遊べるおもちゃ」の域を(普及という点で)超えていないのが非常に残念です。

Python

 こちらは外国産のオブジェクト指向言語。概ねRubyと似たり寄ったりな状況なのですが、一つには日本語コードの問題がどうも今一つ片付ききれていない雰囲気があるのが怖いですね。
 こちらもやはり今後の動向次第、といったところでしょうか?

最後に

 駄文に最後までお付き合いいただきまして、ありがとうございました。
 サーバに使用するOS然り、CGIに使用する言語然り。十年一日のごとく「なんとなく」選ぶのではなくて。少しだけそこに気を配ることが、よりよいシステム作りへの第一歩であると思っております。
 そんな「よりよいシステム」を作るさいの、参考の参考にでも、本稿がなれればよいと願っております。

戻る 
Copyright 2002 M-Fr Net All Right Reserved
E-Mail:info@m-fr.net