#はじめに
今回はモジュールによるネームスペース(名前空間)の作成に関してまとめました!
モジュールには様々な用途があります。
主に以下のような用途です。
・クラスにインスタンスメソッドを追加する(ミックスイン)
・クラスにクラスメソッドを追加する(ミックスイン)
・クラス名などの重複を防ぐためにネームスペース(名前空間)を作成する
・ミックスインせずにモジュール単体としてメソッドを定義
など。
今回はこれらの機能のうち、上から3つ目のネームスペースに関してのみまとめています。
1つ目及び2つ目の機能(ミックスイン)に関しては別記事にてまとめていますので、ぜひこちらでご覧ください
→ https://qiita.com/tomokichi_ruby/items/b348d7a44928262cc7e4
#ネームスペース(名前空間)とは
各要素に一意の異なる名前をつけた範囲のことです。
また要素の名前が衝突しても識別できるように、要素の集合に対して付与された名前のこと。
例えば複数名で同じアプリケーションを作成する場合などは特に、クラス名やメソッド名が被ってしまう危険性があります。
この名前の衝突を防ぐために活用するのがネームスペースであり、モジュールにてこのネームスペースを作ることができます!
#モジュールによるネームスペースの付け方
module Admin
class User
#メソッドなど
end
end
module Guest
class User
#メソッドなど
end
end
上記の例では、Userクラスが2つ存在していますが、区別するためにそれぞれAdminとGuestモジュール内に入れています。
このようにモジュール内のクラスを参照する場合はモジュール名::クラス名
とすればOKです!
例えば、クラスからインスタンスを作成する時は
Guest::User.new
このようにするだけです!
#ネームスペースの定義の応用
すでにモジュールが定義されている場合で、そのモジュール内にクラスを追加したい場合は、
以下のようにclass モジュール名::クラス名
と宣言することもできます。
module Admin
end
class Admin::User
#メソッドなど
end
#さいごに
ネームスペースについて解説しました!
大規模なプロジェクトになるほど、モジュールによるネームスペースの活用は必要になってきます。
モジュールを有効活用していきたいですね
最後までご覧いただきありがとうございました!