見出し画像

PHP - WEBの動的なコンテンツへの道

インターネットも最初のうちは元々のARPAネットから使われていた電子メールであるとかネットニュース、ファイル転送などのサービスが使われているだけのことが多かったのですが、WWW(World Wide Web)が広く使われるようになりブラウザで情報を閲覧するという使い方が一般的になりました。

最初は静的なコンテンツが多かったのですが、HTMLの機能の中には初期の頃から、フォーム処理などの機能があり、これをサポートするにはサーバ側には何らかのプログラムを用意する必要がありました。当時、良く使われていたのはApacheというWEBサーバで、この中にあるCGI(Common Gateway Interface)という仕組みからPerlなどで書かれたプログラムを呼び出してフォームなどの処理を行うというのが一般的でした。

Common Gateway Interface

私はこのPerlが苦手です。文字列に対して正規表現を駆使してパターンマッチングで処理を書いていくことが苦手ですし、癖のある変数表記と型の扱いが慣れません。昔はWEBサーバも非力なことが多く、パフォーマンスのためにC言語でCGIを書くこともシバシバでしたが、C言語で複雑な文字列処理を書くのは実に面倒で、いっそのことBASICで書いてやろうかとも良く思いました(UNIXで使いやすい処理系が無くて断念しましたが)。

Perl

そのような時に出会ったのがPHPです。ちょうどZend Engineが完成しPHPをビジネスとして成功させるためにZend Technologiesの面々が世界を飛び回って売り込んでいた頃でした(はい、時代はまだ20世紀です)。当時は当たり前のように普通のテキスト・エディタでHTMLを直に書いていた時代ですが、特定のタグ(”<?php … ?>)の中にプログラムを書いていくだけで、コードが実行され条件に応じたHTMLが出力されるのです。JavaScriptのようにも見えるかもしれませんが、PHPはサーバサイド、つまりWEBサーバで実行されるプログラムでクライアントであるWEBブラウザには、PHPが生成した結果のHTMLが送られて表示されるのです。元のプログラムが見えることはありません。

PHP (プログラミング言語)

フォーム処理もHTMLで書かれたオブジェクトの名前に対応した変数にパース済みの値が格納され、これを処理して結果を出力するのにもPHPのプログラムが使えるので、実に簡単になりました(実はフォームを出力するページと同じファイルにフォームを処理するコードが書けるというのが大変に素敵でした)。もちろんプログラムからはサーバ側のファイルを読み書きできますし、適切な設定を行えばデータベースも使えます。ここまでできればもうPerlを使う気持ちも残りません。

PHP(公式)

その後、IISが登場してサーバサイドのプログラムをJava(のようなもの)であったりVB(のバリエーション)で書くことが出来るようになりましたし、tomcatというJavaをベースとしたWEBサーバも登場しましたが、当時はPHPしか選択肢が無いという状況でした。残念なことといえば、当時はプロバイダで用意してくれたWEBサーバでページを公開することが多かったので、これがPHPに対応していなかったので、自前でサーバを用意してPHPを組み込んで使う必要があったことでした。これもあって自前サーバをデータセンターに預けて使うという世界に踏み込んでいきました(その後、自分のオフィスに光回線を引き込んで使うようになった話はまたいずれ)。

昔のUNIXあるあるなのですが、このPHPも当初は英語以外の文字を扱うことができませんでした。インターネットにおける日本語の扱いは、世界の中でも特異で、一つの国のひとつの言語であるにも関わらず、JIS、EUC、ShiftJISといった文字コードが多数あり(まだUnicodeもUTFは一般的なものにはなっていませんでした)、さらにそれぞれのコードにマイナーなバリエーションもありました。

文字コード(日本語漢字コード表)

あまりにも面倒なので「インターネットでは特定の日本語コードに統一すべきで、それ以外のコードは使ってはいけない」という原理主義者も跋扈して、毎日のように激しい議論が行われていました。この議論が進んでいる間にも急速に利用者は増え続け、もう多様な日本語コードで書かれたコンテンツがどんどん作られ続けていったので、統一の夢はいつの間にかどこかに行ってしまいました。日本でPHPを普及するためには、とにかく日本語を使えるようにしなければならないと、一部の有志でパッチが作成され、PHPご本家が国際化対応するまでの間は広く使われ、その普及に貢献することになりました。

php-3.0.18-i18n-ja-2 PHP国際化パッケージ

ご本家に取り込まれた国際化(と地域化)機能

このパッチも国際化対応がご本家で行われ、パッチに対応するバージョンのPHPが使われなくなったことで、その役目を終えました。この際に日本語の扱いに変更があったことで、日本でPHPのバージョンを上げる際の障壁にもなり、少しばかり黒歴史になってしまったようです。その為かこのパッチに関する情報はネット上にほぼ痕跡が残ってはいないようです。

その後10年くらいはPHPを良く書いたのですが、だんだんWEBページを作るような機会も減り、PHPを使うことも無くなってしまいました。その間にあまり人気があるとまでは言えなかったPHPも、かなり使われることが多くなっていました。今では簡単なWEBページですら、決まったフレームワークとライブラリを使わないと、とても手で書けるようなものでは無くなってしまったのと、PHPもかなりバージョンが上がったので書き方をいろいろ変えないとならないので、もう使うことは無くなってしまいました。今、WEBページで何かを作るのであれば、djangoなどのpython系のフレームワークを使います。

そういう意味では、もう使うことが無い言語なんですが、WEBアプリケーションが大活躍だった時期にPerlの呪縛から解放してくれた想い出深い言語です。

ちなみに名前は大切で少なくとも日本では、このPHPを紹介する時に「PHP研究所とは関係がありません」と書いておくのが習わしとなっています。

PHP研究所

ヘッダ画像は、以下のものを使わせて頂きました。https://commons.wikimedia.org/wiki/File:PHP-logo.svg
Colin Viebrock - http://php.net/logos, CC 表示-継承 4.0, https://commons.wikimedia.org/w/index.php?curid=9632398による

#プログラミング言語 #PHP #Perl #Apache #CGI #WEBアプリ #日本語化

この記事が気に入ったらサポートをしてみませんか?