フレームワークの概念

フレームワークとは

「フレームワーク」という言葉は最近PHPの世界でもよく聞かれるようになりました。
フレームワークって一体なんでしょうか。

PHPは基本的にほとんど0の状態からプログラミングをしていきます。
コーディングは実装者によって千差万別。ひたすら一枚のPHPファイルにダラダラとスクリプトを記述していく人や、ある程度モジュール化する人、オブジェクト指向を取り入れる人、同じオブジェクト指向でもクラス設計も人によってクセや思想が出る。

PHPはとっつきやすい分、いろんな人が手を出し、実装方法も好き放題。それが良いとか悪いとか言う話ではありませんが、例えば複数人数で一つのシステムを開発するような場面があったとしたら話は別です。それぞれが好き放題にやっていてはものすごく作りにムラのあるシステムが出来上がってしまいます。

フレームワークとは、ある程度の基礎的な仕組みを作っておき、アプリ開発時にはそれに乗せるような形で実装をしていく事を可能とするものです。
クラスの名前はこういう規則に従わないと動きませんよ、メソッド名も同じく。ファイルは決められた位置においてくださいね。ただし規則にしたがって作ればとても楽に作れますよ。っていう感じです。

Webアプリとしての土台の仕組みを作っておくのです。
それにより、アプリ実装の労力の軽減、保守性の確保、均質化と可読性の向上などが見込めます。

フレームワークの実装形態

Webの基本的な仕組みとしては、クライアントよりのリクエストを受け取り、そのリクエスト情報をもとにHTMLを生成し、レスポンスとして返すというのが一連の流れです。従来のPHPの実装方法はこれらの流れを1から10まで実装します。URLに対応したPHPファイルを用意し、その中では$_POST等のリクエスト変数を参照してそれをもとに処理を行い、文字列として生成したHTMLをechoなどで出力する。

途中、複数ページで共通するような処理は関数化して別ファイルにモジュール化しておき、これを呼び出す。という感じでしょう。

フレームワークの基本的な考え方はこの逆転と考えてください。
基本的な処理流れはフレームワークに行わせ、ページごとに異なる処理のみを個々に実装する。そしてこの、個々に実装した処理をフレームワークに呼び出させるような形になります。つまり、フレームワークによって自動的に呼び出されるはずのメソッドの中身を埋めていく、という実装方法になります。

実は「PHPオブジェクト指向実践」編で最終的に構築した仕組みは、これに極めて近づいた仕組みです。ページごとにクラスを作成し、ページごとに異なる処理を実装していきました。しかし、それを呼び出すコードは自分で記述し、ページごとのPHPファイルの先頭で呼び出すという手続きがどうしても残りましたが、フレームワークはそれを完全に消す事を実現してくれます。

フレームワーク利用の意義

フレームワークがPHPでも採用されるようになってきた理由としては、

  • PHPで大規模なシステムを開発するケースが増えてきた
  • お仕事として復数人数でPHPのシステムを開発する事により、個人のクセのでる実装方法では収拾がつかなくなってきた
  • 単に流行り

最後のは半分冗談のようですが、流行るにはそれなりの理由があるとも言えます。新しいフレームワークもどんどん出てきて、それぞれ特徴を打ち出していますが、どれも基本思想は同じです。

PHPは意識して構造化を図らないとグダグダなシステムが出来上がります。世間は本当にレベルの低いPHPコーディングであふれています。フレームワーク化すれば全部解決というわけではありませんが、型にはめなくてはいけなくなる分、誰が実装してもある程度の均質化は図れるわけです。