オーダーメイドコース
icon
icon

今さら聞けない!デザインパターンとは【初心者向け】

初心者向けにデザインパターンとは何なのか解説し、学習する上でおすすめの本を紹介しています。Webディレクターとして働く上で、複数人のチームで働く上で覚えておきたい内容です。エンジニアも知っておくべきことなので、ぜひご覧ください。

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

初心者向けにデザインパターンとは何なのか解説しています。

プログラミングではよく聞く言葉なのですが、しっかりと基本を理解して使っている人は少ないようです。本稿ではデザインパターンの基本的な知識と、おすすめの書籍についてまとめました。

Javaについてそもそもよく分からないという方は、Javaとは何なのか解説した記事をまずご覧ください

 

なお本記事は、TechAcademyのJava講座の内容をもとに作成しています。

 

なお、今回の記事の内容は動画でもご覧いただけます。

テキストよりも動画の方が理解しやすいという場合はぜひご覧ください。

大石ゆかり

田島メンター!!デザインパターンというのは何ですか~?

田島悠介

オブジェクト指向において色んなプログラムで再利用できる設計パターンのことで、1995年に発刊された「オブジェクト指向における再利用のためのデザインパターン」という本で広く知られるようになったんだ。

大石ゆかり

具体的にはどんなものがあるんですか?

田島悠介

主にオブジェクトの生成に関するもの、プログラムの構造に関するもの、オブジェクトの振る舞いに関するものがあるよ。実際に見てみよう。

 

目次

 

デザインパターンとは

デザインパターンとは、JavaやRubyなどのオブジェクト指向の言語で使われる設計パターンのことです。過去のエンジニアが解決してきた方法(設計)が、デザインパターンとしてまとめられているのです。

デザインパターンと言ってもいろいろとあるのですが、最も有名なのはGoF(Gnag of Four)でしょう。「生成」や「構造」、「振る舞い」の3つに分類された、23のパターンがあります。

デザインパターンは体系だっているので、ビギナークラスのエンジニアがオブジェクト指向を学ぶ題材としても役に立つことでしょう。

 

[PR] 未経験からWebエンジニアを目指す方法とは

デザインパターンの目的

デザインパターンに取り組むべき主な目的は、以下の3つです。

 

ベストプラクティスを体得する

デザインパターンは、設計のベストプラクティスとも言えます。

エンジニアが試行錯誤した結果を、少ない時間で体得する(利用する)ことができるのです。プログラミングの効率化もできますし、先人のアイデアを学ぶこともできるでしょう。

 

再利用性の高いコードを書く

デザインパターンに取り組むことで、再利用性の高いコードを書くこともできます。コードの見通しも良くなり、メンテナンス性も高まります。

 

エンジニア同士の共通言語にする

エンジニアの中には、デザインパターンに親しんだ人も数多くいます。そのため、デザインパターンが考慮されたコードは、他のエンジニアにとっても読みやすいコードになります。言わば、エンジニアの共通言語とも言うことができるのです。

 

デザインパターンの種類

GoFデザインパターンという定番パターンは全部で23種類あります。それぞれ3つに分類され利用されているので、役割を理解しておきましょう。

 

オブジェクトの生成に関するパターン

Abstract Factory

Factoryクラスを切り替えることでインスタンスを切り替えることが可能です。

Builder

複数のオブジェクトを生成する上で、専用のクラスを用意する際に便利です。

Factory Method

機能が複雑になりクラスが多くなった際に使えるでしょう。一緒に使いたいオブジェクトを生成する際に利用しましょう。

Prototype

同じクラスで複数のオブジェクトを作成する際に便利です。毎回コンストラクタを使ってオブジェクトを生成することなくクローンを生成できるので、作業の効率化が見込めます。

Singleton

オブジェクトを一つだけ生成させるデザインパターンです。1つのクラスから1つのオブジェクトだけと制限する際に使えます。

 

プログラムの構造に関するパターン

Adapter

本来繋がっていないクラス同士を関連づけることができます。

