Phalanger

提供: MonoBook
ナビゲーションに移動 検索に移動

Phalanger(読み:ふぁーれんじゃー)とは、PHPで書かれたプログラムソースコード)をMonoおよび.NET Framework上で実行するPHP実装、およびVisual Studio Shellをベースとした統合開発環境IDE)である。大雑把に言えばIronPythonIronRubyと同じようなもののPHP版である。

PHP 7.x系互換の製品は「Peachpie」という名称になった。

CLR版とDLR版[編集 | ソースを編集]

Phalangerプロジェクトでは、PHPソースコードを事前にコンパイルを行う共通言語ランタイムCLR)向けコンパイラと、インタプリタ風に扱える動的言語ランタイムDLR)向けコンパイラの2種類を提供している。

CLR版はC#などと同様に事前にコンパイルし実行ファイルなどを生成する方式となっている。PhalangerはPHPで書かれたアプリケーションセキュリティ向上とパフォーマンス向上、および完全な64ビット対応を主目的として開発が進められており、CLR版はPHP向けソースコード品質検証ツールとしての意味合いも強い。また、CLR版を用いてPHPで書かれたソースコード共通言語基板マネージコードに変換しておけばプロプライエタリアプリケーション向けの簡易的な難読化ツールとしても使える。

DLR版は純正PHPと同様の使い勝手を実現したものであり、使い勝手はインタプリタに近く、クラス関数などは初回利用時に動的に逐次コンパイルが行われ実行される。なお、コンパイル結果物はキャッシュされ、クラスや関数を再度使用する際にはコンパイルは行われずにキャッシュを用いて実行されるため、多くの場面において非常に高速に動作する。

なお、PhalangerプロジェクトではPHPアプリケーションのセキュリティ向上のためにも、Webアプリケーションの開発中はDLR版で手軽に、本番運用前にはCLR版で事前に完全にコンパイルが通り警告なども完全に出ない状態にするのが望ましいとしている。

互換性[編集 | ソースを編集]

Phalangerは多くのPHPアプリケーションを無改造で動かすことができる。公式サイトでは動作例としてWordPressMediaWikiphpMyAdminphpBBなどが紹介されている。なかでもWordPressはコンパイル済みの物がWordPress.NETとして公開されている。

なお、Plalangerで使用できるPHP拡張モジュールは純正ほど充実しているとは言い難く、欠落している拡張モジュールを使用しているようなアプリケーションの場合は動作しない。しかしながらデータベース関連のモジュールやマルチバイト文字列拡張(mbstring)などの需要の高い拡張モジュールは続々移植されている[1]。これらはGitHub上で開発が行われており参加も容易であるため更新速度も極めて早い。

パフォーマンス[編集 | ソースを編集]

Phalangerは純正のPHPよりも多くの場面で高速に動作する。

Phalangerはパフォーマンスに重点をおいて開発されており、.NET Framework共通言語基盤)を用いる最大の理由もコンパイル時にプラットフォーム非依存の最適化、実行時にプラットフォーム依存の最適化を行うなど、あらゆる時点でPHPプログラムを極限まで最適化するためである。あくまで.NET Frameworkは汎用のコンパイラフレームワークとしての利用され、他の多くの.NET Frameworkを用いるプログラミング言語において大きな特徴として取り上げられることの多い「異なるプログラミング言語間での連携」は二の次のような扱いとなっている。

歴史[編集 | ソースを編集]

Phalangerはチェコ共和国のプラハ・カレル大学で始まったオープンソース・プロジェクトである。

2008年に開催されたGoogle Summer of Codeにおいて、Mono開発チームがSilverlight互換を目指すMoonlightプロジェクトのデモンストレーションのひとつとして「Silverlightの中で動くPHP」を発表し、Phalangerは一躍注目されることとなった。

2009年にはPhalanger開発チームを中心にDevsense社が設立され商用サポート業務も行われている。またFacebook上に開設された公式グループ(掲示板のようなもの)では活発な議論が繰り広げられている[2]。この商用化に伴い無償版の統合開発環境は商用版との差別化のための様々な機能制限が入り、結果として絶望的なほどショボくなった。御臨終である。

インストール[編集 | ソースを編集]


関連項目[編集 | ソースを編集]

  • F# - F#の中の人が興味を示しPhalangerプロジェクトに参加している。
  • IronPython
  • IronRuby

外部リンク[編集 | ソースを編集]

参考文献[編集 | ソースを編集]