PHP最速フレームワークのPhalconPHP最近触っているのですが、個人的には好きです。
日本ではまだまだ広まっていないですが、導入するメリットは多くあると思います。
ですが同時にデメリットもあるので今回はPhalconのメリット、デメリットについてご紹介していきたいと思います。
PhalconPHPとは
以前の記事でもご紹介しましたが、簡単に。
Phalconは最速のPHPフルスタックフレームワークです。その速さの秘訣はCで書かれたモジュールであるという点にあります。
通常のフレームワークはある程度決められた構成のファイルをプロジェクトに配置して導入していくかと思います。
Phalconの場合はPHPの拡張モジュールとしてCで書かれたPhalconをPHPに読み込ませて使用します。
そのためプロジェクトファイルなどはありません。
Phalcon導入のメリット
まずはPhalcon導入によるメリットについてご紹介します。
- 最速フレームワーク
- 省メモリ
- プロジェクト・アプリケーションの規模に応じた開発が可能
- 拡張性が高く、設計の自由度が高い
- 公式ドキュメント、フォーラムが親切
これらのメリットについて1つずつ見て行きましょう。
最速フレームワーク
これはPhalcon公式ドキュメントやphp-framework-benchmarkでデータが出ています。
従来のフレームワークと比較しても圧倒的速度差があります。高速と言われていたCodeIgniterよりも速く、Cによる拡張のため圧倒的に速く動作します。
PHPで開発をしなければならず、処理速度を求められるような場合はPhalcon一択ではないでしょうか。
省メモリ
こちらも前述のベンチマークのデータを参照していただければと思います。
他のフレームワークと比べて圧倒的に省メモリなことが分かりますね。
拡張として読み込んでいるため、PHPをコアファイルとして読み込んでいる他フレームワークと比べると雲泥の差になります。
プロジェクト・アプリケーションの規模に応じた開発が可能
Phalconでは大きくわけて3つのプロジェクトタイプ、ひな形が用意されており、MicroとSimple(Single-module)、Module(Multi-module)に分けられています。
これはPhalconDevToolsで自動生成できます。
それぞれのひな形によって読み込むクラスなどが違い、プロジェクトの規模などに応じて選択することができるようになっています。
例えば、簡単なREST APIを作成したい場合はMicro、単一のモジュールを作成したい場合はSimple、今後プロジェクト・アプリケーションが拡張されていくような場合はModuleといった使い方です。
また、コアとなるアプリケーションのクラスはプロジェクトのタイプによって違うため、小さいアプリケーションなのに重いクラスを読み込まなければいけない!なんてこともなくなります。(実際Microアプリケーションが一番高速に動作するそうです。)
拡張性が高く、設計の自由度が高い
Phalconは疎結合になっており、各クラスの独立性が非常に高くなっています。そのため、従来のフレームワークのようにそのフレームワークの”お作法”などにとらわれず、開発を進めていくことができます。先ほど、Phalconにはプロジェクトのひな形が用意されていると書きましたが、必ずその通りに書く必要もないのです。
実際、自動生成したひな形は「こう設計するといいよ」お手本レベルで、手を加えやすくなっています。使っているとピュアPHPで書いてるのではないかと思うくらいの自由度でなかなか不思議な気分になりますw
公式ドキュメント、フォーラムが親切
Phalconの公式ドキュメントや公式フォーラムはとても充実しています。
公式ドキュメントは各OS別にインストール方法が載っており、チュートリアルもソースコードと共に複数パターン公開されています。APIの利用方法のサンプルコードも非常に多く、一つの関数を説明するのにいくつもコードを載せていたりします。そのため、公式ドキュメントを眺めているだけてもなんとなく書き方が分かる…ハズ!
個人的には他のフレームワークのドキュメントよりも親切に感じました。公式フォーラムも盛んにやりとりがされており、Phalconの中の人も結構書き込んでいたりします。
Phalcon導入のデメリット
Phalconのメリットをズバズバ挙げていきましたが、デメリットとなりそうな点も挙げてみました。
- 途中からの導入はサーバの再起動が必要
- コアのソースが気軽に読めない
- オレオレフレームワークになりやすい
- 最新のドキュメントは完全英語
- まだまだ発展途上
途中からの導入はサーバの再起動が必要
PHPを運用している本番サーバにPhalconを入れたいです!!!となった場合はphp.iniでPhalconの拡張を読み込む設定を記述しなければなりません。
php.iniの有効化のため、サーバを再起動しなければなりません。プロジェクトによってはこれが一番の壁となるのではないでしょうか。
コアのソースが気軽に読めない
他のフレームワークではコアのソースがPHPで書かれていたりするので、簡単にソースを追うことができます。
ちょっと怪しげな動きをしていたり、使い方がよく分からなかった場合の最終手段としてソースを読んだり書き加えたりができます。
ですが、PhalconはC拡張なのでPHPのソースを追って~ができなくなります。
オレオレフレームワークになりやすい
自由度が高い分、設計段階で構成を色々いじることができます。
つまり、フレームワークによる縛りが弱いので設定やDIにオブジェクトを注入していく段階で様々なコード、オレオレ仕様を詰め込むこともできてしまうのです。
ピュアPHPでの開発時に陥りやすい問題がPhalconでも起こりうるということがあるので、設計は自由だからこそ慎重に行わなければなりません。
Phalconで作成したアプリケーションを引き継ぐ際、オレオレ状態になっていたら保守も大変です。
最新のドキュメントは完全英語
日本ではまだまだ普及していないため、Phalconの解説をしているサイトは他フレームワークとくらべて明らかに少ないです。また、公式ドキュメントは1.3系と2.x系で分かれていますが、前者は部分的に日本語、後者は完全英語となっています。そのため最新のAPIを確認するときは英語を多少読まなければなりません。
しかし、メリットにも挙げましたがサンプルコードが充実しているのでそれとなく使い方は分かってくるかと思います。でもいざ問題が起こった時に英語との戦いになってしまうことは十分ありえるでしょう。
まだまだ発展途上
フルスタックフレームワークということで業務で開発をする際はまず問題ないほどの機能は持ち合わせています。
ですがまだ若いフレームワークということもあり、至らぬ点も多少あります。大きなところは1.3系→2.x系の段階で解消できたようですが、改善点はまだまだあるように思えます。
個人的にはモデルのアソシエーション機能やORマッパーはCakePHPの方が綺麗にコードを書きやすいです。
また、全ては確認していませんが、belongsToアソシエーションで生成するSQLもJOINをせずに一つ一つSQLを投げている状態でした。
一番驚いたのが共通処理を書くクラス。
ModuleとComponent,Pluginというクラスが用意されていますが、中身は全て同じものを継承して固有の機能は未実装でした。
Module,Component,Pluginについてこのフォーラムに書き込みがありましたが、内容的に「だいたいこういう感じで使っておいて。これから実装するから。」という温度感。
とはいってもPhalconの中の人たちはissueに挙げれば割りとすぐに対応してくださるそうなので、至らない点はこれから解決していってくれそうです。
まとめ – 導入するにあたって
メリット、デメリットもありますが、個人的には結構好きなフレームワークです。
業務レベルでREST APIも作成しましたが特に問題もなく開発を完了させることができました。
英語の壁や、発展途上というデメリットもありますが公式はかなりしっかりしているので開発で手詰まりになることはまずないかと思います。
フルスタックで高速、省メモリ!という点は他のフレームワークに負けないほどの強みです。
また、自由度も高いのでプロジェクトの色々な状況に対応できるのではないかと思います。
是非、Phalconを使った開発に挑戦してみてください!
コメント