PHPの車輪はバカに出来ない。使うに留めず使いこなしてからが面白い。
そろそろPHPに関して一言いっとくか
以下気になったところを抜粋
最近はAjaxの台頭で、かつてはサーバー側にやらせていたViewを、ブラウザー側にやらせる機会が増えてきた。PHPが「どこにでもある」かどうかは疑念の余地があるが、JavaScriptがどこにもあるのは疑念の余地がない。そして幸いなことに、JavaScriptは「新しい技を覚える」という喜びを味わえる言語でもある。そのことに皆が気づくのにだいぶ時間はかかったが、今ではみんな知っている。車輪の再発明があまりに多いのは頭痛の種だが、それでも車輪を再発明できるというのは、プログラマーの成長にとっては欠かせない特徴なのだ。
PHPにおいては、PHP「環境」に用意された車輪を使い続けるしかない。
だから、PHPに対して正しいスタンスは、「使うにとどめる」というものだと思う。「作る」までやりたかったら、他をあたるべきだろう。
こういう感じで言いくるめられました。
ですが【PHPの車輪はもっと別の意味をもつ】と言いたいのです。
単純にAjaxにしても、確かにその開発結果にはオリジナリティが如実にでますし、新しい喜びを感る事が出来る動きが見えます。
おおなるほどと納得。でもPHPの車輪は一言で言い表せない部分がまだまだありますので記事に残しておきます。
PHPは車のボディそのもの
弾さんが言っているように、PHPを使うならPHPを使う為の環境が必要です。
PHP言語を使う為には、サーバーにPHPをインストールしなければ使うことが出来ないのです。
さらにPHPのバージョンが違えば今まで使っていたプログラムが動かなくなると言うすさまじい存在です。
大規模なオブジェクト指向開発をしていると深刻な問題です。
詳しくはZAPA氏のブログで掲載されていました。
そろそろPHP5への移行に関して一言いっとくか
そして2007年5月3日時点でPHP 4.4.7 と PHP 5.2.2 がリリースされました。
これはつまりバージョンPHP4とPHP5の開発が同時に行われている事を意味しています。
当然サーバーサイドでは新しいPHP5を入れたくても、その配下でPHPを作っているユーザーがいれば簡単にバージョンアップなんて出来ません。
私の環境はPHP4ですが、これを突然5にされた日には泣きます。
それが車という意味になっています。
自動車だって、メーカーが変われば車輪も変えなければいけない。
PHPのバージョンアップとはそういう意味で極悪です。
ところが各ギアに関してはそうそう深刻な問題でもありません。
これからオブジェクト指向開発をはじめるよという方であれば、PHP5の方が開発しやすいのではと思っています。
誰がどんなブラウザでやってきても同じ車に乗せる
こんなことを声を大にして言うものでもありませんが、PHPとJavaScriptの抜本的違いはここです。
どんなブラウザでやってきてもPHPは同じ返事を返します。
サーバー側に完成された車が用意されている為です。
一方、JavaScriptはブラウザに依存します。
いまやGoogleの影響でJavaScriptをオフにしている人はあまり居ないかもしれない。
また、パソコン自体が、インターネットを楽しむだけに購入する人が増加した影響で、JavaScriptのオンオフの存在すら知らない人が多い。
だからといってブラウザが違えば動かなかったり、オフにされると機能しないプログラムというのがJavaScriptです。
今はどうかはわかりませんが、一昔前はこれこそがJavaScriptを使わなかった理由です。
車輪の働き
では車輪の意味はいったいなんなのでしょうか。
PHPの車輪とは、私が思うにPEARモジュールではないかと思っています。
ボディが同じであれば、その上で動作するプログラムも必然的に【同じような】構造になります。
そういった同じような車輪をPHPではPEARモジュールとして無数に公開されています。
例えばservice_YouTubeというPEARモジュールを使うと、YouTubeAPIを活用して驚くほど簡単に動画サイトが作れます。
指定したタグがついているすべての画像の一覧表示をいうのをservice_YouTubeを使うと以下の様な文で構築できます。
require_once 'Services/YouTube.php';
$dev_id = "YOUR_DEV_ID";//ユーチューブ開発者用コード
$tag = "girl";//タグ
$youtube = new Services_YouTube($dev_id, array('usesCache' => true));
$videos = $youtube->listByTag($tag);
foreach ($videos->xpath('//video') as $i => $video) {
print "<img src='{$video->thumbnail_url}' alt='{$video->title}' />\n";
print "<a href='{$video->url}'>URL</a><br />\n";
}
XMLの解析にしても車輪が用意されている。
require'XML/Unserializer.php';
$base = "http://vision.ameba.jp/api/get/search/privateMovie.do";
$xmldoc = join("",file($base));
$opt = array(
'complexType' => 'array',
'parseAttributes' => 'true',
'attributesArray' => '_attributes',
);
$xml = new XML_Unserializer($opt);
$xml->unserialize($xmldoc, false);
$data = $xml->getUnserializedData();
print_r ($data);
勉強の為に各パーツをくみ上げ、自力でXMLの解析をしていましたが、こういう車輪の力は確実に開発時間の短縮に繋がります。
他にも他のサイトの情報を簡単に抜き出すものや、Amazonのサービスを簡単に構築できるものまで様々ある。
これはWEBプログラマとしては短期間でserviceを作り上げ、公開し、使ってもらえるという点では一つの喜びに繋がります。
PEARの魅力はサーバー動作にある
GDライブラリです。
これは画像の圧縮などをサーバー側でやってくれたり、回転させたりと言う動作をさせる事が出来る優れもの。
大きな画像をアップロードしたと同時にリサイズしたりという機能はサーバー依存の力ではないかと思います。
JavaScriptを使わないAJax
本当にJavaScriptを使わないと言うわけではないけど、殆ど書かないでAjax機能を提供する事ができるPEARもちゃんとある。
PHPでAjax! JavaScript不要のxajaxや、HTML_AJAXなどが良い例です。
完成された大規模オープンソースの多くはPHPで書かれている
これを車輪と呼んでよいのかが難しいところ。
PHPで動いている高度なオープンソースWebアプリケーション15選でも紹介しましたが、PHPオープンソースアプリケーションの特徴は、比較的簡単に導入ができ、次の日からでも大規模コミニティサイトをオープンしたり、ESサイトをオープンさせる事が出来るものが多くそろっています。
こういうPHPで書かれたオープンソースが多い中、PHPを理解していると言う点では非常に優位なことです。
多少のバグがあろうと自分で修正できるわけですし、ちょっとした機能を追加したり出来るからです。
車輪の転がし方がポイント
弾さんが指摘するとおり、実際完成された車輪ばかり転がしていると、プログラムから遠ざかっていく事に間違いは無いと言えます。
ただ、弾さんがいう『使うにとどめる』で終わってしまうという意味がこれをさしているのではないかと。
PHPに対して正しいスタンスは、「使うにとどめる」というものだと思う。「作る」までやりたかったら、他をあたるべきだろう。
車輪の多さはこれまで述べてきた事に尽きます。
『作る』と言う意味合いは、プログラムを組むという点からすこしはずれ、WEBサイトを作ると言う点で考える方がPHPプログラマは自然です。
なぜなら、私が知っている限り、尊敬するPHPプログラマの方々は、車輪を『使いこなしている』からです。
まぁ突き詰めると、WEBプログラマーの喜びがどこにあるのかという点がポイントとなりますが、個人的にWEBアプリケーションが動作し、誰かに使ってもらえる事が私の喜びです。
さんざん出来合いの車輪の話をしてきましたが、各企業の為だけの、ブラウザベースの見積もりシステムや、グループウェアなど、一から依頼されたとおりのプログラムを作り上げ、使ってもらえるもの楽しいです。
結論
私なりのPHPに対する正しいスタンスは、『使う』、だけでは終わらないで、『使いこなす』ことこそが、PHPの味が出てきておもしろいので、是非使いこなして欲しい
です。