スポンサーサイト

  • --/--/--
  • このエントリーをはてなブックマークに追加

スポンサーリンク

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

PHPの車輪はバカに出来ない。使うに留めず使いこなしてからが面白い。

  • 2007/05/21
  • このエントリーをはてなブックマークに追加

スポンサーリンク

こういう記事を弾さんが書いていた。
そろそろPHPに関して一言いっとくか

以下気になったところを抜粋

最近はAjaxの台頭で、かつてはサーバー側にやらせていたViewを、ブラウザー側にやらせる機会が増えてきた。PHPが「どこにでもある」かどうかは疑念の余地があるが、JavaScriptがどこにもあるのは疑念の余地がない。そして幸いなことに、JavaScriptは「新しい技を覚える」という喜びを味わえる言語でもある。そのことに皆が気づくのにだいぶ時間はかかったが、今ではみんな知っている。車輪の再発明があまりに多いのは頭痛の種だが、それでも車輪を再発明できるというのは、プログラマーの成長にとっては欠かせない特徴なのだ

PHPにおいては、PHP「環境」に用意された車輪を使い続けるしかない。

だから、PHPに対して正しいスタンスは、「使うにとどめる」というものだと思う。「作る」までやりたかったら、他をあたるべきだろう


こういう感じで言いくるめられました。

ですが【PHPの車輪はもっと別の意味をもつ】と言いたいのです。

単純にAjaxにしても、確かにその開発結果にはオリジナリティが如実にでますし、新しい喜びを感る事が出来る動きが見えます。
おおなるほどと納得。でもPHPの車輪は一言で言い表せない部分がまだまだありますので記事に残しておきます。
IT/Web業界に強い転職サイトGreen

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の味が出てきておもしろいので、是非使いこなして欲しい
です。




スポンサーリンク

トップへ戻る

Twitter版のネタ帳では毎週月曜~金曜までWeb屋さんに役立つ色んな情報や単なるネタまでをつぶやいています。

関連するエントリー

コメント

この記事にコメントする人はクリック

コメントポリシーをお読みください
管理者にだけ表示を許可する

名前を名乗れない人

404の話はPHPがつかえないって話じゃなくて、ださいって話だよね。

2007/05/22 Tue 09:13| |

名前を伏せる卑怯者です。

何が問題って、読解力だよね。

2007/05/25 Fri 15:58| |

じょりちょこ いや、PEARの「貧弱さ」こそがPHPの弱さを象徴している

CPANに収録されているライブラリの数とPEAR/PECLに収録されているライブラリの数を比較すると、悲しいくらいにPEAR/PECLのライブラリ数は少ない。しかも完成度においてもPEAR/PECLのライブラリたちはCPANのそれに及ばないのです。

それは、PHP自体の言語としての「自己拡張能力」の貧弱さから来ているのです。

たとえば、C言語は言語そのものには大した機能はなく、実用的な機能のほとんどはC言語自身で書かれたライブラリで実現されています。
言語仕様をコンパクトにして、機能はライブラリで実現する、という方針は言語開発者に大きなメリットをもたらします。
言語仕様がコンパクトであれば、処理系をバージョンアップする際、動作確認しなければならない範囲もコンパクトになります。したがって言語仕様を変更せずに、最適化やセキュリティホールへの対応のための処理系のバージョンアップを「安全」に行いやすくなります。(言語仕様は言語処理系とライブラリのI/Fなので、言語仕様が変わらなければライブラリも変更を求められない可能性が高い。)

ところがPHPはそうではありません。PHPに標準で提供されている関数群は、必ずしもPHP自身で実装することができません。たとえばmysql_connect()関数をどう思いますか。mysql_connect()関数の戻り値はPHP的に特殊な値であり、まったく別のMySQL処理関数群を作ることは可能でも、mysql_connect()そのものをPHP自身で書くことはできないのです。つまり、この関数はPHPの言語仕様に「組み込まれて」しまっています。

debug_backtrace()関数も同様です。これがないためにどれだけ苦労したか。こういう関数も、PHP5以前では、PHP自身では書くことができませんでした。こういう関数を後から書けるような言語仕様にしてくれれば、あとからライブラリ関数として書けばいいのです。

Javaは巨大なクラスライブラリを持っていますが、PHPほど言語仕様が無意味に大きくはありません。PHPの欠点は、ライブラリとして持つべき機能が、言語仕様に組み込まれ過ぎているということに尽きます。ある機能が必要になったとき、PHPの開発者たちは言語仕様を拡張してその機能をライブラリとして書けるようにする道を選ばず、直接その機能を言語そのものに組み込んでしまったのです。

