【初心者向けOOP入門】Vol.1｜🍰ケーキ屋さんで学ぶPHPのクラスとオブジェクト

![【初心者向けOOP入門】Vol.1｜🍰ケーキ屋さんで学ぶPHPのクラスとオブジェクト.アイキャッチ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4063787/dc0fada8-262d-47b6-8dec-5995e296b7c5.png)

### ⭐️ はじめに

本記事は、PHPを始めたばかりの方〜Laravelの基本に触れ始めた方を対象としています。

このシリーズでは、PHPやLaravelの学習初期に出てくる用語を、ケーキ屋さんの世界を通して楽しく理解していくことを目指しています🍰
今後も、オブジェクト指向の考え方をやさしく学べる連載記事をお届けしていく予定ですので、ぜひ次回もお楽しみに！

---

###  🧑‍🍳 導入

LaravelやPHPを学び始めると、必ず出てくる「クラス」「オブジェクト」「メソッド」「プロパティ」といった言葉たち。
聞いたことはあるけれど、実際のところ「何それ？」「どう違うの？」とモヤモヤしたことはありませんか？

私もまさにその一人で、学習を始めた当初は用語の違いが全くピンときませんでした。

そこで今回は、ケーキ屋さん🍰にたとえて、PHPのオブジェクト指向の基本となる用語たちをやさしく解説していきます✨

#### 💡この記事でわかること

✔️ クラス・オブジェクト・プロパティ・メソッドの違い
✔️ PHPにおけるOOP（オブジェクト指向）の超入門
✔️ ケーキ屋さんのたとえで楽しく理解する方法


##### 🔍 OOPってなに？（🔰初心者向けにカンタン解説）

OOPとは、Object-Oriented Programming（オブジェクト指向プログラミング）の略で、
「モノ（オブジェクト）」をベースにプログラムを組み立てる考え方です。
例えば、ケーキを作るプログラムなら：

• クラス：ケーキのレシピ（どんなケーキを作るか）
• オブジェクト：実際に作ったケーキ
• プロパティ：味やサイズなどケーキの情報
• メソッド：食べる・切るといった動作

OOPを学ぶことで、コードが整理しやすくなり、Laravelなどのフレームワークもスムーズに理解できるようになります🍓

では本題にいきましょう！⬇️

---

### 📚 目次

1. クラス = ケーキのレシピ
2. オブジェクト = 実際に作ったケーキ
3. プロパティ = ケーキの味やサイズ
4. メソッド = ケーキができること（動き）
5. Laravelでのクラス例
6. まとめ
7. 参考リンク
8. おわりに・次回予告

---

### 1.📖 クラス = ケーキのレシピ

クラスとは「こういうケーキを作るよ🍰」というルールブック（設計図）のようなものです。
プログラムの世界では、このように「性質」や「動き」をまとめたものをクラスと呼びます。

```php:php
// ケーキのクラス（設計図）
class IchigoCake {
    public $flavor = 'いちご';
}
```
☑️ 「IchigoCake」がクラスです。
この例では、いちご味のケーキを作るための設計図を表しています。

---

### 2. 🎂オブジェクト = 実際に作ったケーキ

上で定義した「クラス（レシピ📖）」を使って、実際にケーキを作ってみます。

```php:php
// ケーキを作る（オブジェクト生成）
$cake1 = new IchigoCake();
```
☑️ 「$cake1」 が オブジェクトです。

•クラスを元にして、new を使って「実体」を作ったものがオブジェクトになります。
•$cake1 は、IchigoCake クラスから生まれた“いちごケーキの実物”だと考えてみましょう🍓

---

### 3.🍓 プロパティ（変数）= ケーキの味やサイズ

```php:php
public $flavor = 'いちご';
```
☑️ 「$flavor」 がプロパティ（変数）です。
このプロパティは「このケーキはいちご味だよ」という情報を持っています。
•オブジェクトの中にある「性質」や「状態」を記録するデータのことをプロパティと呼びます。

---

### 4. 🍽 メソッド = ケーキができること（動き）
💡クラスの中には、「そのオブジェクトができること（動き）」をメソッドとして書くことができます。

