Tips

C# 基礎 第15回 整理整頓は大事だよ(名前空間)

整理整頓は大事だよ(名前空間)

皆さん、整理整頓していますか。
お部屋もパソコンのファイルも、整理整頓しないと散らかってしまいますよね。
まったく同じように、プログラミングの世界でも、整理整頓はとっても大切です。
今日は、プログラミングの整理整頓について勉強しましょう。

本日の内容
  1. 名前空間とは
  2. 名前空間のつけ方
  3. 名前空間の呼び出し方
  4. 練習問題
  5. まとめ

収納スペースを作ろう(名前空間)

何かを整理整頓するためには、収納スペースが必要です。
パソコンだったら、フォルダが収納スペースですね。
この中に、いろいろなファイルを収納します。

では、C#では、何をどこへ整理整頓するのでしょうか。

名前空間とクラス

C#では、名前空間という収納スペースがあります。
ここに、クラスを整理整頓します。
イメージとしては、パソコンのフォルダが名前空間、ファイルがクラスです。

階層(左から右へ)
フォルダ -> フォルダ -> フォルダ -> ファイル

名前空間 -> 名前空間 -> 名前空間 -> クラス
フォルダとファイルの階層図

名前空間とクラスの階層図

フォルダやファイルの階層構造の句切れ目は、Windowsなら\マーク、Linuxなら/マークですね。
C#の名前空間では、階層構造の句切れ目は、『.』です。

名前空間やクラスの句切れ目は『.』(半角黒ドット)
    System名前空間の中の
        Collecrions名前空間の中の
            Generic名前空間の中の
                Listクラス
    
    System.Collections.Generic.List
参考: ウィンドウズのフォルダやファイルの句切れ目は\
    C:ドライブの中の
        Usersフォルダの中の
            CSharpLearnerフォルダの中の
                Desktopフォルダの中の
                    CSharpLearnerフォルダの中の
                        CSharpLearningMemo.txtファイル    
    
    C:\Users\CSharpLearner\Desktop\CSharpLearning\CSharpLearningMemo.txt

(本日の内容一覧に戻る方はこちら)

名前空間のつけ方

名前空間の仕組みが分かったところで、具体的にどのような名前を付けるべきでしょうか。
マイクロソフトのガイドラインがあります。
英語からの機械翻訳なので、かいつまんだ概要をお伝えします。

名前空間の名づけルール
組織名.製品名または技術名.特徴.下位の名前空間
単語の行頭が大文字のパスカルケースが原則です。
規則通りにつけた名前空間

組織名がTechPjin、製品名がCSharpTutorial.下位の名前空間がNameSpaceTutorialです。

TechPjin.CSharpTutorial.NamespaceTutorial

(本日の内容一覧に戻る方はこちら)

収納したクラスの使い方

名前空間にクラスを格納したら、次は呼び出して使わなければなりません。

  1. 名前空間とクラス名をすべて書く
  2. usingを使う
  3. usingと別名を使う

名前空間とクラス名をすべて書く

最も基本的なのは、すべての名前空間とクラス名を書くことです。

例として、整数(int)のリストのクラスに属するもの(インスタンス)を登場させます。

すべての名前を書いた例
// System名前空間の中のCollections名前空間の中のGeneric名前空間の中のListクラスのものを登場させている
var severalIntegers = new System.Collections.Generic.List<int>(){1, 2, 3};

usingを使う

すべての名前空間とクラス名を書くと長くなるので、多くの場合、プログラムの最初に、『using 名前空間』という決まった形式の文言を使います。

usingを使った例
// ここでusingというキーワードを使って、どの名前空間を使うか宣言
using System.Collections.Generic;

// (中略)
// クラス名のListだけで、新しいリストを作れるようになった。
var severalIntegers = new List<int>(){1, 2, 3};

usingと別名を使う

『using』を使う際、自作のクラスと備え付けのクラス、もしくは自作のクラス同士の衝突が起こることがあります。
それを防ぐのが、『usingと別名の組み合わせ』です。

usingと別名を書いた例
// 整数をFizzBuzzに変換するFizzBuzzクラスを二つ作ってしまった(中身は全く同じ)

// 別名としてFizzBuzz1とFizzBuzz2をそれぞれにつけた。
using FizzBuzz1 = TechPhin.CSharpTutorial.Test1.FizzBuzz;
using FizzBuzz2 = TechPhin.CSharpTutorial.Test2.FizzBuzz;

// (中略)

// 別名をつければ大丈夫
// 100をFizzBuzzに変換
var firstFizzBuzz = FizzBuzz1(100);
// 100をFiizBuzzに変換
var secondFizzBuzz = FizzBuzz2(100);

(本日の内容一覧に戻る方はこちら)

練習問題

問題1. ConsoleFairyClassの名前空間を変更してください。

namespace ConsoleFairy
{
    public class ConsoleFairy()
    {
    }
}
解答例
[csharp] namespace TechPjin.CSharpTutorial.ConsoleFairyProject
{
public class ConsoleFairy
{
}
}
[/csharp]

問題2. 適切なusingをつけてください。

全修飾名が長いクラスの利用です。

namespace TechPjin.CSharpTutorial.NamespaceTutorial
{
	class MainClass
	{
		static void Main(string[] args)
		{
			System.Console.WriteLine("長いクラスを利用するときはusingを使おう");
			var evens = new System.Collections.Generic.List<int>() {0, 2, 4};
		}
	}
}
解答例
[csharp] using System;
using System.Collections.Generic;
namespace TechPjin.CSharpTutorial.NamespaceTutorial
{
class MainClass
{
static void Main(string[] args)
{
Console.WriteLine("長いクラスを利用するときはusingを使おう");
var evens = new List<int>() {0, 2, 4};
}
}
}

[/csharp]

問題3. 適切なaliasとusingを使ってください。

namespace TechPjin.CSharpTutorial.NamespaceTutorial
{
	class MainClass
	{
		static void Main(string[] args)
		{
			System.Console.WriteLine("エイリアスを使うとクラス名を短く書けますよ。");
		}
	}
}
解答例
[csharp] using SC = System.Console;
namespace TechPjin.CSharpTutorial.NamespaceTutorial
{
class MainClass
{
static void Main(string[] args)
{
SC.WriteLine("エイリアスを使うとクラス名を短く書けますよ。");
}
}
}
[/csharp]

(本日の内容一覧に戻る方はこちら)

まとめ

今回は名前空間について学びました。
これで、皆さんがプログラムをたくさん書いても、
ごちゃごちゃにならず整理整頓できますね。
次回は、オブジェクトを登場させる方法、コンストラクタについて詳しく解説します。


(本日の内容一覧に戻る方はこちら)

(最初から読み直したい方はこちら)

ゲーム制作関連のオススメ連載リンク

とっても手軽なゲーム制作体験!
Unityゲーム開発基礎

実際のリリースゲームを題材にしたハンズオンゲーム制作連載
実践unityゲーム開発

Recent News

Recent Tips

Tag Search