Posts Tagged ‘PHP’
Facebookが開発したPHPを超高速で実行する仮想マシン HipHop VM
FacebookがPHPをさらに高速に実行する技術について2012年11月に公開した記事が話題になっています。Facebookはサービスを高速に実行する為にPHPで書かれたスクリプトをC++に変換して実行する技術、HipHop(HPHPc)を開発して利用してきました。CPUの使用量を半分程度に抑えることができるこの技術は大きな注目を集めていました。
一方でHipHopはPHPのソースコードをコンパイルして実行するというステップが必要な事から開発から実行までの手順が増えてしまうという面もありました。この欠点を補うべく、実行時に変換を行なって実行するアプローチを模索していたのがHipHop VM(HHVM)です。この記事によると、このHHVMがついにHPHPcを上回るパフォーマンスを達成したとのことです。
sandboxと呼ばれる開発環境ではインタプリタとして実行可能なHipHop (HPHPi) が使われて来ましたがこれはオリジナルのPHPのZend Engineよりも実効性能が低かったようです。しかし動的コンパイルを採用したHHVMはこの問題を解消し開発環境でも利用されるようになったとのことです。実際にFacebookの開発者ブログもHHVMで実行されているWordPressで再スタートしたとの事で性能と利便性を両立しているようです。
ブログ記事では実際にWordPressを実行するまでの手順も紹介されており、PHPで極限の実効性能を達成したい人にとっては有益な情報と言えそうです。
参考:
Facebookが公開したPHP仮想マシン「HipHop VM」とは – builder
via:Speeding up PHP-based development with HipHop VM
新時代に突入したPHPのフレームワーク戦争
2012年9月、PHPのフレームワーク戦争は新たな局面に突入した事が明確になってきました。PHPフレームワーク、Symfonyプロジェクトの創始者であるFabien Potencier氏のブログ記事がPHPフレームワーク界で話題です。
オブジェクト指向を本格的にサポートしたPHP5とRailsが与えたインスピレーションから始まった2005年頃からはsymfonyやZend Framework、CakePHP、CodeIgnitierなどのフレームワークを生み出しました。その後、名前空間をサポートしたPHP5.3がリリースされるとコードの抜本的な構造などを見なおした次世代フレームワークが次々に登場します。冒頭のFabien氏の記事では2012年9月6日にZendFramework 2.0とSymfony2.1が奇しくも同日にリリースされました。Fabien氏はZendFrameworkのリリースを祝福した上で、「何故、他のXというフレームワークよりSymfonyを選ぶのか?」という質問の回答としてブログの記事を投稿しています。
記事によると下記のような点をSymfonyを選ぶ理由として挙げています。
- Symfonyはフレームワークではなく、プロジェクトであり用途に応じて様々なコンポーネントをそのままつかったり、Sliexとして使ったり、フルスタックなフレームワークとして使う事もできる。
- 大きな採用事例があること。(BBC NBC TEDなど)
- 大きなコミュニティがあり、昨年だけでも550人以上が貢献している。
- 車輪の再発明をしない事を推奨しておりさまざまなコンポーネントが開発、公開されている
この記事には非常に多くのコメントが寄せられ、このようなドキュメントを各フレームワークが記述したらいいのではなどという声も上がり始めました。そしてCakePHPの開発チームの一人であるJose Diaz-Gonzalez氏が正に返信の記事である「Why to Actually Choose CakePHP?(なぜ実際はCakePHPを選ぶのか?)」という記事を公開します。こちらの記事ではジョークを交えて下記のような点をCakePHPを選ぶ理由として挙げています。
- 熱心な開発者
- 継続的なリリース
- モデルレイヤー
配列がPHPでデータを扱う最良の方法であるから。Cake3からはモデルをオブジェクトとして扱う事もできるようになるが。- Symfonyじゃないこと
- パトリオットエールハウス
このバーで一緒にエールを一杯飲んだ相手しか信用しないので
また前後してZendFrameworkの開発チームのEvan氏は「Why ZendFramework」という記事を公開します。こちらの記事では直接Fabien氏の記事を引用しつつZendFrameworkを選ぶ理由として下記のような点を挙げています。
- ZendFrameworkはずっとコンポーネント志向だった
- ZendFrameworkも大企業につかれている。(BBC, Cisco, Discovery, Panasonic, Offers.com等 同様にオープンソースプロジェクトでも使われている。: Magento, TomatoCMS, pimcore, Centurion, Digitalus CMS, Webfolio, PHProjekt, Concrete5)
- コミュニティの活発さ、車輪の再発明をしない事などは同じようにZendFrameworkにも当てはまる
全てを読んでみると、説得力のあるSymfony,場外戦術を仕掛けるCakePHP、俺も俺もといった感じのZendFrameworkという感じです。いずれの主張もRails直後のような機能ではなく、汎用性やコミュニティの活発さなどに言及している点が印象的です。技術的にはPSR-0やPSR-1といったフレームワーク間で設計や規約が共有化され、コンポーネント化や相互の再利用がしやすくなっている点もあり、コミュニティこそがフレームワークの特性になってきているのかもしれません。
Orchestra – PHPコミュニティ注目のPaaS
猛烈なスピードで様々なサービスが登場するPaaSの中で、PHP向けのクラウドとして注目されそうなのがOrchestraです。PHPが使えるPaaSは他にもPHP FogやDotCloudなどがありますが、このOrchestraはPHPコミュニティからの注目が集まりそうです。
PHPのフレームワーク関係をウォッチしているユーザー、特にCakePHPに関心のある人によってはこのツイートの意味は大きいのではないでしょうか?今回Orchestraに加入したGarrett Woodworth氏はかつてCakePHPを大きく発展させたプロジェクトマネージャであり、現在はLithiumという次世代フレームワークの開発に携わっています。また最近、PHPユーザーの間で使われている #phpneeds をいち早く集計しているこのページもOrchestra上で動いています。
コミュニティとの距離感が近くなりそうなこのOrchestraのサービスの概要は下記のとおり。
-
“Free” Apps – 無料、ただし制限あり。
a. “Automated Jobs”と”Simple Error Loggin” の機能は対象外。
b. MySQLなどのアドオンは利用可能
c. URLはサブドメイン形式の[app_ name].orchestra.io になる。
d. Auto-scaling機能は利用できない。
e. 無料のアプリは同時コネクションは1つ。
f. ユーザーは無料のアプリを2つまで作れる。 -
“Basic” Apps
a. “Basic”としてデプロイされたアプリはauto-scale機能は無し。
b. 1時間あたりUSD $0.04とアドオンの料金が課金される。 -
“Elastic” Apps
a. “Elastic”としてデプロイされたアプリはauto-scale可能。
b. 1時間あたりUSD $0.10と1時間追加ユニットあたり0.03とアドオン料金が課金
無料でも2つまでアプリがデプロイできるという事でまずはテスト環境や開発用とで試してみるのも良さそうですね。