Zend Server 2018でPHP 7.2が利用可能に
Webサイトの構築に広く使用されているオープンソース言語、PHPは、2006年のIBM i上でのリリース以降、このプラットフォームにしっかりと根付いています。IBM iと同様、PHPは、リリースのたびに機能強化されながら、時代の流れに遅れることなく歩調を合わせてきました。PHPは、IBM iユーザーには無料のベーシック ライセンスが提供されている、Zend Serverという製品を介してインストールされます(有料のプレミアム ライセンスもあり)。
Zend Server 2018(トゥエンティ エイティーンと読む)と呼ばれる最新リリースについて詳しく話を聞くために、Zend社(現在はRogue Wave社傘下)の共同創立者で最高技術責任者であるZeev Suraski氏と、親会社のRogue Wave社シニア プロダクト マネージャー、Mickey Hoter氏にインタビューを行いました。
Zend Server 2018には、PHPのバージョン7.2が組み込まれています。IBM iユーザーにとって最も注目すべき機能強化は、小幅ながら、有用かもしれないパフォーマンスの向上だと言えそうです。PHP 7.0での性能向上ほど劇的ではありませんが、バージョン7.2でも、PHP 7.0および7.1と比較して確かに処理速度が向上しています。あるテスターによるベンチマーク(IBM iではなくLinux上)が、こちらのリンクに掲載されています。
ただし、実際の速度向上は、個々のアプリケーションによって異なります。
PHP 7.2でのもうひとつの機能強化として、セキュリティを実装しやすくする暗号ライブラリー、libsodiumエクステンションがあります。ただし、Zend Server 2018の初期リリースでは、libsodiumはまだ配布されません。バージョン2018の今後のパッチをお待ちください。
Zend Serverの管理と構成
一見、ささいではあるものの有用で便利な機能強化として、IBM iの管理者は、グリーン スクリーンからZend Serverライセンスを更新できるようになりました。WebベースのZend Server管理インターフェースを介さなくても行えるようになりました。何らかの理由でWebサーバーがダウンしているときには、グリーン スクリーンでライセンス エントリーが行えるとより便利です。
時間節約につながる機能強化がもうひとつあります。構成を変更した場合、以前はZend Serverの再起動が必要でしたが、その多くが再起動なしでただちに反映されるようになりました。たとえば、Zend MonitorおよびCachingコンポーネントのルールがあります。私見ですが、この改善により、これらのコンポーネントがはるかに実用的になると思います。管理者はWebサイトを再起動することなく、それらの設定を試すことができるためです。
Zend Server 9.1(前回のマイナー リリース)以降、Pulseという機能により、各機能に関する詳細なデータの表示を行えるようになっています。バージョン2018では、Zend Serverのキャッシング機能にPulseビューが追加され、キャッシュの取得数、ヒット数、ミス数およびサイズの表示により、アプリケーションのキャッシング戦略がどの程度適切に設定されているかを管理者が確認できるようになりました。
Zend Job Queueの機能強化
ZendのJob Queueコンポーネント(IBM iのジョブ キューとはまったく異なる)は、PDF作成やSMTP(電子メール)など、長時間実行される可能性があるジョブを管理するのに役立ちます。非同期で実行され、エンド ユーザーの処理を遅延させることがありません。
Job Queueコンポーネントに対する機能強化には、以下のものがあります。
- コマンド ライン(CLI)スクリプトを、Job Queueによって管理できるようになりました。
- CLIスクリプトには、Webベース スクリプトに優る利点があります。CLIスクリプトはWebサーバー タイムアウトの影響を受けないため、必要に応じて非常に長時間実行できます。
- 以下は、コマンド ラインPHPスクリプトの指定方法についてのスクリーン ショットです。
「Executable」オプションでは、「PHP」または「Other」を選択できることに注目してください。これは、PHPだけでなく、どのコマンド ライン プログラムも、Job Queueを使用して実行できることを意味しています。
- Job Queueスクリプトを終了/中止する機能が追加されました。
- 長時間実行されるスクリプトで、スクリプトの処理が完了したパーセンテージを表示でき、管理者ユーザー インターフェースでスクリプトの進捗状況を確認できるようになりました。
デプロイメントと仮想ホスト
Zend Server 9.1以降、A/Bテストにより、システム管理者は段階的に変更をロールアウトできるようになっています。たとえば、管理者は、クラスター全体にデプロイする前に、クラスターの一部に対してだけ、あるいは、1つまたは2つのノードに対してだけ、アプリケーションのバージョン1.2をロールアウトし、以前のバージョン1.1と並行して新バージョンを実行し、フィードバックを確認することができます。
また、セキュア(SSL有効化)および非セキュアの両方に設定できる複数の仮想ホストで、1つのアプリケーションをホスティングできます。
以前は、管理者はvhostファイルを手動で編集する必要があり、保守は難しいものがありました。アプリケーションごとに複数のvhostを簡単に保守できるようになりました。
未来を見据える
PHPコミュニティでは、すでにPHP 8に向けたアイデアを交換し合ってしており、それらはこちらのリンクから見ることができます。これらのアイデアはまさに準備のためのものであり、Suraski氏によれば「議論についての議論」ということのようです。
PHP 8以降で機能強化されそうな点としては、以下のものがあります。
• JIT(Just-In-Time)コンパイル
• 外部関数サポートにより、エクステンションを書く必要なく、PHPがCまたはC++で書かれたネイティブ コード ライブラリーを呼び出すのが非常に容易になります。PHPは、開発者の生産性を落とすことなく、CPUに負担をかけるアプリをはるかにより効率的に実行できるようになります。
- さらに、PHPが従来のWebアプリケーションの枠を越えて進化するのに役立つ改善点としては、以下のものがあります。
- Node.jsが今日行っているように、高度な同時接続を可能にするために、Webアプリケーションにとって非常に安全である、現在うまく機能しているアーキテクチャーへの機能追加の検討。ただし、現在のモデルは必ずサポートされます。PHPは、エンタープライズでの成功を可能にするのに役立った後方互換性で知られています。
- 非同期I/Oサポートの検討。
PHPの進化
元々Webサイトを構築するために作成されたPHPは、アプリケーション、システム、および新たな種類のフロント エンド フレームワークをつないでいる、今日のアプリケーション プログラミング インターフェース(API)の世界に歩調を合わせてきました。Zeev氏は、Webサービスの作成を簡略化する方法としてはApigility、汎用PHPフレームワークが最大限の柔軟性を提供するためにはAZend Expressiveといったプロジェクトの名前を挙げています。
PHPが今日の他の言語と比べてどうなのか、PHPがなぜ何百万ものアプリケーションで使用されているのかについて、Suraski氏に尋ねてみました。彼は、各Webリクエストが独立しているため、PHPは「自ら墓穴を掘るようなことは実質的に不可能になっている」と述べました。1つのスクリプトにバグまたはクラッシュがあっても、他のスクリプトやユーザーは影響を受けません。PHPが進化および発展して行くとしても、バージョン7.2での場合と同じように、PHPを幅広い開発者の間でポピュラーにさせたコアとなる価値は、失われることなく保持されます。
IBM Championにして、 Seiden Groupの創設者であるAlan Seiden氏は、オープンソース、PHP、Python、およびIBM iビジネス ロジックを使用してクライアントがAPIおよびWeb/モバイル アプリケーションを構築するのを指導する業務を行っています。自身のIBM iコミュニティへの熱い想いに促される形でAlan氏は、年2回開催される CIO Summit を主催するとともに、PHP on IBM iの 技術情報を記載した無償のニュースレターの配信を毎月行っています。