シングルトン【singleton】シングルトンパターン
別名 :singleton pattern/シングルトンオブジェクト/singleton object
概要
シングルトンとは、オブジェクト指向プログラミングにおけるデザインパターンの一つで、特定のクラスから生成されるインスタンスが実行中に必ず一つだけになるよう設計する仕組み。1994年に出版された『Design Patterns』(通称GoF本)で体系的に紹介されて以来、多くの言語で活用されている。

通常、クラスは何の制約もなければ何個でもインスタンスを生成できる。シングルトンではクラス自身がインスタンスの生成を管理し、すでに存在する場合は新たに作らず既存のものを返す。これにより、プログラム全体で常に同一のインスタンスが参照され、どこからアクセスしても同じ対象を操作することになる。
実装の基本的な方針は、コンストラクタをプライベートにして外部から呼び出せないようにし、クラス変数として自身のインスタンスを保持しておくことである。外部からは getInstance() などの専用メソッドを通じてのみアクセスでき、初回呼び出し時にインスタンスを生成し、二回目以降は同じものを返す構造になっている。
この仕組みが有効なのは、複数箇所から共有される設定情報の管理、ログの記録処理、データベース接続の管理といった場面である。インスタンスが複数存在すると、それぞれが持つデータに食い違いが生じたりリソースが無駄に消費されたりする。一つに集約することで整合性を保ちやすくなり、生成コストの高いオブジェクトを何度も作らずに済む利点もある。
一方、プログラム全体からアクセスできるグローバルな状態を持つため、各部分の依存関係が見えにくくなり、保守やテストが難しくなる場合がある。また、複数のスレッドが同時にインスタンス生成を試みる競合が起きることがあるため、マルチスレッド環境では排他制御が必要になる。単に便利だからという理由で多用すると、コードの柔軟性を損なうため、情報の共有範囲を明確にした上で適用することが求められる。
(2026.5.9更新)