API設計の続編です。これもUdemyで出てきた言葉で、理解はできても実際に作るのは難しかったです。(というか何が正解かが分かりませんでした)
MVCアーキテクチャとは
Model、View、Controllerからなるもので、それぞれが独立した処理を行い一つのレスポンスを返すというものです。これも、具体的なシステムがあるのではなく、「作るときに意識しましょうね」というくらいのものだと理解しています。
Modelはデータを表し、リソースがどのようなデータを持っているかを決定します。具体的にはデータベースに接続し、抽出した値を返したり、値を登録、更新したりする役割を持ちます。リソースの種類に応じてModelが必要です。
Controllerは、クライアントからのHTTPリクエストを受け取り、Modelに処理を依頼します。そして、Modelから返ってきたレスポンスを、Viewやクライアントに渡します。機能(処理)の分だけControllerが必要です。
Viewはクライアントが目にする部分で、ページの表示を担います。
このように処理を分割し、独立させることで、コードの再利用性や保守性が高まります。「独立」という部分が大切で、ModelはどのControllerに使われるか、Model自身は知りません。一方ControllerはModelがどんな処理をしているかは知りません。お互いに独立しているからこそ、複数のControllerから呼び出すことができるわけです。
REST APIとの関係
リソースの種類をURIで表し、処理の方法をHTTPリクエストで表すREST APIとの関係も学びました。簡単に言えば「ルーティング」という言葉で表せます。
リクエストのあったパスに応じてControllerを呼び出し、リクエストの種類とデータを渡してあげれば、ControllerがModelに処理を依頼して、Modelがレスポンスを返し、ControllerがViewやクライアントに結果を返します。(クライアントに直接レスポンスを返せば、APIとして機能します)
こうした構造を簡単に作れるようにしたのが、PHPフレームワークだということです。フレームワークという言葉を最初に聞いたとき、「簡単にWEBサイトを作ってくれるんだろう」くらいにしか思っていなかったのですが、全然そうじゃないようです。ModelとかViewとかControllerの作成や呼び出すためのメソッド、ルーティングやミドルウェアの作成などを簡単にできるようにしたのがフレームワークということみたいです。
次はPHPの代表的なフレームワークであるLaravelを学んでみようと思います。
コメント