【Java初心者脱出】カプセル化とは?データを守る「鍵」の仕組みを現役エンジニアが解説! 今回は、エンジニアがコードを書く上で欠かせない「カプセル化」という超重要テクニックを解説します!
■ 初心者がやりがちな「丸見え」コード クラスを作ったばかりの時にやりがちなのが、
データの「中身」をどこからでも触れる状態にしてしまうことです。
❌危ないコード(直接書き換え)
「勇者のHPを操作したいな」と思った時、外部から直接数字をいじってしまうパターンです。
Hero myHero = new Hero();
myHero.hp = -500; // !? 体力がマイナスになってしまった!これでは、どこで誰がデータを変えたか分からないという恐怖のデバッグ作業が始まってしまいます。
✅安全なコード(カプセル化)
データに「鍵(private)」をかけ、専用の窓口(メソッド)を通してのみ操作させるのが正解です。
カプセル化とは、「隠すべきデータ(フィールド)」と「見せるべき操作(メソッド)」を明確に分けることです。
■ Javaのコードで「鍵」をかけてみよう! 「private(自分だけ)」と「public(みんなOK)」という言葉が鍵になります。
それでは、実際に「カプセル化」を適用したコードを見てみましょう。
private(自分だけ)と public(みんなOK)という言葉が鍵になります。
class Hero {
// 1. フィールドに「private」をつけて隠す!
private String name;
private int hp;
// 2. 値を取得するための「Getter(ゲッター)」
public String getName() {
return this.name;
}
// 3. 値をセットするための「Setter(セッター)」
public void setHp(int hp) {
if (hp < 0) {
System.out.println("エラー:HPにマイナスは設定できません!");
// 不正な値は防いで、0にしてあげる
this.hp = 0;
} else {
this.hp = hp;
}
}
}
🔍 解説:カプセル化の仕組みフィールドに「private」をつけて隠す フィールドの前にprivateをつけることで、他のクラスから直接書き換えられる心配がなくなります。
値を取得するための「Getter(ゲッター)」 中身を見せるための専用窓口です。getName(名前をゲットする)という命名が一般的です。
値をセットするための「Setter(セッター)」 値を書き換える時に、「もしマイナスの値が来たら0にする」というチェック(バリデーション)
を挟むことができます。これがデータの守り神です。
💻SE視点での活用例実際の仕事ではどう使う? 仕事のシステムでも、カプセル化を使わない日はありません。
・ECサイトの「在庫数」や「価格」管理 商品の価格が「-10000円」にならないよう、
Setterの中でガードをかけます。これはエンジニアとしての最低限の責務です。
・日付データの整合性チェック 「予約システム」などで、
終了日が開始日より前の日付にならないよう制御します。
※現場の裏話:Getter/Setterは自動生成! 現場ではツールを使ってこれらを自動で作るため、
すべてを手書きするわけではありません。大切なのは「なぜ隠すのか」という意図を理解していることです。
■ まとめ
カプセル化は、「自分の作った部品が、他人に壊されないようにする優しさ」でもあります。
このひと手間が、半年後のあなたや、一緒に働くチームのメンバーを救うことになります。
まずは、フィールドにはとりあえず「private」をつけるという習慣から始めてみましょう。
バナナドリームは、一緒に働く仲間を募集中です!
プログラミングが好きな方、IT業界で成長したい方、大歓迎です。一緒に夢をかなえましょう!
最後までお読みいただき、ありがとうございました!😊
