🤯 序文:関数とデータがバラバラになる問題
これまで、あなたは「ユーザー」のデータを扱う際、こんな風に書いていませんでしたか?
JavaScript
// データ(オブジェクト)
const userData = { name: "Alice", isLogin: false };
// 関連する処理(関数)
function login(user) {
user.isLogin = true;
console.log(`${user.name}がログインしました。`);
}
login(userData); // ログイン処理
データ(userData)と、そのデータに紐づく処理(login関数)がバラバラに存在しています。このデータと処理を、**一つの「設計図」**にまとめてしまうのが、クラスという概念です!
クラスを使えば、複雑なデータを扱うWebサイトのコードは、驚くほど整理され、再利用性が爆上がりします。今日から、あなたは単なるコーダーではなく、**「コードの建築家」**へとステップアップします!
1. 🏭 クラスとは?「設計図」と「実体」の関係
クラスは、データ(情報)とそのデータを操作する処理(関数)を一つにまとめた**「設計図」**です。
| 名称 | 役割 | 実世界の例 |
| クラス (Class) | 設計図。機能とデータの構造を定義する。 | 自動車の設計図。名前、色、エンジンといった情報と、「走る」「止まる」といった動作が定義されている。 |
| インスタンス (Instance) | 実体。設計図に基づいて作られた、実際のモノ。 | 実際に製造された一台の車(赤色のトヨタ、黒色のホンダなど)。 |
Google スプレッドシートにエクスポート
JavaScriptでクラスを定義しても、その時点ではただの「設計図」です。これを使うには、newキーワードを使ってインスタンス化し、「実体」を作り出す必要があります。
2. 🧱 クラスの基本構造:データと処理の定義
クラスは、主に**プロパティ(データ)とメソッド(処理)**という2つの要素で構成されます。
2-1. コンストラクター(constructor):実体を生み出す工場
クラスの中で最も重要なのが、constructor(コンストラクター)です。これは、newキーワードで新しい実体(インスタンス)が作られる瞬間に一度だけ実行される特別な関数です。
ここで、その実体が持つべき初期データ(プロパティ)を設定します。
JavaScript
class User {
// ユーザー設計図の定義
constructor(name, email) {
// new User()で呼び出されたときに実行される
this.name = name; // プロパティ(データ)
this.email = email; // プロパティ(データ)
this.isLoggedIn = false;
}
// 2-2. メソッド(処理)
login() {
this.isLoggedIn = true;
console.log(`${this.name}がログインしました。ようこそ!`);
}
logout() {
this.isLoggedIn = false;
console.log(`${this.name}がログアウトしました。`);
}
}
2-2. メソッド:データに紐づいた動作
クラス内で定義された関数をメソッドと呼びます。メソッドは、そのインスタンスが持つデータ(this.でアクセス)を使って処理を実行します。
3. 🚗 クラスを使ってみる:インスタンス化
定義したクラスを使うには、必ずnewキーワードを使ってインスタンス化します。
JavaScript
// Userクラス(設計図)から、新しいユーザー実体(インスタンス)を2つ作成
const alice = new User("アリス", "alice@example.com");
const bob = new User("ボブ", "bob@example.com");
// 1. データにアクセス (プロパティ)
console.log(alice.name); // 結果: アリス
console.log(bob.email); // 結果: bob@example.com
// 2. 処理を実行 (メソッド)
alice.login(); // 結果: アリスがログインしました。ようこそ!
bob.login(); // 結果: ボブがログインしました。ようこそ!
// 3. データがインスタンスごとに独立していることを確認
console.log(alice.isLoggedIn); // 結果: true
console.log(bob.isLoggedIn); // 結果: true
注目すべきは、aliceとbobはどちらもUserという設計図から作られていますが、それぞれのisLoggedInの状態は完全に独立している点です。これが、クラスを使う最大のメリットです。
🌟 まとめ:今日からコードの設計者になろう!
クラスは、あなたのコードの構造を根底から変える、Web開発の最も強力なツールの一つです。
| 特徴 | クラス |
| 定義 | class ClassName { ... } |
| 実体化 | const instance = new ClassName(...) |
| データ | this.property(プロパティ) |
| 処理 | method()(メソッド) |
基本ルール:データ(プロパティ)と、そのデータを操作する処理(メソッド)は、必ず同じクラスの中に閉じ込める。
このオブジェクト指向の第一歩を踏み出したことで、あなたは複雑なWebアプリケーションのデータとロジックを、整理されたブロック(クラス)として構築できる能力を手に入れました!次のステップでは、このクラスをさらに発展させるテクニックを学び、コードの再利用性を無限に高めていきましょう!

