カテゴリ: Python 更新日: 2026/01/27

Pythonのシングルトンクラスの作り方!初心者向けデザインパターン入門

Pythonのシングルトンクラスの作り方!デザインパターン入門
Pythonのシングルトンクラスの作り方!デザインパターン入門

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

生徒

「Pythonで同じ設定クラスを何度も作ってしまうんですが、ひとつだけにできませんか?」

先生

「それならシングルトンという考え方が役に立ちます。常に一つだけ存在するクラスを作る方法です。」

生徒

「クラスなのに一つしか作れないって、どういう仕組みなんですか?」

先生

「Pythonの仕組みを少し工夫すると実現できます。順番に見ていきましょう。」

1. シングルトンとは何か

1. シングルトンとは何か
1. シングルトンとは何か

シングルトンとは「必ず一つしか存在しない」ことを保証する設計の考え方です。このような考え方をまとめたものを「デザインパターン」と呼びます。デザインパターンとは、よくある設計の悩みを解決するための定番の形です。

例えるなら、家の中にある電気のブレーカーのようなものです。部屋ごとに勝手に増えると困りますが、一つだけあれば全体を管理できます。設定情報やログ管理など、全体で共有したいものにシングルトンは向いています。

2. 普通のクラスとの違い

2. 普通のクラスとの違い
2. 普通のクラスとの違い

Pythonでクラスを作ると、通常は何個でも新しいインスタンスを作れます。インスタンスとは、クラスから生まれた実体のことです。同じ設計図から作った別々の箱のようなものと考えると分かりやすいです。

しかし、シングルトンでは箱は一つだけです。何度作ろうとしても、同じ箱が返ってくる仕組みになっています。

3. Pythonで一番シンプルなシングルトンの作り方

3. Pythonで一番シンプルなシングルトンの作り方
3. Pythonで一番シンプルなシングルトンの作り方

初心者向けに分かりやすい方法として、「クラス変数」を使うやり方があります。クラス変数とは、クラス全体で共有される変数です。


class AppConfig:
    _instance = None

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

config1 = AppConfig()
config2 = AppConfig()

print(config1 is config2)

True

この例では、最初に作られた一つのインスタンスだけが保存され、二回目以降は同じものが返されます。「is」は同じものかどうかを確認するための比較です。

4. __new__メソッドの役割

4. __new__メソッドの役割
4. __new__メソッドの役割

__new__は、インスタンスが作られる直前に呼ばれる特別なメソッドです。まだ箱が作られていない段階で動きます。そのため、「すでに箱があるか」を確認するのに適しています。

難しく感じる場合は、「インスタンスを作る入口を見張っている場所」くらいのイメージで大丈夫です。

5. シングルトンが使われる場面

5. シングルトンが使われる場面
5. シングルトンが使われる場面

シングルトンは、設定情報、ログ出力、アプリ全体の状態管理などでよく使われます。どこからアクセスしても同じ状態を参照できるため、データのずれを防げます。

一方で、何でもシングルトンにすると仕組みが分かりにくくなることもあります。必要な場面だけで使うことが大切です。

6. 初心者がつまずきやすいポイント

6. 初心者がつまずきやすいポイント
6. 初心者がつまずきやすいポイント

シングルトンは便利ですが、「クラスなのに一つだけ」という考え方が最初は混乱しやすいです。無理に覚えようとせず、「全体で共有する特別な箱」と考えると理解しやすくなります。

Pythonのオブジェクト指向プログラミングでは、このような設計の工夫がコードの分かりやすさにつながります。

カテゴリの一覧へ
新着記事
New1
Flask
Flaskのログレベル(DEBUG/INFO/WARNING/ERROR)を使い分ける方法を完全ガイド!
New2
Python
Pythonのfrozensetとは?ミュータブルなsetとの違いをわかりやすく解説
New3
Python
Pythonでセットを活用してデータをフィルタリングする方法!初心者でもわかるセットの基本と使い方
New4
Python
Pythonの辞書操作まとめ!初心者が知っておくべき便利ワザ集
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonの文字列から一部を抽出する方法!スライスを使った基本的な切り出し方
No.2
Java&Spring記事人気No2
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.3
Java&Spring記事人気No3
Flask
FlaskアプリのSECRET_KEYの設定方法を完全ガイド!初心者でもわかるセキュリティ対策
No.4
Java&Spring記事人気No4
Django
Djangoモデル入門|初心者が最初に知るべきORMの基本操作
No.5
Java&Spring記事人気No5
Flask
Flaskで非同期処理を成功させるベストプラクティス集|初心者でも失敗しない考え方
No.6
Java&Spring記事人気No6
Python
Pythonのリストを分割する方法を完全ガイド!初心者でもわかるスライス・split・itertoolsの使い方
No.7
Java&Spring記事人気No7
Flask
Flaskでデータベースを使う基本!SQLAlchemyの導入方法をやさしく解説
No.8
Java&Spring記事人気No8
Flask
Flaskのログをファイルに保存する方法!初心者でもわかる設定手順を徹底解説