フレームワークについて調べよう

このレッスンで学ぶこと

フレームワークとは、アプリケーションの基盤となるものです。ここでは、フレームワークについて紹介します。フレームワークとは何か?使うとどんな良いことがあるのか?どんな種類があるのかについて紹介します。

ここで学ぶポイント

  • フレームワークについて
画面
画面
画面
画面
画面
画面

フレームワークについて

フレームワークを一言で表すなら、アプリケーションの基盤となるものです。PHPでいろいろなアプリケーションを作っていると、「あれ?この処理前も作った気がする」という状況によく遭遇します。データベースへの接続であったり、ユーザー認証の仕組みであったり、データの追加・編集・削除など、こうした処理はWebアプリケーションを作る上で必須の機能です。こうした仕組みを毎回作るとなると、非常に時間も手間もかかってしまいます。そこで、よく作る仕組みをあらかじめ提供しようということで、フレームワークが誕生しました。

また、PHPでのアプリケーション開発を多人数で開発する際には、どこにどんなコードを書くということを決めておけば、修正にかかる時間をぐっと短縮することができますが、フレームワークでも、MVCモデルを採用したり、命名規則やディレクトリ構成などを統一するなどして、アプリケーションの保守性を高める仕組みを提供しています。つまり、コーディングルールや実装方法を決めてしまうことで、ある一定以上の規模のアプリケーション開発の生産性や保守性を高めることができます。

MVCモデルについて

ちなみに、MVCモデルというのは、プログラムを、モデル(Model)、ビュー(View)、コントローラ(Controller)の3つの要素に分割したものです。明確に役割分担を行わせることで、プログラムのどの部分に何を記述すれば良いのかが明確になり、保守性が向上します。それぞれの役割担当は以下の通りです。

モデル(Model)

データの管理を担当する要素です。例えば商品の合計額や送料を計算する処理を担当します。データベースやファイルへの入出力、データの計算などを行います。

ビュー(View)

画面表示全般を担当する要素です。モデルにあるデータを取り出したなら、それを画面に表示するのがビューの役割です。

コントローラ(Controller)

モデルとビューをつなげる役割を果たすのがコントローラです。ユーザーがデータを送信したり、ボタンを押すなど、何かしらの入力を行った場合に、その入力を処理するために、モデルやビューに対して処理を行うよう指示を与える役割を果たします。

※以下の図、Wikipediaからの引用なので作り直す必要があります

http://upload.wikimedia.org/wikipedia/commons/thumb/b/b5/ModelViewControllerDiagram2.svg/350px-ModelViewControllerDiagram2.svg.png

代表的なフレームワーク

PHPには、これという定番のフレームワークはありません。しかし、以下に紹介する「CakePHP」「symfony」「Zend Framework」の3つはよく使われています。

CakePHP

CakePHPはフレームワークの中でも、比較的小さなものとなっているため、小・中規模開発に向いています。素早く手軽に使えることを優先して開発されているようです。フレームワークとして先行するRuby on Railsに強く影響を受けています。初心者が導入しやすいようにサーバーの設定変更や動作環境の整備がほとんど必要ないように作られています。MVCモデルやO/Rマッパなどフレームワークとして必要な機能は揃っています。加えて前節で紹介したSmartyと組み合わせることも可能です。日本語のドキュメントも用意されています。

CakePHP 公式サイト
http://cakephp.jp/
画面
画面

symfony

symfonyはWebアプリケーションの開発と保守の効率化を目的として開発されています。企業内で利用するなど、ある程度の規模でのアプリケーションの構築を目的としています。コマンドラインから様々な管理コマンドを実行することで、各種の処理を行うことができます。MVCモデル、O/Rマッパなどフレームワークに欠かせない機能に加え、テスト支援やデバッグ支援の機能も充実しています。

symfony 公式サイト
http://www.symfony-project.org/
画面
画面

Zend Framework

Zend Frameworkは、PHPの開発に携わっているZend社が中心となり開発を行っているフレームワークです。上記二つのフレームワークよりも後発なのですが、Zend社が開発していることから注目度の高いフレームワークと言えます。各コンポーネントごとの独立性も高く設計されており、他のフレームワークからZend Frameworkを使うといった使い方もできます。原稿執筆時点では、部分的な日本語ドキュメントが用意されています。

Zend Framework 公式サイト
http://framework.zend.com/
画面
画面

O/Rマッパについて

フレームワークにある技術で、手軽な開発を強調するものに、O/Rマッパがあります。

O/Rマッパ(英:Object-relational mapping)とは、データベースとオブジェクトの間のデータ変換を行う技術やライブラリを指します。PHP向けのO/Rマッパとしては、PEARのDB_DataObject、symfonyで採用されているPropel、手軽に使えることを目標に開発されているEZPDOなどがあります。

いずれも、データベースのレコードをオブジェクトのように扱うことができ、SQL文を直接書くことなくアクセスできるのがウリとなっています。(とは言え、最終的には、SQLが生成されることになるので、アプリケーションが本格的になる場合、ある程度、SQLやデータベースの知識が必要とされます。)

次へのステップアップ

ここでは、フレームワークがどんなものか、どのようなメリットがあるのか、どんな種類があるのかについて紹介しました。実際使ってみたくなりましたか?実際に使ってみたいと思ったなら、Webにあるチュートリアルを試したり、フレームワークの解説書を読んでみてください。フレームワークの解説書は、PHPの文法が一通りできていることを前提としたものが多いのですが、本書で得たPHPの基礎知識があれば、きっと、内容を理解できることができるでしょう。