1. はじめに
アクセス修飾子は、コードの安全性と保守性を高めるための重要な機能です。この記事では、最も基本的なprivateとpublicの使い方について解説します。
2. アクセス修飾子の基本概念
2.1. アクセス修飾子とは
- クラス、関数、変数へのアクセス範囲を制御する機能
- コードの安全性を高めるための重要な要素
- 意図しない変更を防ぐための仕組み
2.2. クラス間のアクセス制御
[code language="csharp"]
// クラスA
public class ClassA : MonoBehaviour
{
void Start()
{
var classB = new ClassB();
classB.Function1(); // public関数にはアクセス可能
// classB.Function2(); // privateはアクセス不可(コンパイルエラー)
}
}
// クラスB
public class ClassB
{
public void Function1() // 他のクラスからアクセス可能
{
// 処理
}
private void Function2() // このクラス内でのみアクセス可能
{
// 処理
}
}
[/code]
3. privateとpublicの使い分け
3.1. private(デフォルト)
- クラス内部でのみアクセス可能
- 明示的に書かなくても自動的に適用
- 変数や関数を外部から保護
3.2. public
- どこからでもアクセス可能
- Inspectorからの値の変更も可能
- 外部からの操作が必要な場合に使用
4. 実践的な使用例
4.1. 基本的なスクリプト構造
[code language="csharp"]
public class TestScript : MonoBehaviour
{
// クラス変数(フィールド)
private int a = 0; // private(明示的に記述)
public int b = 100; // public(Inspector表示)
private void Start() // クラス内からのみ呼び出し可能
{
int localVar = 10; // ローカル変数(アクセス修飾子不要)
Debug.Log(a); // private変数にアクセス可能
Function(); // private関数にアクセス可能
}
private void Function() // private関数
{
Debug.Log("Function called");
}
}
[/code]
4.2. Inspectorでの表示
[code language="csharp"]
public class PlayerStatus : MonoBehaviour
{
public int health = 100; // Inspectorで編集可能
private int score = 0; // Inspectorには表示されない
public float moveSpeed = 5f; // Inspectorで調整可能
private bool isDead = false; // 内部管理用</code></pre>
}
[/code]
5. アクセス修飾子の使用指針
5.1. privateを使用する場合
- クラス内部でのみ使用する変数
- 外部から変更されたくない値
- クラス内部の実装詳細
[code language="csharp"]
public class Enemy : MonoBehaviour
{
private int currentHealth; // 内部状態
private bool isAttacking; // 状態管理
private Vector3 spawnPoint; // 初期位置
private void UpdateHealth() // 内部処理
{
// 処理
}
}
[/code]
5.2. publicを使用する場合
- 他のクラスから参照/変更が必要な値
- Inspector上で調整したい値
- 外部から呼び出したい関数
[code language="csharp"]
public class Player : MonoBehaviour
{
public int maxHealth = 100; // Inspectorで設定可能
public float attackPower = 10f; // バランス調整用
public void TakeDamage(int damage) // 他のクラスから呼び出し可能
{
// ダメージ処理
}
}
[/code]
6. アクセス修飾子の省略と明示
6.1. 省略可能なケース
- private修飾子(デフォルトのため)
- ローカル変数(アクセス修飾子の概念なし)
6.2. 明示的な記述を推奨するケース
[code language="csharp"]
public class GameManager : MonoBehaviour
{
// 明示的なprivate(意図が明確)
private int score;
private bool isGameOver;
// privateの省略(動作は同じだが意図が不明確)
int highScore;
bool isPaused;
}
[/code]
7. まとめ
アクセス修飾子の適切な使用により:
- コードの安全性が向上
- 意図しない変更を防止
- 保守性が向上
基本的な方針:
- デフォルトはprivateを使用
- 必要に応じてpublicに変更
- 意図を明確にするため、できるだけ明示的に記述


コメント