名前空間って何・・・

未分類

ネームスペースを日本語に訳して(名前空間)というらしい。
名前空間をあらかじめusingで呼び出しておくと便利という話です。

何のためにあるんだろうって事なんだけど、簡単に言うとフォルダによる階層分けみたいな感じかな。
コンピュータの世界では、同じフォルダの中には同じ名前のファイルを保存できない(一意でなくてはならない)から、ファイル名を変えるけど、保存するフォルダーを変えれば、同じ名前でも保存することが出来るよね。

同じような挙動をするプログラムには、同じ名前を付けておきたいけど、つけるオブジェクトによって、プログラムを書き分けていたら、例えばCubeをジャンプさせるプログラムにCubeJumpって名前を付けて、ボールをジャンプさせるときは、BallJumpって挙動的には似てるけど、これをオブジェクト毎に着けて行ったら、ややこしくなるから、全部Jumpで済ませてしまいたい。

Ballという名前空間と、Cubeという名前空間と、ってオブジェクトフォルダを用意しておいて、その中にJumpってプログラムを入れておけば、呼び出すときに楽だよね。ひとつのプログラムで一斉にすべてをJumpさせたい時だって、名前空間を書き換えたりするだけで実現しちゃうし、場合によっては配列を回せば、たった一行の命令で済ませてしまうことだってできちゃうかもしれない。
(やってことがないから出来るかどうかは不明)

日本にある日本橋っていう地名は、東京都中央区の他に、大阪、福島、埼玉、神奈川あたりにあると思うんだけど、東京都、大阪市、福島県、埼玉県、神奈川県なんていうのが、名前空間にあたるのかな?

日本橋を呼び出したい時に、グーグルで、『東京都 日本橋』とか『埼玉県 日本橋』って呼び出せば、その地域が検索結果に上がってくる。地名は機能とは違うけど、イメージとしては、こんな感じで理解しようと思う。

自分で作る場合は、こうすれば日本橋クラス(Nihonbashi)という名前を複数作れる。

namespace Tokyo{
    namespace Chuoku{ 
        public Chimei class Nihonbashi{
        }  
    }
}

namespace Osaka{
    public Chimei class Nihonbashi{
    }  
}

namespace Saitama{
    public Chimei class Nihonbashi{
    }  
}

namespace Kanagawa{
    public Chimei class Nihonbashi{
    }  
}

スクリプトの始まりに、using UnityEngineとか、using System.Collectionって書かれているとおもうんだけど、これが名前空間に当たるもの。これは一体なんのために宣言しているの?ってことなんだけど、知っておくと納得。

using UnityEngine; 
using System.Collections;

たとえばクリエイトで、C# Scriptを呼び出すと、最初にいくつかのusingが書かれてる。
usingで指示しておくだけど、この名前空間の記述を省略することが出来るようになるらしい。

たとえば、本来なら<UnityEngine.UI.ButtonClickedEvent>と呼び出さないと機能しないものも、
using UnityEngine.UI;って書いてあれば、<ButtonClickedEvent>こんな風に省略できる。

東京都にある日本橋を呼び出したいならこうすればいい。これで、Tokyo.を省略できるってことだ。

using Tokyo;

<Toyo.Nihonbashi>を<Nihonbashi>だけで呼び出せるようになる。

備忘録なのでこんなメモ的なもので今日は終わり!

コメント

タイトルとURLをコピーしました