たとえば、「ケーキを食べる」「味を変える」といった 動作の定義 がメソッドです。
```php:php
// 🍰 ケーキのクラス
class IchigoCake {
    public $flavor = 'いちご';
}

// 🧑 人クラス（食べる側）
class Person {
    // ケーキを食べるメソッド
    public function eat($cake) {
        echo "{$cake->flavor}ケーキを食べたよ！🍓";
    }
}

// ケーキを作成（オブジェクト生成）
$cake1 = new IchigoCake();
```
☑️ 「eat()」がメソッド（動き）です。
このように、オブジェクトが持っている「動作」がメソッドになります。

🍫 さらに、「ケーキの味を変更する」動作を定義したい場合は、このように書きます👇

```php:php
// 🍰 ケーキのクラス
class IchigoCake {
    public $flavor = 'いちご';

    // 味を変更するメソッド
    public function changeFlavor($newFlavor) {
        $this->flavor = $newFlavor;
    }
}
```
☑️ 「changeFlavor()」 もメソッドです。
このメソッドでは $this->flavor に新しい味を代入して、ケーキの味をあとから変更できるようにしています。

では、実際に「味を変えてから食べる」流れを見てみましょう🍰
```php:php
// 🧑 人クラス（食べる側）
class Person {
    public function eat($cake) {
        echo "{$cake->flavor}ケーキを食べたよ！🍓";
    }
}

// ケーキを作成
$cake1 = new IchigoCake();

// 味をチョコに変更
$cake1->changeFlavor('チョコ');

// 人を作成して、ケーキを食べてもらう
$person = new Person();
$person->eat($cake1); // 🍫 チョコケーキを食べたよ！
```

このように、
	•	ケーキは味を変えることができる（changeFlavor）
	•	人はケーキを食べることができる（eat）

というように、「動き」をクラスごとに分けて表現することで、より自然なコード設計になります🧑‍🍳✨

---

### 5. ⚒️ Laravelでのクラス例

Laravelでは、これまで登場してきた「クラス」「オブジェクト」「プロパティ」「メソッド」が日常的に使われています。
特にコントローラーやモデルといったLaravelの主要な機能は、すべて「クラス」として定義されています。


#### 👀 ざっくり理解したい方へ

•	HelloController → Laravelで使うクラス（役割をまとめた箱）
•	index() → クラスの中にある「命令」（＝メソッド）
•	view('hello') → resources/views/hello.blade.php を表示する処理

このコード全体で「hello画面を表示するための準備と命令」をしているんだなと把握できれば大丈夫です！

```php:php
// ↓ Laravelのコントローラークラスの例
class HelloController extends Controller {

    // indexメソッド：'hello'というビューを表示する処理
    public function index() {
        return view('hello');
    }
}
```
---

#### 📝 じっくり知りたい方はこちら👇

上のコードの各要素を順番に解説します。

🔹 class HelloController extends Controller { ... }
	•	class HelloController は、「HelloControllerという名前のクラス（設計図）を新しく作ります」という意味です。
	•	たとえば「HelloControllerというケーキのレシピを用意する」と考えてみてください📖
	•	extends Controller は、「Laravelが最初から用意してくれている特別な機能（Controller）を、このクラスにも使えるようにします」という意味です。
	•	難しく考えず、「Laravelの便利セットを使わせてもらってるんだな」くらいの理解で大丈夫です✨
    
---

🔹 public function index() { ... }
	•	function index() は、「このクラスの中に、indexという名前の“動き”（メソッド）を追加します」という宣言です。
	•	index という名前は、「最初に表示されるページでよく使う名前」というLaravelの慣習的なものです。
	•	public は、「この動き（メソッド）は、クラスの外からも呼び出せますよ」という“アクセスの許可”を表しています。

    
---

🔹 return view('hello');
	•	view('hello') は、「resources/views/hello.blade.php というHTMLのテンプレートを探して、それを画面に表示してね！」という命令です。
	•	「お客さんに見せるケーキの完成品（＝画面の見た目）を出しているんだな」とイメージするとわかりやすいですね🍰
	•	return は、「この命令の結果を画面に返す」という意味です。

---

##### 🎨 たとえでまとめると…

###### Laravelでは：
•	コントローラー（HelloController）は「受付スタッフ」👩‍🍳
•	メソッド（index）は「スタッフがやる仕事」
•	ビュー（view(‘hello’)）は「お客さんに渡す完成したケーキ（＝HTML）」

