デザインパターンとは、プログラムの処理の導線をあらかじめ決めたルールの事を指します。
今回は、オブジェクト指向言語であるJavaについて考えていきたいと思います。
特に、デザインパターンを考慮しなくても、プログラミングは可能です。
ですが、プログラムを自分の思うがままに記述してしまうと、プログラムの品質が低下してしまいます。
デザインパターンを考慮していないことで、どこに何の処理を書いているのかがわからず、プログラムに修正を加えたいときに無駄な手間がかかってしまう、などの問題が発生することが多いです。
ちなみに、デザインパターンをルールと表現しましたが、コーディングルールとはまた別のルールです。
(ここで言うコーディングルールはプログラミング言語そのものの書き方をまとめたものを指しています)
デザインパターンについて、あまり気にせずにプログラミングしている人は是非読んでみて下さい。
デザインパターンを取り入れることのメリット
- プログラミングの効率化
- 可読性の向上
予めデザインパターンを設計しておくことで、どこに何の処理を記述すればいいのかが明確になります。
つまり、プログラムの内容を理解する時間が減ったり、どこに書けばいいか悩む時間も少なくなって、プログラミングの効率化を行うことができます。
また、後から見返した時にプログラムの内容を誤解無く理解しやすくなることも大きなメリットです。
これは、自分だけでなく、他の人が見返した時も同じなので、プログラムを他人へ引き継ぐことも容易になります。
決められた箇所にプログラムを記述することによって、プログラム全体にまとまりが生まれ、可読性が向上します。
結果的に、一定の記述ルールに基づいてプログラムを設計することで、バグの少ないシステムを構築することができます。
これらのデザインパターンを学ぶ上で、まずは何から取り組んでいけばよいのかが悩みどころだと思います。
そこで、デザインパターンの取っ掛かりとして、よく聞く話にはMVCモデルというデザインパターンがあります。
MVCモデルとは?
Model、View、Controllerを略してMVCと言い、MVCの考え方を取り入れたデザインパターンがMVCモデルです。
例えば、様々なWebシステムに存在するログイン画面で考えてみます。
View
ログイン画面だと、ユーザIDとパスワードを入力するテキストエリア、それとログインボタンが必要になります。
このテキストエリアやログインボタンなどをブラウザに表示するために画面を生成する処理が必要です。
この、画面表示のために必要な処理を記述する領域をViewと呼んでいます。
Controller
ユーザがユーザIDとパスワードを入力した後に、ログインボタンをクリックしてログインします。
ログインボタンがクリックされた後は、入力したデータをサーバに送信して、入力した内容が正しいかどうかを判別します。
サーバで受け取った入力データを元に、入力データが正しいかどうかを判別する処理を動かして、判別を行います。
この時、ユーザがブラウザで入力したデータをまずはサーバ側で受け取る必要があります。
この受け口を記述する領域をControllerと呼んでいます。
受け口で受け取ったデータを元に、必要な処理を起動するまでがControllerの役割になります。
Model
ViewとControllerで、ユーザが入力したデータを”入力内容が正しいかどうか判別する”処理に送るところまで実現できたかと思います。
この、”入力内容が正しいかどうか判別する”という処理を記述する領域がModelになります。
今回は、ログインの処理を例としたので、ゴールが入力内容の判別処理でしたが、他の処理でも基本的な考え方は今と同じです。
Webシステムは様々なサービスがありますが、Viewで表示した画面、入力値を受け取るController、受け取った値を処理するModelという考えに基づいてプログラムを設計することができます。
まとめ
今回は、デザインパターンの必要性とメリットをご紹介しました。
また、デザインパターンの一つであるMVCモデルについてもご紹介しました。
MVCモデルは最も基本的なモデルの一つなので、デザインパターンを考える際の足掛かりになります。
注意してほしいのが、今回はWebシステムによるMVCモデルを解説しましたが、別のシステムだと細かいところで少しの違いがあったりします。
しかし、プログラムを何らかのモデルに従って記述することの大切さは変わりません。
是非、自分のプログラムにもデザインパターンの考え方を取り入れて、高品質なプログラムやシステムを構築しましょう。