第7章 MVCモデルのフレームワーク

7.1 MVCモデルのフレームワーク

 Webアプリケーションを作成する際に、前章で学んだファイル分割を利用して、役割ごとにクラスやファイルを明確に分けて開発する設計パターンに「MVCモデル」と呼ばれるものがあります。今後はこのMVCモデルに基づいて組み立てた「フレームワーク」を使って実践アプリケーションの作成を行いますので、それぞれの考え方と処理の組み立て方について、説明していきます。

7.1.1 MVCモデル

 MVCモデルとはWebアプリケーションをモデル(Model)、ビュー(View)、コントローラ(Controller)の3つの要素に分割する設計モデルです。それぞれの役割は以下の通りです。

・Model
 インクルードファイル(.incファイル)に記載されたPHPのクラスが担当し、プログラムのメイン処理やデータの保持、データベースの接続・操作などを行います。
・View
 .phtmlファイルが担当し、Webブラウザからの要求に対してWebページを生成し、その結果画面の表示を行います。
・Controller  
 .phpファイルが担当し、プログラムの制御を行います。リクエストにあわせて適切なModel、Viewを呼び出し、処理を実行します。

 3つの要素はプログラムの構造上独立しているので、あるプログラムが変更されても、他のプログラムへの影響が少なくて済みます。

図 7.1.1: MVCモデル

7.1.2 フレームワークとは

フレームワーク【framework】とは一般に次のように定義されます。
アプリケーションを開発する際に、頻繁に使われる汎用的な機能をあらかじめ提供し、アプリケーションのベースとして機能するソフトウェアのことです。
すなわち、いつも使われる部分は初めから作ってあり、アプリケーション毎に変わっていく部分のみを作成していくことで、1つのアプリケーションができあがる仕組みがフレームワークになります。
フレームワークのメリット/デメリットついて次の項で簡単に説明していきます。

7.1.3 フレームワークのメリットとデメリット

■フレームワークのメリット
1. 生産性の向上
 アプリケーションのベース部分にフレームワークを利用することで、ベース部分の開発を省略することができる。その分メイン部分により多くの時間を注ぐことが可能になる。
2. 均質な開発
 フレームワーク利用ルールに従うことで一定の品質を保ったアプリケーション開発ができる。
3. テスト工程の短縮
 フレームワークが提供する機能を利用することで、その部分の単体テストは行う必要がなくなる。
4. 保守性の向上
 ルールに基づき作成するのでアプリケーションの全体像の把握が容易になり、それに伴い保守性の向上も見込まれる。

■フレームワークのデメリット
1. 利用コストが高い
 使用するフレームワークの機能が増えれば増えるほど、構造や処理全体像を把握するのが困難。
2. 学習期間が必要
 フレームワークのルール(機能の使い方)を新たに覚える必要がある。
3. フレームワークのバグ
 顕在化されていない不具合を取り込む可能性がある。
4. フレームワークの選定問題
 開発するシステムに合ったフレームワークを選ばないと、開発要件を満たすことができなかったり、逆にフレームワーク仕様に合わせることで開発コストが掛かってしまう。

 上記でまとめたように、フレームワークにはメリットだけではなくデメリットもあります。
 その上でフレームワークの特性をきちんと把握し利用していくことができれば、システム開発を行う上で大変有用になります。

7.1.4 主なPHPのフレームワーク

 今回の研修ではMVCモデルを使ってフレームワーク的に組み立てるだけですが、実際の現場で使われることが多いPHPフレームワークについて、簡単に紹介いたします。

1. Laravel
2011年に登場したPHPフレームワークです。Love beautiful code? We do tooという理念を掲げ、PHP初心者でも美しいコードを書けるという点が評価されており、GitHubでは、PHPフレームワークの中で最高評価を受けています。
Laravelは分かりやすいだけでなく、コードが書きやすく、すぐに書き始められることなどが魅力です。その他、日本語のドキュメントがあることやサポーターによるライブラリがたくさんあることが特徴で、YouTubeと連携可能なライブラリや管理者ページをすぐに作成できるライブラリなどが充実しています。

2. CakePHP
2005年に登場しオープンソースで開発されたPHPフレームワークで、ケーキを焼く様に簡単にPHPで開発ができるフレームワークを目指して開発されています。Ruby on Railsの影響を強く受けており,Webアプリケーションを高速に開発できます。
CakePHPのメリットは、MVCを採用していることやbakeコマンドによるプログラム自動生成機能があること、日本語に翻訳された優れたドキュメントの多いことなどが挙げられます。なお、現在でもフリーランス求人・案件数が一番多く、人気のPHPフレームワークです。

3. Symfony
2005年に登場したMITライセンスに基づくオープンソースのPHP5用フレームワークです。機能テストやデバックの為のツール群が標準装備されていたり、毎年2回リリースアップされ、サポートについても明確なルールを持っているのが特徴です。保守性と安定性を重視した構造になっており、CakePHPと同様Ruby on Railsの影響を受けています。

4. Codelgniter
2006年に登場したPHPフレームワークで、CodeIgniterはコーディング規約への制限が緩く、自由度が高いという長所があります。CodeIgniterもMVCモデルを採用しており、コードも簡単で軽量Webアプリケーション開発に向いています。

5. ZendFramework
PHP5用MVCフレームワークです。ZendFrameworkの技術パートナーにはMicrosoftやIBM、Googleなど世界の優良企業があり、安心できるPHPフレームワークです。ZendFrameworkは、拡張性が高く他のPHPフレームワークほど規約を使わず、各アプリケーションに応じて上書きできる特徴があります。

 上記で紹介したもの以外にもフレームワークは存在します。各フレームワークのどれが一番いいのかは断言できません。それぞれ目的に合わせた特徴があり、システム開発を行う目的に合わせてどのフレームワークを選ぶかの判断が重要になります。


NEXT>> 7.2 MVCモデルのフレームワークでの組み立て方