こんにちは。
プログラミングを勉強されている方は、ソースコードの書き方やロジックの組み立て方を中心に勉強されていると思います。
しかし、実際に仕事としてプログラミングをするようになると、フレームワークを使うことが多くなります。
フレームワークを初めて使う時、どこに何を書けばいいのかが分からないという問題にぶち当たります。
その時に必要となるのがソフトウェアアーキテクチャです。
ソフトウェアアーキテクチャは、たくさんの種類があるため覚えることは困難です。
私は、これまでいろんなフレームワークを扱ってきました。
その経験をもとに、プログラマとして実際に仕事を始める前に知っておいた方が良い、システムアーキテクチャを紹介します。
初心者が学ぶべきソフトウェアアーキテクチャは?
多くのフレームワークを扱ってきた結果、必要なアーキテクチャは「MVCモデル」です。
MVCモデルは、モデル(Model)、ビュー(View)、コントローラ(Controlller)で分割されたソフトウェアアーキテクチャです。
多くのフレームワークで、フォルダ構成がそれぞれ分けられています。
以下で、それぞれの機能について説明します。
モデル
モデルでは、データを扱う処理を作成します。
データベースからデータを扱う処理や、取得したデータを加工する処理です。
ただし、データを加工する処置が様々なクラスから呼び出される場合は、別の共通クラスで扱った方が利便性が高くなります。
ビュー
ビューでは、画面に表示する処理を作成します。
HTMLの作成などのアウトプットの処理がビューになります。
多くのフレームワークでは、モデルから取得したデータを、ビューで代入して表示するようになります。
コントローラ
コントローラでは、制御をする処理を作成します。
インプットされたデータのチェック処置や、出力前のデータの確認などの処理になります。
MVCモデルのメリット
多くのフレームワークでMVCモデルが使用されるのは、メリットが大きいからです。
以下がMVCモデルを使用した場合のメリットです。
- 扱いやすい
- 理解しやすい
- 開発の効率が上がる
- 保守性が上がる
- 機能の分割ができる
以下で、それぞれ説明します。
扱いやすい
多くのフレームワークでは、フォルダ構成が、モデル、ビュー、コントローラで別れているので扱いやすいです。
特に、初めて使うフレームワークでも、フォルダ構成が別れていると、ここにソースコードを入れるんだなって分かります。
途中から参入するプログラマも、この3つのフォルダのみを見ていけば、ソースコードの流れが分かるようになっています。
理解しやすい
MVCモデルは、多くのフレームワークで採用されているため、一度MVCモデルのフレームワークを使ったことがあれば、理解しやすいです。
どこに、どんなソースコードが格納されているかが、ひと目で分かるのでロジックも追いやすいです。
開発の効率が上がる
作成するソースコードは、モデル、ビュー、コントローラと明確に分かれているため、開発の効率も上がります。
特に、モデルは、必要な処理がすでに作られていたりするので、自分でメソッドを作成する必要がなかったりします。
保守性が上がる
フォルダ構成が、モデル、ビュー、コントローラに分かれているため、不具合が発見された時もソースコードの確認がしやすいです。
また、影響範囲の調査もしやすいため、不具合の対応がしやすくなります。
機能の分割ができる
MVCモデルは、それぞれの機能を分けて管理するため、独立性が高くなっています。
ちょっと深い話になるのですが、モデルの場合、データベースへの接続処理などは、継承元のクラスに記述しておけば、継承先のクラスでは書く必要がなくなります。
また、不具合が発生しても、継承元のクラスを修正するだけなので、デグレの発生も抑えることができます。
ビジネスロジックはどこに書くの?
MVCモデルのフレームワークを使っていると、よく問題になるのが、「ビジネスロジックをどこに書くのか?」という問題です。
ビジネスロジックというのは、機能のメインとなる処理です。
私が経験してきたプロジェクトでは、コントローラに書く場合やモデルに書く場合、そして、ビジネスクラスを別に作る場合とさまざまでした。
私の個人的な意見としては、ビジネスロジックはモデルに書いた方が良いと思っています。
大きな機能の場合は、モデルクラスが大きくなってしまうので、その場合は、ビジネスクラスを別に分けることも必要かなとも思っています。
まとめ
今回は、「初心者が勉強するべきソフトウェアアーキテクチャは?」と言うことで、「MVCモデル」を紹介しました。
MVCモデルは、モデル(Model)、ビュー(View)、コントローラ(Controlller)で分割されたソフトウェアアーキテクチャです。
多くのフレームワークでは、MVCモデルが採用されているので、プログラミングの勉強と一緒に勉強しておくことをお勧めします。
MVCモデルのメリットとしては以下になります。
- 扱いやすい
- 理解しやすい
- 開発の効率が上がる
- 保守性が上がる
- 機能の分割ができる
扱いやすいMVCモデルですが、「ビジネスロジックをどこに書くか」と言う問題がプロジェクトでは、たまに発生します。
個人的には、モデルクラスにビジネスクラスを書いた方が良いと思うのですが、機能が大きいとモデルクラスが大きくなるので、ビジネスクラスを作ることも検討が必要となります。
MVCモデルは、理解しやすいソフトウェアアーキテクチャなので、一度扱ってみることをお勧めします。
では、今日はこの辺で。
コメント