###### つまり、このコード全体は：
「HelloControllerというスタッフが、/hello にアクセスがあったときに index() という仕事をして、hello という見た目のページをお客さんに見せてくれる」…そんな流れになっています🧑‍🍳✨

###### 🔁 コードにコメント付きで再掲すると👇：
```php:php
// HelloController というクラス（受付スタッフの名前）
class HelloController extends Controller {
    
    // indexメソッド（アクセス時に最初に呼び出される仕事）
    public function index() {
        // hello というビュー（画面テンプレート）を返す
        return view('hello'); // → 画面に hello.blade.php を表示する
    }
}
```

###### 📌 補足：このコードがどうやって呼び出されるのか？
```php:php
// ブラウザで「/hello」にアクセスされたとき、
// HelloControllerクラスの index() メソッドを実行してね！という指示
Route::get('/hello', [HelloController::class, 'index']);
```
これで /hello にアクセスすると、上の index() メソッドが実行され、画面に hello ビューが表示される…という流れになります🌈

---

### 6. 🎓 まとめ

🍓これまでの「クラス」「オブジェクト」「プロパティ」「メソッド」の知識を、1つのコードにまとめておさらいしましょう！

```php:php
// 🍰 ケーキのクラス
class IchigoCake {
    public $flavor = 'いちご';

    // 味を変更するメソッド
    public function changeFlavor($newFlavor) {
        $this->flavor = $newFlavor;
    }
}

// 🧑 人クラス（食べる側）
class Person {
    // ケーキを食べるメソッド
    public function eat($cake) {
        echo "{$cake->flavor}ケーキを食べたよ！🍓";
    }
}

// ケーキを作成（オブジェクト生成）
$cake1 = new IchigoCake();

// 味をチョコに変更
$cake1->changeFlavor('チョコ');

// 人を作成して、ケーキを食べてもらう
$person = new Person();
$person->eat($cake1); // 🍫 チョコケーキを食べたよ！
```
このように、クラス（レシピ）を使ってオブジェクト（ケーキ）を作り、プロパティ（味）を持たせて、メソッド（動作）で食べたり味を変えたりできます。

これが、オブジェクト指向（OOP）の基本的な考え方です🧠

| 🌱 用語        | 🌱 たとえ         | 🌱 役割           |
| --------- | ----------- | ------------ |
| クラス       | ケーキのレシピ     | 設計図          |
| オブジェクト    | 実際に作ったケーキ   | 実体（動かせるモノ）   |
| 変数（プロパティ） | 味やサイズ       | オブジェクトの性質    |
| メソッド      | 食べる・切るなどの動き | オブジェクトの機能や行動 |

👉 これらがセットで「ひとつのケーキ🍰（オブジェクト）」として動くようになります！✨

---

### 7. 🔗 参考リンク

* [PHP公式マニュアル - クラスとオブジェクト](https://www.php.net/manual/ja/language.oop5.php)
* [Laravel公式ドキュメント - コントローラー](https://laravel.com/docs/12.x/controllers)

💡 Laravelを学習中で、「::class」の使い方が気になっている方は、こちらの記事もどうぞ✨
👉 [Qiita記事：Laravelでよく見る::classって何？](https://qiita.com/minami_codes/items/3c75cfbccd5c78190039)

---

### 8. 🌷おわりに・次回予告

今回は、PHPの「クラス」「オブジェクト」「メソッド」「プロパティ」をLaravelでの具体的な処理も織り交ぜながら、詳しくボリュームたっぷりに解説しました。

ケーキ屋さん🍰のたとえを使って考えることで、イメージから入りつつ、少しずつ体系的にも理解できたのではないでしょうか？

今後も「ケーキ屋さんシリーズ🍓」として、PHPのオブジェクト指向を楽しく・やさしく学べる記事を連載予定です✨

📣 次回（予告）：「【初心者向けOOP入門】Vol.2｜🍰「このケーキ」ってどれ？PHPの$thisをケーキ屋さんで学ぼう」

長い記事となりましたが、最後までお読みいただきありがとうございました！
この記事が、これからPHPやLaravelを学んでいく皆様の助けになれば幸いです。

---
💬 よろしければ「いいね」や「ストック」、フォローいただけると励みになります！

📚 学習の進捗や連載情報は [X（@minami_codes）](https://x.com/minami_codes) でも発信中です！
🔗 SNSまとめはこちら → [lit.link/minachill](https://lit.link/minachill)