Written by Jani Tarvainen, Senior Developer at Exove

 

過去

 PHPは、ウェブを動かす最も人気のあるプログラミング言語の1つです。これは20年間も使用されてきており、テクノロジーが絶えず移り変わるウェブの世界では、立派な業績の1つです。PHPは2000年代早々に現在のような人気を獲得し、その勢いに止まる気配はありません。

 オープンソースのテクノロジーとしては、共有することは、PHPを使って作業をする上では常に自然な一部となってきました。しかし、協働することは、必ずしもPHPのコミュニティを決定付ける特徴となってきたわけではありません。その停滞の1つには、膨大なコードのライブラリの中から、各自のアプリケーションに導入するための、特定の機能を持ったコンポーネントを選択することが難しいということがありました。そして、この数年間でやっと、PHPのコミュニティは、この問題を克服し、その知識を共有することを学んだのです。

 PEARや、数多くのフレームワークやアプリケーションなど、様々な努力が行われてきました。そのそれぞれが、独自のコードやイデオロギーを持っています。RSSフィードをパースするMagpieなど、世界的に人気のライブラリなどもあります。しかし、全体的に見れば、このコミュニティの中には、暗黙の障壁があったようです。この希薄なコミュニケーションによって、多くのグループが、既にどこかで解決されている共通の問題に取り組むことになり、本質的には、全員の時間と努力を無駄にすることとなってしまったのです。

 多くの組織は、簡単に適切なものを選別して製品に適用できるような、再利用可能なコンポーネントの開発にも取り組みました。eZ Systemsは、質の高いPHPコンポーネント・ライブラリであるeZ Componentsの開発に取り組みましたが、このようなコンポーネントをインストールする標準的な方法がない市場において、普及させることはできませんでした。eZ Componentsは、今日でもZeta Componentsとして利用されているため、eZは時代を先取りしていたと言うことは可能かもしれません。

現在

 その名前が示唆するように、The PHP Framework Interop Group (PHP-FIG) は、これらのコミュニティをまとめるために、2009年に設立されました。PHP言語そのものの改善とPSR (PHP Standard Recommendation) の取り組みは、現代のPHPへの道を切り開くのに役立ちました。2012年には、パッケージ管理ツールのComposer (依存関係の管理ツールを含む) がリリースされ、これにより、今日私たちが利用しているPHPのエコシステムが完成しました。

 今私たちには、共有されたコードを配布、インストール、実装するための標準的メカニズムを備えたコミュニティがあります。多くのプロジェクトが完全に、共有されたコンポーネント上に設計されているのに対して、コンポーネントをそれぞれのレガシーコードに時間をかけて取り込んでいるものもあります。

 現代のPHPのフレームワークは、あるパーツを組み合わせて、そのパーツ以上の物を作るのに必要な、諸要素を1つにつなぎ合わせる接着剤のようなものだと考えることができるでしょう。しかし、違う種類の接着剤を使うと、別のフレームワークができることにもなります。場合によっては、数ヵ月持続させるための柔軟なボンドで十分なこともあるでしょう。また別のケースだと、10年、あるいはそれ以上持続するようなフレームワークが欲しい場合もあります。Symfonyのコンポーネントとフレームワークは、この後者の場合に有効かもしれません。

 The Symfony Componentsは、非常に特殊なタスクのための独立型コードを集めたものです。開発者はこれらやその他のコンポーネントを、自分のアプリケーションを組み立てるのにふさわしいと思う場所に、適当な方法で、使用することができます。これにより、開発者は、様々なプロジェクトで、慣れ親しんだテンプレート構文を使うことが可能になるのです。

 The Symfony Frameworkは、コンポーネントを使ってアプリケーションを作るために使われる、標準的なフレームワークのコードです。アプリケーションは、常にある特定の構造と共に作られ、この構造により、機能性を完全に維持したコード (Symfonyの用語ではバンドル) を、様々なプロジェクトで再利用することが可能になります。コンポーネントを使って構築するのであれば、そのソフトウェアがどのように利用可能なパーツを使ったのかを学習するのに、時間を費やす必要が出てくるでしょう。

 あるコンポーネントを使用すれば、ローレベルで検索エンジンに接続することが可能になるかもしれません。バンドルは、コンポーネント上で完全な形のフィーチャーを素早く作成できるような追加のコードや機能性を含むことができます。例としては、データを保存したり、検索エンジンでクエリを実行することなどが挙げられます。他の例としては、独自の仕様のアプリケーションに、管理コンテンツを表示させるために、eZ Platform Coreを、自分のアプリケーションに入れることなどが考えられるでしょう。

 直接的なコードの共有に加えて、フレームワークが共有されることにより、開発者はアプリケーション間の移動をスムーズに行えるようになります。ご自身のカスタムプロジェクトやeZ Platform、OroCRM、Symfony CMFなどのオープンソースのプロジェクトは全て、同じコード構造や規定、用語などを共有しています。これにより、プラットフォームを越えた製作が、さらによりシンプルになるのです。

未来

 技術的構造の改善と共に、SymfonyのロードマップやLTS (長期サポート) のリリースは、ビジネスユーザーにも開発者にも、安定性を提供するでしょう。TrivagoやSpotify、Fox Internationalなどは、いずれもそのウェブプロパティやAPIエンドポイントにSymfony Frameworkを使っていますが、これらの多くの企業がその良さに注目しています。

 ウェブが本来、不安定なものであることは、注目に値することです。PHPやSymfony Frameworkは、皆さんのアプリケーションのコアとして機能するように位置づけられていますが、その核心的な機能性の周辺に、サポート技術を取り入れることを検討するのが賢明でしょう。

 抽象度の高いものを組み込めるSymfony Bundlesは、数多く利用可能です。MongoDB文書データベースやNeo4jグラフデータベース、検索用のElasticSearch、配布用のVarnish、メッセージング用のRabbit MQなどを取り込むことができます。

 特定の使用例では、PHPは理想的なプラットフォームではないかもしれませんが、ErlangやNode. JSを使った分離配布レイヤの作成も完全に可能で、これらはいずれも、コンテンツやデータの管理を、お使いのSymfony Frameworkのアプリケーション内で行うことができます。

 PHP言語の20年間と、eZ Systems (eZ Platformのクリエイター) の15年間の経験と、SensioLabs (Symfonyのクリエイター) の経験を組み合わせることで、ビジネスユーザーと開発者は今、未来に適合させることのできる、安定的ながらも俊敏なプラットフォームを手にしているのです。

Load Comments
loading...