2009年1月20日

ヤフオク!

PHPとYahoo!の意外なカンケイ

  • このエントリーをはてなブックマークに追加
こんにちは。オークション事業部 企画部の安田 琢磨です。
多少技術的表現に誤りあるかもしれませんが、ご容赦ください。
Webサービスは、SOAP,REST,JSONなどに基づいて提供されることが多いので、HTTPの通信に対応していればどのプログラミング言語からでも利用可能です。では、実際にWebサービスを利用して、何か作ってみようと言う場合にどの言語を選択すればよいのか、環境は? DBは? または、初心者の日曜プログラマーでも作れるのか? などいろいろ疑問が出てくる方もいらっしゃるかもしれません。

Yahoo!オークションWebサービスで公開されているSDK(ソフトウエア開発キット)は、現在PHPでのサンプルコードを公開しています。
そこで今回は、プログラミング言語の一つ、PHPについて少しご紹介してみたいと思います。

■PHPとは
世界中にはさまざまな国や言葉があり、みなさん友だちや家族や誰かと日々会話を交わすわけですが、コンピュータの世界も同様に、さまざまな言葉があります。それぞれの言語にはいろいろ得意分野があり、Web構築に向いているものとか、基幹システムに向いているものとか、特徴は多様です。

PHPとは、PHP: Hypertext Preprocessorの略で、HTMLに埋め込むことも可能な、スクリプト言語です。 通常、プログラムはコンパイル(コンピュータが理解できる言葉の状態)という作業を行い、実行可能な状態にして初めて動作します。 しかし、PHPの場合、ランタイム・コンパイラと呼ばれる、常時コンパイルを行うような仕組みが実装されています。 そのため、プログラマーがWebアプリケーションサーバー上にソースコードを配置し、それが呼び出された瞬間にコンピュータが理解して処理を実行します。 その結果、Webの開発などで常に行われるトライ・アンド・エラーに対しスピーディーに対応できることができる利点があります。 また、大きなオープンソースコミュニティがあることでも知られています。

■PHP歴史
PHPの原型は1995年Rasmus Lerdorf氏によって開発されました。
その後、数々の改良が加えられPHP/FI(Personal Home Page/Forms Interpreter)と名称を変更し、オープンソース化されました。
そして、PHP/FIは、利用者が増えると共に、さらなる機能改善が望まれている最中、 イスラエル工科大学のプロジェクトとしてZeev Suraski氏とAndi Gutmans氏のもと改良されることになりました。PHP3.0(PHP: Hypertext Preprocessor)の登場です。
彼らは後に、このPHPをビジネス化させるため、Zeevの「Ze」とAndiの「nd」を採り、Zend Technologies 社を設立。(余談:親日家であるZeev氏は、日本語の「禅(ぜん)」も意識したらしい)
PHP3.0に安定性、拡張性などのパフォーマンス向上を行うため、PHPのコアになる部分を再構築。コアの名称をZend Engineとして搭載した、PHP4.0が2000年に登場し、爆発的に普及しました。(以後のPHPにはすべてZendEngineが搭載されている)
こんな歴史で生まれたPHPも現在はVer5.2.8がリリース(2009年1月時点)されるに至りました。
(※まだまだ広く利用されているPHP4ですが、現在はPHP4系の開発は終了しており、ユーザーはPHP5系へ移行することが推奨されています。)

■PHPとYahoo!の意外なカンケイ
実は米国Yahoo! Inc にはPHP開発者が多数在籍しております。
Rasmus Lerdorf :PHPの元祖を作った人
Sara Golemon :PECL(PHP拡張モジュール)のメンテナ
Dustin Whittle : symfony(アプリケーションフレームワーク)開発のコアメンバ
オープンソースの流れにに乗り、Yahoo!でもPHPは採用されております。また、社内で開発されたもので、一般的に適用できる追加機能はオフィシャルのPHPに還元したり、Yahoo! Inc.では、www.php.net(公式ミラー)のサーバー提供など、オープンソースの活性化にかげながら応援させていただいております。詳しくは、過去ではありますが2007年に開催された、PHPカンファレンスにて、「PHP at Yahoo! JAPAN」(外部リンク)の内容をご覧ください。

■PHPを使ってみるか
では、PHPを使ってオークションAPIで何かさくっとやってみたい。そんな方が最初にあたる壁はもしかしたら、APIの利用以前の環境だったり、細かな設定かもしれません。 そこで、便利になりそうなものをいくつか挙げてみます。まだまだたくさんありますので、そんな時はぜひヤフってみてください。

〜環境構築〜動く環境がほしい
PHPの環境構築でLinux,UNIXであればパッケージでインストールする方や、コンパイルしてインストールの方が多いかもしれませんが、 LAMP環境を手軽に構築してしまうツールもあり、開発環境構築には向いてるかもしれません。
XAMPP:Linux,Windows,Mac,Solaris上にApache,MySQL,PHPの環境を作ってくれます。フリーソフト。
ZendCore:Linux,Windows,Solaris上にPHP環境を作ります。ApacheやIISなどのwebアプリケーションサーバーに対応。英語版はフリーソフト。

〜開発エディタ〜
Eclipse:もともとはJavaのIDE(統合開発環境)だが、プラグインでPHPにも対応。デバッグやバージョン管理などもできて高機能。フリーソフト。
秀丸、サクラエディタ:テキストエディタですがお手軽。

〜フレームワークとか〜
PHPでのWeb開発でも、Webアプリケーションフレームワークの利用は増加の傾向にあるのではないでしょうか。 デファクトスタンダード的なフレームワークの登場にはまだ至っていないのかもしれませんが、ほとんどがMVCモデルを基本アーキテクチャとしている為、 興味のあるものや、使い慣れているものを利用するのが良いのかもしれません。 CakePHP,symfony,Zend Framework,Ethnaなどたくさんあります。テンプレートエンジンのSmartyなんかもよく聞きます。

■〜PHPクイズ〜
次のコードの実行結果、$bの表示結果は何でしょうか?
  $a = 2;
  $b = $a++;
  echo $b;
1: 3
2: 2
3: nothing
4: NULL

こたえ
↓↓↓(白色文字にしています。)
2が正解
ステップ1.$aをstackにpushする。
ステップ2.stackの値を$bがpopする。
ステップ3.$aの値に+1を行う。
↑↑↑

今回は、プログラム言語のPHPというところを焦点に簡単にご紹介させていただきました。
今後とも、Yahoo!オークションおよび、Yahoo! JAPANをどうぞよろしくお願いいたします。

Yahoo! JAPANでは情報技術を駆使して人々や社会の課題を一緒に解決していける方を募集しています。詳しくは採用情報をご覧ください。

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