「Phalanger」の版間の差分
imported>Administrator |
|||
(6人の利用者による、間の11版が非表示) | |||
1行目: | 1行目: | ||
− | '''Phalanger''' | + | '''Phalanger'''(読み:ふぁーれんじゃー)とは、[[PHP]]で書かれた[[プログラム]]([[ソースコード]])を[[Mono]]および[[.NET Framework]]上で実行するPHP実装、および[[Visual Studio Shell]]をベースとした[[統合開発環境]]([[IDE]])である。大雑把に言えば[[IronPython]]や[[IronRuby]]と同じようなものの[[PHP]]版である。 |
− | + | ||
+ | PHP 7.x系互換の製品は「[[Peachpie]]」という名称になった。 | ||
== CLR版とDLR版 == | == CLR版とDLR版 == | ||
− | Phalangerプロジェクトでは、[[PHP]]の[[ソースコード]]を事前に[[コンパイル]]を行う[[共通言語ランタイム]]([[CLR]])向け[[コンパイラ]]と、[[インタプリタ]]風に扱える[[動的言語ランタイム ]]([[DLR]])向けコンパイラの2種類を提供している。 | + | Phalangerプロジェクトでは、[[PHP]]の[[ソースコード]]を事前に[[コンパイル]]を行う[[共通言語ランタイム]]([[CLR]])向け[[コンパイラ]]と、[[インタプリタ]]風に扱える[[動的言語ランタイム]]([[DLR]])向けコンパイラの2種類を提供している。 |
− | CLR版は[[C Sharp|C#]] | + | CLR版は[[C Sharp|C#]]などと同様に事前に[[コンパイル]]し実行ファイルなどを生成する方式となっている。Phalangerは[[PHP]]で書かれた[[アプリケーション]]の[[セキュリティ]]向上と[[パフォーマンス]]向上、および完全な[[64ビット]]対応を主目的として[[開発]]が進められており、CLR版はPHP向けソースコード品質検証ツールとしての意味合いも強い。また、[[CLR]]版を用いて[[PHP]]で書かれた[[ソースコード]]を[[共通言語基板]]の[[マネージコード]]に変換しておけば[[プロプライエタリ]]な[[アプリケーション]]向けの簡易的な[[難読化ツール]]としても使える。 |
− | |||
− | DLR版は純正[[PHP]]と同様の使い勝手を実現したものであり、使い勝手は[[インタプリタ]] | + | DLR版は純正[[PHP]]と同様の使い勝手を実現したものであり、使い勝手は[[インタプリタ]]に近く、[[クラス]]や[[関数]]などは初回利用時に動的に逐次コンパイルが行われ実行される。なお、コンパイル結果物はキャッシュされ、クラスや関数を再度使用する際にはコンパイルは行われずにキャッシュを用いて実行されるため、多くの場面において非常に高速に動作する。 |
− | + | なお、PhalangerプロジェクトではPHPアプリケーションの[[セキュリティ]]向上のためにも、Webアプリケーションの開発中はDLR版で手軽に、本番運用前にはCLR版で事前に完全にコンパイルが通り警告なども完全に出ない状態にするのが望ましいとしている。 | |
== 互換性 == | == 互換性 == | ||
− | Phalangerは多くの[[PHP]] | + | Phalangerは多くの[[PHP]]アプリケーションを無改造で動かすことができる。公式サイトでは動作例として[[WordPress]]や[[MediaWiki]]、[[phpMyAdmin]]、[[phpBB]]などが紹介されている。なかでもWordPressはコンパイル済みの物が[[WordPress.NET]]として公開されている。 |
− | + | ||
+ | なお、Plalangerで使用できるPHP拡張モジュールは純正ほど充実しているとは言い難く、欠落している拡張モジュールを使用しているようなアプリケーションの場合は動作しない。しかしながら[[データベース]]関連のモジュールや[[マルチバイト文字列]]拡張(mbstring)などの需要の高い拡張モジュールは続々移植されている<ref>https://github.com/DEVSENSE/Phalanger/tree/master/Source/Extensions</ref>。これらは[[GitHub]]上で開発が行われており参加も容易であるため更新速度も極めて早い。 | ||
== パフォーマンス == | == パフォーマンス == | ||
Phalangerは純正の[[PHP]]よりも多くの場面で高速に動作する。 | Phalangerは純正の[[PHP]]よりも多くの場面で高速に動作する。 | ||
− | Phalangerはパフォーマンスに重点をおいて開発されており、[[.NET Framework]](. | + | Phalangerはパフォーマンスに重点をおいて開発されており、[[.NET Framework]]([[共通言語基盤]])を用いる最大の理由もコンパイル時にプラットフォーム非依存の最適化、実行時にプラットフォーム依存の最適化を行うなど、あらゆる時点でPHPプログラムを極限まで最適化するためである。あくまで[[.NET Framework]]は汎用のコンパイラフレームワークとしての利用され、他の多くの.NET Frameworkを用いる[[プログラミング言語]]において大きな特徴として取り上げられることの多い「異なるプログラミング言語間での連携」は二の次のような扱いとなっている。 |
== 歴史 == | == 歴史 == | ||
Phalangerはチェコ共和国のプラハ・カレル大学で始まった[[オープンソース]]・プロジェクトである。 | Phalangerはチェコ共和国のプラハ・カレル大学で始まった[[オープンソース]]・プロジェクトである。 | ||
− | 2008年に開催された[[Google Summer of Code]]において、[[Mono]]開発チームが[[Silverlight]]互換を目指す[[Moonlight]] | + | 2008年に開催された[[Google Summer of Code]]において、[[Mono]]開発チームが[[Silverlight]]互換を目指す[[Moonlight]]プロジェクトのデモンストレーションのひとつとして「[[Silverlight]]の中で動く[[PHP]]」を発表し、Phalangerは一躍注目されることとなった。 |
− | 2009年にはPhalanger開発チームを中心に[[Devsense]]社が設立され商用サポート業務も行われている。また[[Facebook]]上に開設された公式グループ(掲示板のようなもの)では活発な議論が繰り広げられている<ref>https://www.facebook.com/groups/295568806304/</ref> | + | 2009年にはPhalanger開発チームを中心に[[Devsense]]社が設立され商用サポート業務も行われている。また[[Facebook]]上に開設された公式グループ(掲示板のようなもの)では活発な議論が繰り広げられている<ref>https://www.facebook.com/groups/295568806304/</ref>。この商用化に伴い無償版の[[統合開発環境]]は商用版との差別化のための様々な機能制限が入り、結果として絶望的なほどショボくなった。御臨終である。 |
* 2012年03月24日 - Phalanger 3.0 R3 公開 | * 2012年03月24日 - Phalanger 3.0 R3 公開 | ||
38行目: | 39行目: | ||
* [[IronPython]] | * [[IronPython]] | ||
* [[IronRuby]] | * [[IronRuby]] | ||
− | + | ||
− | |||
== 外部リンク == | == 外部リンク == | ||
* [http://www.php-compiler.net/ Phalanger公式サイト] | * [http://www.php-compiler.net/ Phalanger公式サイト] | ||
* [http://www.devsense.com/ DevSence公式サイト] | * [http://www.devsense.com/ DevSence公式サイト] | ||
+ | * [https://github.com/DEVSENSE/Phalanger ソースコード] | ||
* [http://phalanger.codeplex.com/ Phalanger - The PHP Language Compiler for the .NET Framework] | * [http://phalanger.codeplex.com/ Phalanger - The PHP Language Compiler for the .NET Framework] | ||
* [http://www.facebook.com/group.php?gid=295568806304 Facebookグループ] | * [http://www.facebook.com/group.php?gid=295568806304 Facebookグループ] | ||
+ | |||
+ | == 参考文献 == | ||
+ | {{reflist}} | ||
+ | |||
{{stub}} | {{stub}} | ||
+ | |||
+ | [[category:PHP]] |
2018年2月28日 (水) 01:25時点における最新版
Phalanger(読み:ふぁーれんじゃー)とは、PHPで書かれたプログラム(ソースコード)をMonoおよび.NET Framework上で実行するPHP実装、およびVisual Studio Shellをベースとした統合開発環境(IDE)である。大雑把に言えばIronPythonやIronRubyと同じようなものの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アプリケーションを無改造で動かすことができる。公式サイトでは動作例としてWordPressやMediaWiki、phpMyAdmin、phpBBなどが紹介されている。なかでも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]。この商用化に伴い無償版の統合開発環境は商用版との差別化のための様々な機能制限が入り、結果として絶望的なほどショボくなった。御臨終である。
- 2012年03月24日 - Phalanger 3.0 R3 公開
インストール[編集 | ソースを編集]
関連項目[編集 | ソースを編集]
- F# - F#の中の人が興味を示しPhalangerプロジェクトに参加している。
- IronPython
- IronRuby
外部リンク[編集 | ソースを編集]
- Phalanger公式サイト
- DevSence公式サイト
- ソースコード
- Phalanger - The PHP Language Compiler for the .NET Framework
- Facebookグループ