5.5.0が公開されました。オペコードキャッシュやジェネレータなど、言語仕様としても実行エンジンとしても挑戦的な内容が含まれています。5.5.0」が、2013年6月20日に公開されました。5.4.0」から数えて1年3カ月ぶりのメジャーバージョンアップになります。これまでのメジャーバージョンアップの例に漏れず、言語仕様としても実行エンジンとしても挑戦的な内容が含まれています。5.5.1」が公開されており、本稿のサンプルコードは同バージョンで動作を確認しました。5.3系はメンテナンスモードに入りました。5.3.27」が5.3系列の通常の最後のバージョンとなり、これ以降はセキュリティ修正のみの対応となります。この対応は1年間継続され、その期間中に5.4系または5.5系への移行が推奨されています。Zend由来のオペコードキャッシュが標準にPHPの内部では、読み込まれたソースコードはオペコード(opcode)と呼ばれる内部状態に変換された後、エグゼキュータによって実行されます。プログラムを実行するたびにソースコードからオペコードへ変換していると処理性能が落ちるので、一度変換したオペコードをキャッシュしておいて再利用する高速化手法があります。この仕組みは、PHPでは一般的に「オペコードキャッシュ」と呼ばれます。MMCache、APCなどいくつかあります。5.4ではAPCが一般に使用されていました。PHPのコア部分とは独立して開発されていたため、これまではPHPの新バージョンが公開されたときに、それに対応するAPCが存在しないなどの問題がありました。5.5では、オペコードキャッシュの仕組みが本体に組み込まれました。Technologiesが開発していたものです。Optimizer+をPHPライセンスに変更するので、PHP本体にマージしてほしい」という内容がPHPの開発者メーリングリストに提案されました。Comments)には、そこに至った背景のみならず、APCとZO+との詳細な比較表も含まれており、興味深い内容となっています。5.5.0以降には標準でビルドに含まれるようになりました。配布状態の「php.ini」ではOpcacheは有効に設定されていません。使用するには、php.iniに以下の記述が必要です。5.5で文法上、最も大きな追加として挙げられるのはジェネレータ構文でしょう。ジェネレータとはイテレータのような反復処理を簡単に書けるようにする構文です。ジェネレータを利用した最も簡単なコードの例を挙げます。"\n";このプログラムの中で呼び出しているsimpleGeneratorは、一見普通の関数に見えますが、yieldというPHPでは見慣れない構文が3行記述されているだけです。このプログラムを実行すると、次の結果が出力されます。3ジェネレータ(上の例ではsimplegGenerator)は、呼び出されると最初のyield文までを実行して、yield文によって呼び出し元に値を返します。その際PHPは、実行されたyield文の位置を保存しておき、次にそのジェネレータが呼び出されたときには、そのyield文の次の行から実行を再開します。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。