オブジェクト指向開発で最も有名なデザインパターンといえば、GoFデザインパターンです。一般的に「デザインパターン」という言葉は、このGoFの23種類のパターンを指すことが多くなります。では、オブジェクト指向開発にこのようなデザインパターンを取り入れることにはどんなメリットがあるのでしょうか。
オブジェクト指向とは
オブジェクト指向とは、手順よりも対象に重点を置く考え方を指します。
関連するデータの集合とそれに対する手続きを「オブジェクト」と呼ばれる一つとしてとらえる考え方です。
オブジェクト指向は、再利用可能な汎用性のある設計が可能
オブジェクト指向では、プログラムをオブジェクトと呼ばれる部品が集合した形で構築します。そのため、全く内容の異なる開発だったとしても、同じ機能が必要となった時には過去に作ったオブジェクトを再利用することができるというメリットがあります。
さらにそのオブジェクトを組み合わせたものがデザインパターンです。デザインパターンの特徴といえば、何と言っても汎用性が高いということが挙げられます。その汎用性の高さから、様々な開発で再利用ができるというところも魅力のひとつです。
プログラミングを行う際には複数のオブジェクトを組み合わせることになります。それぞれのオブジェクトに問題がなかったとしても、その組み合わせ方次第で上手く動作しなかったり、追加や変更を行うことが煩雑になってしまったりすることがあります。デザインパターンを取り入れることでそのような事態を避けることができるのです。
オブジェクト指向では情報共有が容易に
開発ではひとつのソースを複数のメンバーでプログラミングすることが多くなります。人数が多くなればなるほど、情報共有を行うことが難しくなるのは当然のことです。過去に作成した機能を再利用しようと考えた時に、他の開発者にその機能の内容やオブジェクトひとつひとつの動きを説明しないといけないことは、非常に手間がかかります。
例えばGoFデザインパターンの場合であれば、それぞれのパターンに名前が付けられていますので、「Strategyを使っています」といったように、名前だけでその内容まで相手に理解してもらうことができます。オリジナルのデザインパターを作成した場合にも、それに名前を付けておくことで、説明がしやすくなります。
またデザインパターンはプログラミングの効率的な考え方を示しているという一面もあります。そのため、パターン名を提示するだけで、どのような考え方を提案したいのかが分かりやすいというメリットもあります。
保守性が高く安定した品質の機能を作ることができる
仕様の変更や追加に柔軟な対応ができる設計は、開発において最も優れた設計といえます。デザインパターンのもう一つの特長として、シンプルな作りになっているため、保守性や柔軟性が高いということが挙げられます。機能追加や機能変更をしやすいだけでなく、追加した後の各機能のテストについても短時間で済ませることができます。
複雑なコードで書かれたプログラムに機能追加や変更を加えると、当然のことながら不具合やエラーが起きることが多くなります。その点、デザインパターンでは無駄な記載がなく非常にコンパクトにまとまっているため、何かを追加することで他の部分が上手く動かなくなるという可能性が少なく済むのです。ただし、パターンを利用する際には無理やりそのパターンに当てはめようとするのではなく、パターンを参考にプログラミングを行うということが重要になります。もちろんそのまま利用できる場合にはその方がよいですが、無理やり使おうとすると逆に煩雑なプログラムになってしまうことも考えられます。
GoFデザインパターンが書籍という形で発表されたのは1994年のこと。それ以降、GoFのパターンを参考に数多くのデザインパターンが生まれています。これほどの長い期間使われているデザインパターンですから、上手く利用することでよりよい開発を行うことができるようになるでしょう。