初心者プログラマでも「Java言語で学ぶデザインパターン入門」本読んで、デザインパターン知っておけ

[エンジニア] プログラマ

プログラミングをする上で、こんなこと思ったことはありませんか?

 

「良いコードを書きたい」

「きれいなコードを書きたい」

「そもそもどういうものが良いコードなの?」

 

僕はかれこれ10年近くプログラミングに携わってきていて、いろんな形のソースコードを見てきましたが、Web系で使用されるMVCの形はとても分かりやすく、組みやすいと考えています。

ただ、分野が異なればプログラムの作り方もまったく変わってきて、真の意味で「これだ!」といえるものは確立せずにここまできた感があります。

 

でも、こういったあらゆる分野のプログラムで共通する、良い書き方というのものが実はあるんですよ。

この業界をよくやっている人は聞いたことあると思いますが、デザインパターンと呼ばれるものです。

 

で、このデザインパターンをとても分かりやすく解説してくれる本が、「Java言語で学ぶデザインパターン入門」です。

created by Rinker
¥4,104 (2018/12/19 11:55:45時点 Amazon調べ-詳細)

 

これを読めば、プログラムの理論が蓄積されることで一気にレベルアップします。

そして、とにかくデザインパターンを使いたくなること間違いなしです。

 

デザインパターンとは

そもそもデザインパターンとは?

上の方でも触れましたが、ものすごく簡単に言えば、プログラムの良い書き方です。

 

大方の人はプログラムを書くとき、「AというクラスはBをラップしているクラスで、文字列を扱うクラスだ」といったクラスの役割、配置箇所はかなり意識すると思いますが、このプログラムは何らかの理論に基づいているなんてことはあまり意識することはないでしょう。

ただ、実際作ってみると同じような作り方をしていることもしばしば。

同じような作り方をしているということは、良い型(パターン)が出来上がっているということに他なりません。

 

そして、4人の開発者が「経験」や「内的な蓄積」としてのパターンを「デザインパターン」という形に整理。

パターン23個の対し名前を与えて1冊の本にまとめました。

ここでまとめられたものは「GoFのデザインパターン」と呼ばれています。

※GoFは the Gang of Fourで開発者4人のことを指しています。

 

「Java言語で学ぶデザインパターン入門」について

「Java言語で学ぶデザインパターン入門」が刊行されたのは2004年なので、まあまあ古い本ではありますが、僕の中ではデザインパターンを把握する上でのバイブル的な本です。

内容も少しプログラムをやっている人なら特段難しいことはなく、分かりやすい表現で書いています。

初心者はもちろん、中級者にも必ず読んでもらいたい。

というか必ず読め。

 

アマゾンでの評価は☆4.3と高評価をマークしています。

著者は結城浩さんというプログラマ、技術ライターの方なんですが、Yukiwikiを開発された方でもあります。

結城浩 / Hiroshi Yuki
書籍『数学ガール』作者、結城浩の個人サイト。数学、プログラミング、文章書きに関する情報と、気軽な読み物。

 

ちなみに、ページ数は約490ページあるので、持ち運ぶのはオススメしません。

家か職場に置いておきましょう。

 

構成

全部で23章+付録となっており、各章で1つのデザインパターンを解説していきます。

解説は以下の流れが基本です。

  • 現実の世界を例にしてパターンの概要を説明
  • サンプルプログラムの記述(インタフェース、実装クラス)
  • クラス図
  • パターンの登場人物

 

デザインパターン自体はここでは説明しませんが、参考となるサイトを貼っておきます。

デザインパターンの骸骨たち

 

2章のAdapterパターンの概要を例として書いておきましょう。

 

●概要

例えば、直流12ボルトで動くノートパソコンを交流100ボルトのAC電源につなぐとしましょう。そのとき私たちは、ACアダプターという装置を使います。

ACアダプターは、家庭用の電源として提供されている「交流100ボルト」を、いま必要な「直流12ボルト」に変換してくれます。

提供されているものと、必要なものとの間に入って、その間を埋めるのがアダプターの仕事です。

 

●サンプルソース

public abstract class Print {

    public abstract void printWeak();

    public abstract void printStrong();

}


public class PrintBanner extends Print {

    private Banner banner;

    public PrintBanner(String string) {
        this.banner = new Banner(string);
    }

    public void printWeak() {
        banner.showWithParen();
    }

    public abstract void printStrong() {
        banner.showWithAsster();
    }
}


public class Banner {
    private String string;

    public Banner(String string) {
        this.string = string;
    }

    public void showWithParen() {
        System.out.println("(" + string + ")");
    }

    public void showWithParen() {
        System.out.println("*" + string + "*");
    }
}

 

本にもソースコードは書かれていますが、CD-ROMにもソースコードが入っているので併せて活用してみましょう。

 

関連書籍

関連書籍としてこちらもあります。

最近はマルチスレッドのプログラムを自力で組むことが少なくなったけど、知っておくとスレッドを効率的に使用する術が分かりますよ。

 

最後に:デザインパターン知って、レベルアップせよ

今回はデザインパターンのバイブルである「Java言語で学ぶデザインパターン入門」について紹介しました。

デザインパターンの偉大なところは、プログラムの型を言語化したというところで、これが非常に大きな意味を持ちます。

 

「これ使える?」と思えたり、古くなってしまったパターンも中にはあります。

ただ、何のパターンなのかを意識しながらコーディングするだけでも、ソースコードに対する理解度が上がるし、洗練されたソースになっていくことでしょう。

 

興味を持った方は、是非自分の手元に置いて、反復して確認していきましょう!

 

created by Rinker
¥4,104 (2018/12/19 11:55:45時点 Amazon調べ-詳細)

コメント