カテゴリ: Python 更新日: 2026/02/03

PythonのOOPでよく使うデザインパターン3選!初心者でもわかる設計の考え方

PythonのOOPでよく使うデザインパターン3選(例:シングルトン・ファクトリ)
PythonのOOPでよく使うデザインパターン3選(例:シングルトン・ファクトリ)

先生と生徒の会話形式で理解しよう

生徒

「Pythonでクラスは作れるようになったんですが、設計って何を意識すればいいんですか?」

先生

「そのときに役立つのが、デザインパターンという考え方です。よくある悩みを解決する型のようなものです。」

生徒

「型ってことは、決まった書き方があるんですか?」

先生

「細かい書き方よりも、考え方が大切です。まずはPythonのOOPでよく使われる3つを見ていきましょう。」

1. デザインパターンとは何か

1. デザインパターンとは何か
1. デザインパターンとは何か

デザインパターンとは、プログラムの設計でよく起こる問題に対して、「こう考えると分かりやすく、直しやすい」という定番の考え方をまとめたものです。難しそうに聞こえますが、日常生活の工夫に近いものです。

例えば、家の中のリモコンを一か所にまとめて置くと探しやすくなります。これも一種の「パターン」です。プログラミングでも、同じような工夫が昔から使われてきました。

Pythonのオブジェクト指向プログラミングでは、クラスを使って現実世界の物事を表現します。そのときに、デザインパターンを知っていると、読みやすくて壊れにくいコードを書けるようになります。

2. シングルトンパターンとは

2. シングルトンパターンとは
2. シングルトンパターンとは

シングルトンパターンは、「クラスのインスタンスを一つだけにしたい」ときに使われる考え方です。インスタンスとは、クラスという設計図から作られた実物のことです。

例えるなら、家に一つしかない鍵付き金庫です。金庫が何個もあると管理が大変ですが、一つなら安心です。設定情報やアプリ全体で共有する情報は、一つだけにしたいことが多くあります。

Pythonでは、クラスの中で「すでに作られているか」をチェックすることで、この仕組みを実現できます。


class AppConfig:
    _instance = None

    def __new__(cls):
        if cls._instance is None:
            cls._instance = super().__new__(cls)
        return cls._instance

このように書くことで、何度作ろうとしても同じ箱が返ってきます。シングルトンは「一つだけ存在するもの」を表現したいときに使われる代表的なデザインパターンです。

3. ファクトリパターンとは

3. ファクトリパターンとは
3. ファクトリパターンとは

ファクトリパターンは、「どのクラスを作るかを、その場で判断したい」ときに使われる考え方です。ファクトリとは工場のことです。工場では、注文内容に応じて違う商品を作ります。

プログラムでも、「条件によって違うクラスを作りたい」という場面があります。そんなときに、直接クラスを作るのではなく、専用の役割を持つ場所に任せます。


class Dog:
    def speak(self):
        return "ワン"

class Cat:
    def speak(self):
        return "ニャー"

def animal_factory(kind):
    if kind == "dog":
        return Dog()
    if kind == "cat":
        return Cat()

この例では、「どの動物か」を渡すと、それに合ったクラスが作られます。使う側は細かい中身を知らなくてよくなり、コードが分かりやすくなります。

4. ストラテジーパターンとは

4. ストラテジーパターンとは
4. ストラテジーパターンとは

ストラテジーパターンは、「やり方を後から切り替えたい」ときに使われる考え方です。ストラテジーとは作戦という意味です。

例えば、同じ道でも歩く、走る、自転車に乗るなど、移動の方法は変えられます。目的は同じでも、やり方だけを入れ替えたい場合に、このパターンが役立ちます。


class Walk:
    def move(self):
        return "歩く"

class Run:
    def move(self):
        return "走る"

class Person:
    def __init__(self, strategy):
        self.strategy = strategy

    def move(self):
        return self.strategy.move()

このようにすると、Personの中身を変えなくても、動き方だけを差し替えられます。変更に強い設計になるのが大きな特徴です。

5. なぜデザインパターンが重要なのか

5. なぜデザインパターンが重要なのか
5. なぜデザインパターンが重要なのか

初心者のうちは、とにかく動くプログラムを書くだけで精一杯になります。しかし、後から修正するときに、設計がぐちゃぐちゃだと直すのが大変です。

デザインパターンは、「後から見ても分かりやすい形」を作るための道しるべです。PythonのOOPと一緒に覚えておくことで、他の人が読んでも理解しやすいコードになります。

今回紹介したシングルトン、ファクトリ、ストラテジーは、Pythonでも特によく使われる基本的なデザインパターンです。まずは考え方を知るだけでも、大きな一歩になります。

カテゴリの一覧へ
新着記事
New1
Flask
Flaskで非同期フォーム送信(Ajax POST)を実装する方法を解説!初心者でもわかるステップ解説
New2
Python
Pythonで定数を定義する方法!変更されない変数の書き方と命名ルールを初心者向けに解説
New3
Python
PythonでMySQLに接続する方法!pymysqlの基本的な使い方
New4
Flask
FlaskのURLルールとは?ルーティングの基本と動的URLの作り方を解説
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonとは何か?初心者向けにできること・特徴・インストール手順までやさしく解説
No.2
Java&Spring記事人気No2
Flask
Flaskでデータベースを使う基本!SQLAlchemyの導入方法をやさしく解説
No.3
Java&Spring記事人気No3
Python
Pythonでリストの要素を検索・取得する方法!index()やin演算子の活用法
No.4
Java&Spring記事人気No4
Python
Pythonプログラムの書き方を基礎から学ぼう!初心者が覚えるべき文法とは?
No.5
Java&Spring記事人気No5
Python
Pythonのインストール方法まとめ!Windows・Mac・Linux別にステップ解説
No.6
Java&Spring記事人気No6
Flask
Flaskアプリの環境変数をクラウドで安全に設定する方法!初心者のための完全ガイド
No.7
Java&Spring記事人気No7
Python
Pythonで仮想環境(venv)を作る方法!初心者向けに環境構築をステップ解説
No.8
Java&Spring記事人気No8
Flask
Flaskでクラウド上のメッセージキュー(SQS/PubSub)を扱う完全ガイド!初心者向け解説