フレームワークとは?
PHPプログラマーのスキルで「フレームワークの経験」というものがあります。転職をするときも、よく面接で聞かれます。
私も最近までよくわかりませんでした。お問い合わせフォームなど、よくあるPHPのwebプログラミングは一通りやってきて、MYSQLなどデータベースの操作から、ログイン機能、CSV出力や、メールの送信、Smartyなどのテンプレートエンジンの使用したプログラミング・・・。
大体のことはできます。
でも気になる言葉「フレームワーク」。なんかスゴそう。
そう、フレームワークをマスターするとスゴいんです。色んなことが簡単にできてしまうんです。 今までやってきたよくあるwebの開発、例えば「ログイン機能」とか、「メールの送信」だとかがフレームワークに組み込まれていて、プログラマーは0から作る必要がなくそれらを利用すればいいだけなのです。えっ?「それってPEARのライブラリを利用しているのと同じでしょ」。それはちょっと違います。
PEARのライブラリは大変素晴らしいものですが、ライブラリは飽くまでもライブラリで、プログラム中の必要な部分で利用するものです。
フレームワークはwebアプリケーション全体の枠組みを提供してくれるもので、そのフレームワーク上で書きたいプログラムを書き、そのフレームワーク上で提供されている便利な関数を利用してwebアプリケーションを構築していくことができます。
当然フレームワークの中で、PEARのライブラリを利用することもできます。
フレームワークを使う理由
フレームワークを利用する理由は沢山ありますが、プログラムを書く量が圧倒的に減ることだと思います。最初にwebサーバーにフレームワークを設置して設定をしてしまえば、あとはルールに乗っとって指定された場所にプログラミングをしていくだけなので、どんどん作っていけます。
「このディレクトリ以下は全て認証が必要」なども設定してしまえば、フレームワークが処理をしてくれますので、メインのプログラミングに専念ができるわけです。
また、データベースを利用するときもフレームワークは威力を発揮します。フレームワーク内でテーブルの設定してやることにより、プログラムの中でSQLを書かなくても簡単にデータベースを操作することができるのです。テーブルのリレーション構造も設定すると、一度にUPDATEとかもできます。これらは、フレームワークの中にデータベースを操作するメソッドが用意されていて、引数にデータを配列にして投げることで実現します。
このようにフレームワークで用意されている便利な関数群も使えますし、PEARのライブラリも使えるので、中規模以上の開発はフレームワークを利用することをおすすめします。
私もいくつかのフレームワークを利用して、求人サイト(PC・モバイル)、顧客管理システム(社内ツール)、オークションサイトなどを開発してきました。
いい事だらけのフレームワークですが、デメリットもあります。
デメリット
- フレームワークの利用方法覚えなくてはいけないので敷居が高い
- そのフレームワーク自体の開発が終了してしまうとせっかく覚えたことが使えなくなる。
私にとってもフレームワークの敷居は高かったです。私の処女作は、国産のフレームワークで日本語ドキュメントが豊富だった「Ethna」です。とあるwebアプリケーション(コニュニティサイト)を作りました。Ethnaは今ではちょっと廃れた印象が強いですが、フレームワークの基礎を学べたと思います。
どのフレームワークもMVCという基本的な型があるので、覚えたことは無駄になることはないと思います。でもやっぱり最初はシェアがあるフレームワークがいいですよね。
PHPフレームワークの種類とシェア
私が今まで触ったことのあるフレームワークです。機能の比較は様々なサイトでされているので割愛します。
|
(日本語サイト) |
(日本語サイト) |
国産 |
||
|---|---|---|---|---|
| 総合評価 | ★★ | ★ | ★★★ | ★★ |
| 日本語ドキュメント | △ | × | ◎ | △ |
| 書籍 | ◎ | △ | ◎ | △ |
| 導入サイト | 「女神転生IMAGINE」公式サイト | Yahooブックマークサイト | 有名サイトはあまりないかも。 | グリーとか。 |
| 開発規模 | 中規模 | 大規模 | 中規模 | 小規模 |
| 開発スピード | ★★ | ★★ | ★★★ | ★ |
| モバイルサイト開発 のしやすさ |
○ | × | ◎ Ktai Library for CakePHPってのがあります。 |
◎ グリーがEthnaできているらしい。 |
| 印象 |
人気
上記のフレームワークの名前が、Googleでどれだけ検索されているかを表したグラフです。

採用するポイント
私の一押しはCakePHPです。