近年、Webアプリケーションの構築にphpフレームワークというものが多用されていることをご存じでしょうか?
phpフレームワークを使うと非常に効率的な開発が可能になるので多用されているのですがphpフレームワークには沢山の種類があり、どれが自社の開発に合っているのか迷ってしまうことも多いものです。
そこで、まずphpフレームワークとは何かを解説し、数あるphpフレームワークを御紹介しつつ、それらを使うメリット、デメリットも併せて御紹介し、皆さんの判断材料にして頂ければと思います。
phpフレームワークとは
フレームワークとは
フレームワークとはWebアプリケーションやシステム開発を行う上でプログラムの土台やひな形、必要となる機能などを提供してくれるもので、プログラムを1から開発しなくても良いようになっているものです。
-
Webアプリケーションやシステム開発を行う上でプログラムの土台やひな形、必要となる機能などを提供してくれるもので、プログラムを1から開発しなくても良いようになっているもの
フレームワークを使うと、あらかじめ用意されている土台、ひな形を元に開発できるので開発の手間が非常に省けます。
また必要となる機能も事前に提供されているので、それを使えば良く自分で作る必要がなくなるので、非常に効率的に開発作業を進めることができるのです。
従って初心者でも比較的、短期間でプログラムを作ることができるようになります。
ですがフレームワークは使用する言語によって異なりますので、どの言語を使うかによって選ぶべきフレームワークは変わります。
またフレームワークを使う場合は「フレームワークの使い方を覚える」という事前作業が必要となります。
phpフレームワークとは
php言語はHTMLの中に組み込むことが出来、サーバー側で動的にWebページを生成させることができる機能を持っている便利な言語でWebアプリケーションの開発では主流となってきている言語です。
-
HTMLの中に組み込むことが出来、サーバー側で動的にWebページを生成させることができる機能を持っている便利な言語
また仕様や文法が簡単なので習得しやすいという特徴も持っています。
phpフレームワークは、このphp言語に特化したフレームワークでphp言語を使って開発を行う時の土台やひな形を提供してくれます。
-
php言語に特化したフレームワークでphp言語を使って開発を行う時の土台やひな形を提供してくれるもの
また、よく使われる機能などもphpフレームワークが提供してくれるものを使えば良いので、php言語を使ったWebアプリケーションやシステムの開発が非常にスムースに行えるようになるのです。
phpフレームワークを利用するメリット
開発の効率化
フレームワークは、そのまま利用できるテンプレート、クラス、ライブラリ、API等で構成されています。
従って大部分のコーディングはそれらを使えば良く、大幅に手間が省けます。
更にデザインのカスタマイズも簡単に出来るので作業効率の大きな改善に繋がるのです。
コードの統一化で大人数の開発に便利
チームで開発を行う際、フレームワークを使用するとコードの統一性が保てるというメリットがあります。
コーディングはエンジニア毎に書く内容が異なるため、コーデイング規約があっても個々に開発すると全体の統一性が保てなくなるのは、或る程度まで避けられません。
かといって1人のエンジニアに全てをコーデイングさせたらスケジュールが間に合わなくなってしまいます。またスケジュールが押していると、つい「作ることが優先」でコーデイング規約が守りきれないこともあります。
しかし、それは保守性を極端に悪くしてしまいますし、プロジェクトによってはコーデイング規約に厳しい所もあるので最悪、の場合「作り直し」となってしまうこともあります。
- エンジニアごとに書く内容が異なり、統一感がなくなる(チーム開発の場合)
- 1人でコーディングすると納期に間に合わない
- スピード重視だとーデイング規約が守れず、作り直しになることも
しかしフレームワークという共通ルールを使えば、そういった事態を回避でき保守性に優れたものを作ることができるのです。
また全員がフレームワークの共通ルール上で作業をすれば必然的に「同じようなコーデイング」になるので開発に参加させる人数を多くすることもできます。
それは開発スケジュールを守るのに非常に有効な手段であることは言うまでもありません。
セキュリティ対策が高い
セキュリティ対策の知識はエンジニアによって高低がありますので、個々にコーデイングするとセキュリティの低いプログラムが混じってしまう可能性があります。
しかしフレームワークで提供される機能部品は、セキュリティ対策が、あらかじめ施されていますので、フレームワークを使うと個々のエンジニアのセキュリティ知識の高低に関係なく一定以上のセキュリティ対策が施された物ができ上がるのです。
バグの減少
人間が作る以上、コーデイングにおいてバグは避けて通れないものです。
しかしフレームワークから提供される機能部品を使えばエンジニアがコーデイングする全体量、そのものが減りますので、その分、バグの発生率は下がります。
さらにフレームワークの提供機能にバグはありませんので、バグが発生した場合でも発生個所の特定が早くなり迅速な対応が可能となります。
phpフレームワークを利用するデメリット
カスタマイズしにくい場合がある
フレームワークは全体の土台、ひな型と各種機能を提供してくれますが、細部はどうしてもエンジニアが自分で作らなければなりません。
また、必要とされる機能がフレームワークに無い場合は自分で作るしかありません。
これはやむを得ないことですが、あまりにも細部に凝ったものが多かったり、特殊な機能が多数、必要となるようなケースではフレームワークを使うことが、かえってコーデイングの邪魔をしてしまうこともあります。
ですので、特殊なWebアプリケーションやシステムを開発する場合には、フレームワークを使うことが、かえってマイナスとなってしまうことも有り得るのです。
学習時間が必要
phpフレームワークを使うには、まずphp言語を習得する必要があり、更にフレームワークについての学習をすることが大前提です。
ですので、習得するための時間がかかってしまうのはやむを得ないデメリットです。
しかしフレームワークは、元々、phpを使いやすくするために作られた物ですので、学習時間は、それほど多くはかかりません。
ですがドキュメントは英語で作成されていることが多いのでエンジニアは英語能力が必要とされることが多く、それがネックとなることもあります。
また普及度が低いフレームワークでは、そもそも情報、そのものが少ないこともありますので注意が必要です。
費用が掛かるフレームワークもある
フレームワークの多くはオープンソースとなっており、無料で利用できますが有料のものあります。
一般的に有料のフレームワークはオープンソースのものより多機能なので利便性は高いのですが、やはり有料となるとコストが気になると思います。
自社における開発に必要な機能があれば良いので、無理に多機能なものを入れる必要はありません。
機能内容をよく確認しコストパフォーマンスを考慮して選択する必要があります。
知識がフレームワーク中心の内容に偏る
フレームワークを使った開発は簡単で早く品質も高いのですが、エンジニアの育成という面から見るとマイナス面もあります。
フレームワークありきの開発体制だと、どうしてもフレームワークに対する知識量が多い方が良いので知識がフレームワークに偏った内容になってしまいがちなのです。
もちろん、それはそれで良いことではありますがエンジニアにとって「フレームワークが無いと開発作業ができない」というのは転職などを視野にいれた場合、転職先が限られてしまうという問題につながります。
また常にフレームワークを使っているとフレームワークが提供していない機能を自分で作らねばならなくなった時に必要な論理的思考能力が培われているエンジニアがおらず対応てきないということもあり得ます。
つまり難易度の高いシステムの開発はできなくなってしまう、という可能性があるのです。
長所があれば必ず短所もある、ということを良く理解したうえで導入を検討して下さい。
php開発フレームワークを選ぶポイント
php開発フレームワークは沢山の種類が出ています。
その中のどれを選べばよいか。採用基準を考えてみましょう。
学習が簡単かどうか
フレームワークを使った開発は、まずエンジニアがフレームワークを学習する必要があります。一度、覚えてしまえば大丈夫なのですが、最初はそれなりの時間がかかることは覚悟せねばなりません。
開発プロジェクトにおいてエンジニアの稼働日数は人件費となりますのでエンジニアの学習時間はできるだけ短い方が良いことになります。
そのためには学習が簡単かどうか、がポイントとなります。つまり学習が難しいフレームワークよりも簡単なものをを選んだ方がコストパフォーマンスが良いのです。
一般的なオープンソースのフレームワークでは機能的に大きな差は無い、と考えて良いので学習の難易度は選ぶ際の重要なポイントとなります。
トレンドにあっているか
phpフレームワークは沢山の種類が出されています。
そして「良く使われているもの」、つまりトレンドに合っているものと、そうでないものがあります。
トレンドに合っている物は沢山の人が使っているので情報量も多く、問題にぶつかったときに解決策を見つけやすく、よりうまく使う情報も入手できる可能性があります。
一方、トレンドでないフレームワークは情報量が少なく、問題点の解決や、よりよい使い方の情報が入手しづらいという大きな欠点があります。
またトレンドに合っているフレームワークは、既に沢山のものが納品されていますので。そういったものに対する修正作業、改修作業などもやりやすいので安心して受注できます。
特徴 | |
---|---|
トレンド | 情報量が多く、問題があるときにも解決策が見つかりやすい |
非トレンド | 情報量が少なく、問題点の解決や、よりよい使い方の情報が入手しづらい |
フレームワークにおいてトレンドであるか否かは選ぶ際の重要なポイントとなるのです。
おすすめのphpフレームワーク
それでは、現在、良く使われているphpフレームワークを10点、ご紹介しましょう。
Laravel
2011年に登場し人気が急騰しているフレームワークです。
Laravelは分かりやすく習得しやすいので初心者でもすぐに書き始められるのが魅力で、日本語のドキュメントが豊富にあることも大きなメリットです。
使用者が多いので情報量も多く、困ったときでも解決法が見つけやすいのも長所です。
またライブラリが充実しているのでYouTubeとの連携や管理者ページの作成も容易なフレームワークです。
- 分かりやすく習得しやすい
- 日本語のドキュメントが豊富
- 使用者が多く、情報量も多い
- ライブラリが充実しているのでYouTubeとの連携や管理者ページの作成も容易
CakePHP
2005年に登場したオープンソースのフレームワークです。
名前の由来は「ケーキを焼く様に簡単にphpで開発ができる」というポリシーから付けられたものです。
MVCという、機能を「Model」(モデル)、「View」(ビュー)、「Controller」(コントローラ)の三つの役割に分離する保守性・開発生産性に優れた方法を採用しているのが特徴です。
またbakeコマンドによるプログラム自動生成機能があったり、日本語のドキュメントが豊富にあることも大きな魅力です。CakePHPは求人・案件数も多く、人気の高いphpフレームワークと言えます。
- 保守性・開発生産性に優れた方法を採用している
- プログラム自動生成機能がある
- 日本語のドキュメントが豊富
Symfony
2005年に登場したオープンソースのphp5用フレームワークで、MITライセンスに基づいています。
Symfonyは機能テストやデバックツール群が標準装備されており非常に便利で信頼性が高く、更に毎年2回リリースアップされるなどサポートもしっかりしており保守性と安定性に優れたフレームワークです。
しかしLaravelやCakePHPと比較すると使っているエンジニアの数が少ないのが難点と言えます。
- 機能テストやデバックツール群が標準装備されている
- 更に毎年2回リリースアップされる
- LaravelやCakePHPよりは使用しているエンジニアの数は少ない
CodeIgniter
2006年に登場したPHPフレームワークです。
CodeIgniterはコーディング規約の制限が緩く、自由度が高いのが特徴でCakePHPと同じくMVCモデルを採用しています。
コードが簡単なことが大きな特徴で、軽量のWebアプリケーション開発に向いているフレームワークです。
- コーディング規約の制限が緩く、自由度が高い
- CakePHPと同じくMVCモデルを採用している
- コーディングが比較的簡単
ZendFramework
php5用のフレームワークで、やはりMVCモデルを採用しています。
ZendFrameworkの技術パートナーにはMicrosoft、IBM、Googleといった名だたる大企業が参加しており信頼性、抜群のフレームワークです。
またZendFrameworkは他のフレームワークほど規約を使わないので拡張性が高くアプリケーションに応じて上書きできると言う特徴も持っています。
- 技術パートナーが大企業
- 拡張性が高くアプリケーションに応じて上書きできる
Phalcon
Phalconは、2012年に登場したフレームワークで、動作が高速である事が特徴です。
フレームワークコア部分がひとつのphp機能拡張としてC言語で実装されており、それによりphpの文法解析やオペコード変換処理が必要ないので非常に高速に動いてくれるのです。
- 動作が高速
Slim
Slimはオープンソースのフレームワークで、シンプルな構成からマイクロフレームワークとも呼ばれています。
軽量である事が特徴でシンプルなWebアプリケーション、API開発に向いています。
Slimはとにかくシンプルなので習得しやすく学習のための人件費がかからないのが最大のメリットですが、Psr7という機能オブジェクトを使用する事ができますし、ミドルウェアを使ってDBへのアクセスも可能です。
もちろんPsr7やミドルウェアを使うにはSlimとは別の知識が必要となりますが、他の高機能オブジェクトも組み込んで使うことができるのはSlimの大きな特徴です。
- 軽量
- 学習コストが低い
- 他の高機能オブジェクトも組み込んで使える
Yii
Yiiはコンポーネントベースのフレームワークです。
コンポーネントとは「用意されている機能群」のことで、これらの中から適切なものを選んで組み合わせてシステムを作り上げる訳です。
残念ながらコンポーネント手法によるシステム開発は事前にコンポーネントを選別する作業が必要とされ、この作業は相当に大変なことですので日本では、まだあまり行われていません。
しかし世界レベルで見るとコンポーネント手法によるシステム構築は段々と普及し始めており、いずれ主流となる可能性もありますが、いずれにしろ大規模なシステムの構築に向いた方法で主にポータルサイトやCMSの構築に使われています。
- コンポーネントベースのフレームワーク
- 海外では主流となる可能性があるものの、日本ではあまり使われていない
- 大規模なシステムの構築に向いている
FuelPHP
FuelPHPは、2010年に登場したオープンソースのフレームワークで、高速かつ軽量な点が特徴です。
FuelPHPは、先にご紹介したCakePHP、CodeIgniter、Symfonyなどの長所を活かしており、かつ軽量、高速なので高度な内容の開発に向いています。
またCakePHP、CodeIgniter、Symfonyを習得された方には理解しやすいフレームワークですので、こういったフレームワークを使われている方は覚えておくと「いざと言う時」に役に立つフレームワークでもあります。
- 高速かつ軽量
- CakePHP、CodeIgniter、Symfonyを習得された方には理解しやすいフレームワーク
Flight
Flightは、シンプルをコンセプトに開発されたフレームワークで、ドキュメントもシンプルで誰でもすぐに使用できるフレームワークです。
しかしFlightはRESTfulWebアプリケーションというサーバーとのデータのやり取りを行い、場合によってはサーバー側のデータ更新も行うアプリケーションの開発を目的に作られているので、それ以外のアプリケーション開発にはあまり適していません。
逆に「簡単にサーバーとデータのやりとりをしたい」というアプリケーションには威力を発揮するフレームワークです。
- シンプルをコンセプトに開発されたフレームワーク
- 誰でもすぐに使用できる
- 「簡単にサーバーとデータのやりとりをしたい」ときにおすすめ
phpフレームワークのトレンド
10種類のフレームワークをご紹介してきましたが、この中で現在、最もトレンドに乗っているのはLaravelです。
とても書きやすいので、今、一番勢いに乗っているフレームワークだと言えるでしょう。既に日本国内ではLaravelのコミュニティなども存在しています。
日本国内での使用ユーザーが多いので情報が入手しやすく、元々、ライブラリが充実しているので、何か問題が発生しても解決策が見つけやすいのがLaravelの良い点です。
Laravel以外のフレームワークは正直、伸び悩んでいるというのが実情で、この状況は、ここ1年間、全く変化していません。
- 最もトレンドのフレームワーク
- 書きやすく
- コミュニティがある
- ライブラリが充実しており、情報量が多い
フレームワークというのはOSと同じで「使っている人が多い」ほど「選択する人も多くなる」ので、Laravelの優位性は当分の間、変わらないと見て良いでしょう。
まとめ
「知識がフレームワーク中心の内容に偏る」という弊害がありながらもフレームワークは着実にユーザーを増やしています。
やはり便利なものは当然のように普及していくものだ、ということでしょう。考えてみれば、8ビットコンピュータの時代には「メモリアドレス」はIT技術者には必須となる知識でした。
しかし、現在では「メモリアドレス」を知らなくても、次々と良質なシステムが作られています。
そして、それは間違いなく「進歩」なのです。
つまり「知識がフレームワーク中心の内容に偏る」ことは、時間が立てば、もはやデメリットでは無くなるかもしれないのです。
むしろ「「フレームワークの知識があればIT技術者としては十分」という時代に向かっていると考えるべきなのかもしれません。技術というのは「誰にでも扱える」ようになることが進歩だと言って良いのでしょう。
特別な訓練を受けた人だけが宇宙に行けた時代は去りつつあり、ごく普通の人達でも宇宙旅行が楽しめる時代になってきていることが、それを証明しているのではないでしょうか。
システムを作る仕事が「より簡単に、より確実に」行えるようになることは間違いなく進歩です。
そしてIT技術者は、その進歩に乗り遅れてはならないのです。何故なら、それがIT技術者の仕事、なのですから。