kuguru[クグル]kuguru[クグル]|人が、ITの世界をくぐり抜けるためのアイデアを。【初心者】GoFのデザインパターンとは?オブジェクト指向の考え方プログラミングに携わっている人なら、デザインパターンについて触れたことがあるのではないでしょうか。デザインパターンの概念はGoFが最初に提唱してから、開発の現場にとって欠かせないものとなっています。今回はデザインパターンについて具体例も交えながらその使い方やメリットなどを紹介していきます。まとめデザインパターンとは?初心者向けデザインパターンとは、プログラミングにおける、よくある問題に対する設計の定石やお手本のことです。有名なデザインパターンとして「オブジェクト指向における再利用のためのデザインパターン」という本で紹介された23個のパターンがあります。その他にもエンジニアや学者によって様々なデザインパターンが提案されています。C言語やJavaを用いたものが主力デザインパターンはオブジェクト指向の考え方と関連しています。デザインパターン自体は特定の言語での使用を目的にしたのものではないですが、オブジェクト指向に基づいているため、C++やC#、Javaでの利用例が豊富です。PythonやRubyなど、オブジェクト指向でプログラミングできる言語であればどの言語でもデザインパターンを適用できますが、言語仕様の違いなどにより、かえって無駄になる場合もあるのでうまく使い分ける必要があります。初心者ほどGoFが必要ある程度プログラミングに慣れてきた初心者にとってGoFのデザインパターンを学ぶことは有益です。自分でプログラムの設計を考えるときの指針にもなり、設計力向上につながります。オブジェクト指向における代表的なデザインパターンなので、パターン名で大体の内容が把握でき、他のエンジニアとのスムーズなやり取りに役立ちます。デザインパターンは再利用性が高いデザインパターンのメリットプログラミングする上でよく現れる問題に対して適切な設計を利用できます。デザインパターンはこれまでの開発のノウハウや優れた設計原則が盛り込まれているので、パターンを利用することで無駄がなくスマートなプログラミングができるようになります。GoFパターンなどは有名なので、説明しなくてもパターン名だけでどんな設計にしたいのか共有できることも大きなメリットと言えるでしょう。うまく活用すると柔軟な設計ができるデザインパターンはオブジェクト指向の優れた設計事例ですので、参考にすることでオブジェクト指向のメリットを最大限に利用できます。実装したい内容に合わせてうまくパターンを活用することで、変更・修正がしやすく、可読性が高いプログラムを設計することができます。オブジェクトを整理してくれる材料デザインパターンには様々な種類があります。具体例として、有名なGoFパターンの一つであるMediatorパターンについて見ていきましょう。複数のオブジェクト間の「仲介者」として機能し、各オブジェクトの関係を単純化したい時に利用します。間にMediatorを挟むことでオブジェクト同志の依存関係を弱くすることができるので、一方のオブジェクトに変更があったときに他のオブジェクトへの影響を少なくできます。Mediatorパターンサンプルターン制RPGの戦闘を例に考えてみましょう。戦闘においては、自分の攻撃力や相手の防御力などお互いの情報をもとにダメージを与えたりします。攻撃対象がすでに死んでいたり無敵状態だったりする場合、当然攻撃はできないでしょう。このような戦闘を進めるにあたり、1対1であれば良いですが複数のキャラを扱う場合には色々な不都合が生じてしまいます。そこで全体の戦闘管理を行うMediator抽象クラスと各キャラクターの情報を保持するColleague抽象クラスに分けて、それぞれをConcreteMediator、ConcreteColleagueとして実装します。戦闘管理クラスが相手の状態を判定したりダメージ計算などを行うことで、構造が分かりやすく実装が楽になります。以下は戦闘管理と戦闘キャラの簡単なサンプルコードになります。Four(ギャング・オブ・フォー)と呼ばれる四人組が提唱した、オブジェクト指向においてよく使える設計パターンのことを指します。このデザインパターンは全部で23種類ありますが、大きく3つに分類することができ、それぞれ「オブジェクトの生成に関するパターン」「プログラムの構造に関するパターン」「オブジェクトの振る舞いに関するパターン」と呼ばれています。分類とパターン名GoFデザインパターンは大きく3つに分類することができます。一つが「生成に関するパターン」の5つです。次に「構造に関するパターン」と呼ばれる7つのパターン、最後が「振る舞いに関するパターン」の11種類です。Iteratorパターンは特に有名で様々な場面で用いられます。他にもFacade、SingletonやStrategy、TemplateMethodなどは基本的な設計パターンとしてよく使われており、初心者でも参考にすることでより良い設計のヒントになるでしょう。デザインパターンおすすめの著者ジョン・ブリシディースジョン・ブリシディースはGoFデザインパターンで有名な、「オブジェクト指向における再利用のためのデザインパターン」を書いたGoFの一人で、ソフトウェア科学者です。その他にもデザインパターン関連の本を出しており、GoFデザインパターンの実践的な使い方や著者が独自紹介しているパターンもあります。エーリヒ・ガンマジョン・ブリシディースと同じくGoFの一人として知られており、スイスのソフトウェア技術者です。Toolsの設計リーダーであり、Eclipseプラグインに関する本も出しています。エーリヒ・ガンマもいくつか技術書を著しており、デザインパターンの本をはじめ、オブジェクト指向に関するものが多く出版されています。まとめデザインパターンはオブジェクト指向の優れた設計パターンとしてGoFにより提唱され、現在では様々なパターンが多くの人によって考案されています。有名なデザインパターンがいくつかあり、それらを参考にすることで誰でもスマートな開発が行えるようになります。種類があるので必要に応じて、最適なデザインパターンを利用しましょう。