Rubyのシングルトン(Singleton)モジュールの使い方


こんにちは。Tomoyuki(@tomoyuki65)です。

Rubyのモジュールには、ライブラリの設定値(config値)をモジュール自身に保持させることがあります。

その場合、シングルトンパターンでオブジェクトを作成するのが望ましいです。

この記事では、そんなシングルトンパターンについて解説します。

 



シングルトンパターンとは?

アプリケーションの設定値は、いつでもどこでも同じ値である必要があり、設定値の情報はアプリケーション内で一つだけであることが望ましいです。

そのような一つだけのオブジェクトを作る手法をシングルトンパターンと呼びます。

Rubyのクラスを使ってシングルトンパターンを実現するには、シングルトン(Singleton)モジュールを使うと便利です。

 

シングルトン(singleton)モジュールの使い方

シングルトンモジュールを使うには、まずrequireで「’singleton’」を読み込みます。

そして、対象のクラスにシングルトンモジュールをincludeします。

シングルトンモジュールをincludeしたクラスは、次のような挙動に変わります。

  •  newメソッドがprivateメソッドになる
  •  クラスの特異メソッドとしてinstanceメソッドが定義される

 

では例として、以下のプログラムを実行してみて下さい。

require 'singleton'

# Configクラスを定義
class Config
  # Singletonモジュールをincludeする
  include Singleton

  attr_accessor :url

  def initialize
    # 設定値を初期化
    @url = ''
  end
end

# instanceメソッドを使い、インスタンスを取得
config = Config.instance
config.url = 'https://exp.com'

# instanceメソッドを使い、再度インスタンスを取得
other_config = Config.instance
puts other_config.url

 

実行結果
https://exp.com

 

実行結果の通り、シングルトンモジュールを使うことで、一つだけの設定値を保存することができました。

アプリケーションの設定値を保存する場合は、このようにシングルトンモジュールを使えば良さそうですね。

 

まとめ

  •  アプリケーションの設定値のような、一つだけのオブジェクトを作る手法をシングルトンパターンと呼ぶ
  •  Rubyでシングルトンパターンを実現するには、シングルトン(Singleton)モジュールを使うと便利
  •  シングルトンモジュールを使うには、「require ‘singleton’」を読み込み、対象のクラスで「Singleton」モジュールをincludeする

 

  • 関連記事

【無料あり】Ruby入門サイトおすすめ3選!初心者向けの学習方法を解説

2017年10月24日

 

The following two tabs change content below.

Tomoyuki

SEを5年経験後、全くの未経験ながら思い切ってブロガーに転身し、月間13万PVを達成。その後コロナの影響も受け、以前から興味があったWeb系エンジニアへのキャリアチェンジを決意。現在はWeb系エンジニアとして働きながら、プロゲーマーとしても活躍できるように活動中。








シェアはこちらから


おすすめのゲーミングPCまとめ

近年、eスポーツという言葉が浸透し、ゲーミングPCの需要も増えましたが、「ゲーミングPCはどう選べばいいの?」という人も多いのではないでしょうか。そんなPC初心者でも迷わず選べるよう、おすすめのゲーミングPCをご紹介します!


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です