PHPが下位互換性を犠牲にしてきたのは、言語仕様の設計ミスからくる、不可抗力です。言語仕様が大きすぎるので、厳密な検証ができないのです。実際、細かい挙動の違いがセキュリティアップデートの際にも生じてきました。(もう詳細はおぼえていませんが、4.3.0と4.3.1と4.3.2の違いに苦しんだことが僕にはあります。)
すると、PEAR/PECLにクラスライブラリを提供したくても、PHPのバージョンアップ時に、各バージョンで動作できるように保守しなければならないという懸念が生じざるを得ません。PHPの場合、configureのオプションやphp.iniの設定によって動作を変えられる部分も多く、ポータブルなクラスライブラリを書くことはかなり骨が折れます。
PEAR/PECLに提供されるクラスライブラリが少なく、また機能的にも素朴なものが多いのはここに原因があると僕は思います。

PHP5は、PHP4よりはるかに表現力に富んでいるので、PHP7かPHP8か、いずれかのタイミングで、言語仕様をコンパクトにし、機能のほとんどをライブラリ側に移せるかもしれません。そうなれば、PEAR/PECLも充実してくると思います。

2007/05/27 Sun 19:03| |

FC2Ad

広告


IT・Web業界の求人なら転職サイトgreen(グリーン) ホームページテンプレート、WordPressテーマ、Facebookページテンプレートならクラウドテンプレート ネットマーケティングとは│ネットマーケティング検定 SEOコンサルティング&SEO対策 無料レスポンシブWebデザインテンプレート 広告主募集

あわせて読みたい
フィードメーター - ホームページを作る人のネタ帳

人気の記事一覧

あなたのブログの再訪問者を増やす50の方法

私の経験から感じた事を書き記します。全てが全てその時々で、正しいとは限りませんが、一つの指針としてお使いください。因みに全部リスト化すると230くらいありましたが、それはきっとセミナーとかでやるかなぁと。

http://e0166.blog89.fc2.com/blog-entry-824.html

あなたの生活を確実に拘束し時間を浪費させる動画50

今回は生産性を向上させる事ばかり考えて記事を書いてきたので、逆に年末にかけて忙しい皆さんの時間を出来るだけ拘束し、忙しさを倍増させるものが無いかを考えました。その結果、動画で行こうと言う事になったのが1ヶ月以上前。動画閲覧本数はおそらく600本以上。その中から、おもしろそうなものを50個ベストチョイスいたしました。

http://e0166.blog89.fc2.com/blog-entry-820.html

webデザインのセンスを磨く○○系のwebデザインまとめ

webデザインを学ぶならwebデザインから。と言うわけで、今回は海外のエントリを中心に、○○系のまとめをまとめます。

http://e0166.blog89.fc2.com/blog-entry-817.html

jQueryプラグインのベストトレンド総まとめ2010

もはやこの業界ではかなり浸透しつつあるjQuery。今回はそんなjQueryにスポットを当て、本年度紹介された中でも、ホットなトレンドプラグインをご紹介します。

http://e0166.blog89.fc2.com/blog-entry-816.html

ツイッターの日常における35の行動パターン

私が良く見かける35の行動パターンに名前をつけてみようと思う。年末の誰も見てない時に公開しようと思っていた、ただのネタだったのですが、結構時間がかかりこの時期に・・・。

http://e0166.blog89.fc2.com/blog-entry-823.html

ウェブデザイナーのためのウェブアプリ15

OSがWindowsであろうと、ubuntuであろうと、共通のサービスを受けることができるのがウェブアプリケーションです。ウェブデザイナーの中には、自宅ですでにubuntuを利用している人も多い。また、Mac、Windowsと、各自それぞれの使いやすい物を利用していると思います。

http://e0166.blog89.fc2.com/blog-entry-784.html

愛用するGoogleChromeエクステンション12個

この2年でノートPC2台購入。自他のPCはクラッシュしてリカバリー。会社のPCは新しいのがあたり、再セットアップ。そんなこんなで、会社はまぁともかくとして、とりあえず全PCが比較的3ヶ月に一度リカバリーしてもいいように、自分用にメモとして残しておきます。

http://e0166.blog89.fc2.com/blog-entry-784.html

文章や会話のプレゼンテーションを向上させる方法

文章力がないためにプレゼンに失敗した、会話がうまくできずにプレゼンに失敗した。こういう経験はなかなか無い。なぜなら多くの場合、失敗したことに気がつかないからです。

http://e0166.blog89.fc2.com/blog-entry-802.html

サイトの裏側の意識を変え売り上げをアップする方法

ネットショップ運営者が、あることをちょっとだけ始めてみただけでわずか5ヶ月で売り上げが3倍になりました。はたして、webサイト運営がどのように変わったのでしょうか。。

http://e0166.blog89.fc2.com/blog-entry-749.html

webサイトのリピーターを増やすさりげない5つのコツ

多くのビジネスサイトのアクセス数を支えている大手検索サイト、Yahoo、Googleのアルゴリズムが変わる事で、突然商売がひっくり返る事態を回避する方法。

http://e0166.blog89.fc2.com/blog-entry-746.html
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。