【JS応用|初心者向け】JavaScriptの「プライベートフィールド」で、カプセル化をスマートに実装しよう

こんにちは!フロントエンド開発の世界へようこそ。今回は、JavaScriptのクラス機能の中でも、特に「データの守り」を強固にするプライベートフィールド(#)について解説します。

なぜ「プライベート」が必要なのか?

プログラミングにおいて、クラス内のデータは、外部から勝手に書き換えられないほうが安全な場合が多いです。たとえば、ゲームキャラクターの「体力」が外部から直接0に書き換えられたら困りますよね。そこで登場するのが、シャープ記号(#)を接頭辞に持つプライベートフィールドです。

# をつけるだけの簡単ルール

使い方は非常にシンプルです。クラス内の変数名の先頭に「#」をつけるだけです。

具体的な書き方

これまでのプログラミングでは、アンダースコア(_)をつけて「これは触らないでね」という慣習的な目印にすることがありましたが、#は違います。JavaScriptのエンジンレベルで「クラスの外からは絶対にアクセスできない」ように制御されます。

例を見てみましょう。

class Player {
#hp = 100;

getHp() {
return this.#hp;
}

damage(amount) {
this.#hp -= amount;
}
}

const hero = new Player();
console.log(hero.getHp()); // 100 と表示される
console.log(hero.#hp); // エラー!クラスの外からは触れない!

この書き方のメリット

1. 意図しないバグを防ぐ
外部から勝手に値を変更されるリスクがなくなるため、データの整合性が保たれます。

2. コードの「仕様」が明確になる
がついている変数は「このクラスの内部だけで使う特別なもの」だと一目でわかります。開発チームでコードを共有する際、「ここは触ってはいけない場所だ」というサインを明確に伝えられます。

3. カプセル化の徹底
「データはメソッド(関数)を通じて操作する」というオブジェクト指向の基本を、言語仕様として強制できるため、より堅牢なアプリ開発が可能になります。

まとめ

プライベートフィールド(#)は、あなたの書くコードをよりプロフェッショナルで壊れにくいものに変えてくれる強力な武器です。最初は少し厳格に感じるかもしれませんが、大規模な開発になればなるほど、この「守りの仕組み」があなたを助けてくれます。ぜひ、次回のクラス設計で試してみてくださいね!

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