PHPフレームワークが花盛りですが、それらは決して突然に出現したわけではなく、そこに至る道のり、というのがあるわけです。また、RoR の発想が急速に受け入れられたのも、みんなが、「そうそう、こういうのがあると良かったんだよね」と納得できたからです。
どうしてでしょうか。そのあたりをデータベースへのアプローチという観点から、少し振り返ってみます。
データベースとの兼ね合いで外せないプロジェクトとしては、
phpMyAdmin があります。
どんな MYSQL のデータベースでも表示し、編集・設定 が WEBからできてしまうという驚異のソフトです。MYSQL を利用している人であれば、使ったことのない人はいない、というほどのものだと思います。このソフトは瞬く間に世界中に広がりました。
sourceforge.net に登録されたのは、December 2002 です。
これを使った人の中で、ある人たちはこう考えました。
「この中から必要な機能だけを取り出せたら(またはどんどん機能を削除できたら)、WEB上の業務管理ツールを半自動で作れるんではないか。楽もできるぞ。」
その線で開発されたプロジェクトとしては:
phpMyEdit PHPLensMYSQL Table EditorPhpBunsdbPerceptorなどがあります。どれも完結型のアプリケーションで、「ホスト名、データベース名、パスワード、テーブル名を登録すると、そのテーブルに対する、挿入、編集、削除作業などをする GUI 画面を作成してくれる」というものでした。
ソフトごとに設定の仕方は違い、テーブルの関連付けなど、できることには差がありました。個人的には、phpMyEdit がいちばん優秀だったと思っています。ただ、これらのソフトの欠点は、「想定外の動作をさせようとするとえらく難しい」というものでした。仕事をさっとすませたとしても、お客さんや上司から、「ここを〜に直して」と言われた場合に、もしそれがソフトの想定外であった場合には、自分でコードの中に分け入って解決策を見つける必要が生じてしまったのです。
「な〜んだ、こんなに苦労するのなら、はじめから自分で手書きしたほうがよっぽど早かったかも」と、思った人もいたわけでした。
そうこうしている間に、Windows用のMYSQL管理ツールの中に、「管理用PHPコード自動生成付き」のものが現れました。有料のものもいろいろありましたが、
MyDB Studioのように、フリーウェア?になってしまったものもあります。
また管理ツールというよりは、「PHPスクリプトそのものを生成することが目的のWindows ソフト」なども現れました。
dbQwikSiteこうしたツールでコードを作らせると、とりあえずは雑誌の見本コードのようなものをじゃんじゃん吐き出してくれるので、修正するのは楽でした。業務用のアプリケーションも作れますよ、というデモもよく見かけたと思います。
しかし、プログラマーを名乗る者にとっては、自分がコーディングしたとは言えませんし、いつまで会社のサポートが続くかも分かりません。また、出てきたソースを見ると、なんだ、自分のほうがもっと上手に書けるぞと思ったりもしてしまったのではないでしょうか。
結局、どこかのWEBデザインの会社が、簡単にPHPコードを作るための簡便策として使ったぐらいだったのではないか、と予想されます。
*また、ASP.net と同じような環境を実現するものとして、
TurboPHPがさっと現れ、そしてさっと過ぎていってしまったようです。*
そのうち、Windowsを使わなくても、「WEBでWEBスクリプトを作る」という発想も生まれました。
ScriptCase などは、わりと派手に宣伝していたようにも思います。
このあたりで、「プログラマーとして仕事をしつつ(させつつ)、なおかつデータベースに対する簡単なアプローチ、という両方を実現する仕組み」の定番ができてもいいのになぁ、とみんなが待つようになった気がします。
この頃、「お手軽コード生成ツールではなく、単純にがりがりとコードを手書きするのでもない手法があるはずだ。PHPにおける定番は何になるだろう」と思いはじめていたと思います。
もう一つのアプローチとして地味に発展していた技術は、
「MYSQL に接続する部分のクラスだけを自動生成して、それを利用すればいいんじゃないの?」というものでした。GUIスクリプトもついでに生成してくれるものもあります。
phpcodegenieMyDBOPHP Object Generator, (POG)propelMyObjectsphpersistenceなどのプロジェクトが起こりました。このあたりは大小さまざまなものが大量にありますので、すべて列挙することはできません。しかし、共通点としては、「データベースにアクセスするクラスを生成する」というものでした。
このあたりで“MVC”という考え方が主流になってきます。MVC とは、「データを扱う部分(モデル,M)と、画面の表示を決める部分(ビュー,V)と、URL を指定された時に、どんな処理をするかを決める部分(コントローラ,C)に分けてしまう」という考え方です。
この点で Mojavi という PHP フレームワークの功績は大きいと言えます。PHPでも、手軽なコード生成という考え方を超えて、データベースとロジック、デザインの分離を考えた統合的な枠組みが作れるのではないか、と多くの人が考えるようになりました。
(Zend はまだこの段階では何もリードしていなかった、とも言えます。)
こうした経緯を経て、
現在では、
SymfonyCakePHPCode IgniterQcodoPRADOしばらくしてPHP開発元のZendも動き出し、
Zend Framework(日本では
Maple や
Ethnaなど。)
その他のいろいろなフレームワークが開発されるに至っています。