Bridge

継承元のスーパークラスの抽象メソッドを適切に実装したり、機能を拡張する際に利用すると良いでしょう。

Composite

インターフェースを利用した際に応用の幅が広がります。

Decorator

継承以外の手段で機能を追加することができます。

Facade

1つのメッセージを複数のクラスで処理を行うことができます。複数人で開発する際、クラスを作る人と使う人がいるかと思います。クラスを使う際に楽をさせる作業になるはずです。

Flyweight

小さなオブジェクトを数多くロードする状況で効率的に処理できます。

Proxy

インターフェースとメッセージフックを応用するという点で便利でしょう。

 

オブジェクトの振る舞いに関するパターン

Chain of Responsibility

メッセージを他のクラスのオブジェクトに送って処理することが可能です。

Command

命令を表すオブジェクトをメソッドの引数にすることで、1つの引数で複数のデータと処理を伝えることができます。

Interpreter

インターフェースを使って、構文解析の結果をツリー構造で表示します。

Iterator

オブジェクト間の関連をシンプルにすることができます。複数のつながりをシンプルにできるでしょう。

Mediator

クラス間の疎結合を綺麗に整理することができます。複数のオブジェクトを組み合わせて機能を実装する際に使えます。

Memento

オブジェクトの状態を保存したまま元の状態に復元することができます。

Observer

あるオブジェクトの変化を別のオブジェクトに通知させることが可能です。

State

if文を利用することなく、状態に対応した処理を行うことができます。

Strategy

クラスを使う人のコードを変更することなくアルゴリズムを変更することが可能になります。

Template Method

メソッドの機能を部分的に変更するために便利でしょう。

Visitor

利用頻度は少ないかもしれませんが、オブジェクトに動的に機能を追加するために利用できます。

 

田島悠介

「オブジェクト指向における再利用のためのデザインパターン」で取り上げられている23種類のデザインパターンだよ。

大石ゆかり

それぞれが先ほどの3つの種類に分類されているんですね。

田島悠介

この本はGang of Fourと呼ばれる4人によって書かれたため、GoF本ともいわれるんだ。今は色々な書籍でこのパターンについての解説がされているよ。

 

デザインパターンの学習におすすめの本

最後に、デザインパターンのおすすめの書籍をご紹介しておきましょう。デザインパターンの入門書として活用してください。

 

増補改訂版Java言語で学ぶデザインパターン入門

最も有名なデザインパターンであるGoFの23パターンを、Java言語を使って解説してある本です。

初心者でも理解できるようにわかりやすく書いてあるので、デザインパターンの入門書としておすすめです。

 

独習デザインパターン

Java言語を題材に、デザインパターンについて平易な内容で説明してある入門書です。

事例がたくさん盛り込まれているところもいい点です。

 

オブジェクト指向における再利用のためのデザインパターン

デザインパターンのバイブル的存在の書籍です。デザインパターンの王道であるGoFをJavaを使って紹介しているのですが、内容的にはボリュームがあります。読み終えるには時間がかかるかもしれません。

 

デザインパターンの基礎知識と、おすすめの書籍についてご紹介しました。デザインパターンは知識として持っておくだけでは意味がありません。積極的に使っていただき、日々のプログラミングを効率化していっていただければと思います。

 

田島悠介

最後に、デザインパターンに関する学習書籍を紹介したよ。

大石ゆかり

初めて勉強するならどれがいいでしょうか?

田島悠介

まずは「増補改訂版Java言語で学ぶデザインパターン入門」を読んでみるのがいいんじゃないかな。GoFの23のパターンを分かりやすく解説しているので、基礎を学ぶのに適していると思うよ。

大石ゆかり

なるほど、分かりました!ありがとうございます!

 

入門向けのJava学習サイトも紹介しているので、合わせてご覧ください。

また、オンラインのプログラミングスクールTechAcademyでは、Java講座を開催しています。

JavaやServletの技術を使ってWebアプリケーションの開発を学ぶことができます。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、習得することが可能です。