トップページ > 1. ドキュメント > 1.1. 概要 > タスク志向フレームワークとは

タスク志向フレームワークとは

CharcoalPHPとは何か

CharcoalPHPは、以下のようなものであると言えます。

  • PHP製のアプリケーションフレームワークです。
  • フロントコントローラ型フレームワークです。
  • MVC型フレームワークではありません
  • 以下のようなアプリケーションが作成できます。
    • Webアプリケーション
    • REST APIサーバ
    • コマンドラインツール

CharcoalPHPの構成要素

MVC型フレームワークを説明するために「モデル」「ビュー」「コントローラ」という3つの要素が必要になるのに対し、CharcoalPHPは「タスク」と「イベント」という2つの構成要素で説明できます。

  • 「タスク」=処理
  • 「イベント」=契機、きっかけ

タスク志向フレームワーク

CharcoalPHPは「タスク」をベースとしたフレームワークです。「タスク」とはWebアプリケーションに限らず、何かのきっかけ(アクション)に対する処理を行うもので、一連のまとまった処理単位のことを指します。アーキテクチャはWebアプリケーションに依存していないため、バッチ処理、cron、AJAXなど様々な用途に無駄なく対応することができます。

CharcoalPHPは上記のような「タスク」を中心としたフレームワークであるため、一般的なWebフレームワークの多くが採用している「Model-View-Controller(以下MVC)」アーキテクチャとは実装方法がかなり異なります。ただし、全く異なるものではなく、似ている点もあります。

MVC型フレームワークとの類似点

CharcoalPHPは以下の点でMVC型フレームワークと似ていると言えます。

  • データベースなどに格納されたデータをモデル(オブジェクト)として扱う。
  • モデル(オブジェクト)とビューの独立性が高い

MVC型フレームワークとの相違点

CharcoalPHPは以下の点でMVC型フレームワークとは異なっていると言えます。

  • モデル(オブジェクト)にはロジックを書かない(Thin-Model)。
  • コントローラとビューの境界は曖昧(分離することを推奨しますが、フレームワークで強制はしません)
  • ビジネスロジックは「タスク」に集中します。

なぜMVCではいけないのか

CharcoalPHPでは以下の理由で、MVCアーキテクチャを採用していません。

  • ビジネスロジックをどこに記述するかについて迷わなくてよい。それを記述するのは「タスク」です!
  • Webアプリケーションは旧来のクライアントサーバ型アプリケーションに比べ変更の頻度が高いためロジックを見通しやすい構造の方が適している。
    (究極的には手続き型)

MVC型フレームワークでは、よくロジックをモデルに記述するのか、コントローラに記述するのか迷うことがあります。また、ビューに関連するロジックをビュー自体に実装するのか、コントローラに実装するのかも判断が分かれるところです。その結果、プログラマーやプロジェクトによってロジックがMVC各要素にちりばめられ、それらの濃度が統一されていない状態になるため、変更頻度の高いWebアプリケーションにおいてはインテグレーションの足かせとなってしまいます。 通常、CharcoalPHPではビジネスロジックはすべて「タスク」に記述し、ビューに関するロジックも「レンダラタスク」というタスクの一種の実行メソッド内に記述するか、レンダリング対象の「ビュー(テンプレートファイル)」に記述するかなので、ロジックがフレームワークの各要素間で分散することがあまりありません(意図的に分散させることはできます)。ビジネスロジックとビューロジックも自由に切り分けることができるため、ビジネスロジックやユーザーインターフェースの仕様変更に対して即座に対応することができます。 (小規模なプロジェクトでは両者を同じにすることもあります)

Pocket

Comments are closed.