日常の出来事を「プログラミング思考」でとらえる

1. 抽象:共通のイメージ

「私は散歩をしていて犬を見かけました。」

  • この時点では「犬」という抽象的なカテゴリが語られています。
  • プログラミングでいえば、class Dog のように型やクラスの定義に近いものです。
  • 読み手の脳内では、自分の知っている「犬」のイメージが再生されますが、それは人によって異なります。

2. 具体:属性(プロパティ)

犬が白い・小型・柴犬・首輪をしている…

  • ここで初めて「データ(属性)」が付与され、抽象だったものが具体化されていきます。
  • プログラミング的には Dog dog = new Dog(“柴犬", “白", “小型", true); といったインスタンス生成。

3. 動作:振る舞い(メソッド)

犬が飛び跳ねている・寝そべっている・吠えている…

  • これはオブジェクトの振る舞いにあたります。
  • クラスに定義されたメソッド(Jump(), Sleep(), Bark())が呼ばれている状態です。
dog.Jump();

なぜこの視点が大事か?

日常の体験や言葉の理解は、情報の欠如を想像力で補っています

しかしプログラムは、人間のように勝手に想像してはくれません

  • 抽象化は「共通点をまとめる力」
  • 具体化は「使えるデータとして表現する力」
  • 動作の記述は「振る舞いを制御する力」

これらを意識することで、コードはただの文字列から「動作する世界のモデル」として見えてきます。


最後に:日常とプログラミングのつながり

「犬を見た」という出来事も、プログラム的に分解すれば、

  • 主語(誰が)→ 私(User)
  • 動詞(何をした)→ 見た(See())
  • 目的語(何を)→ 犬(Dogクラスのインスタンス)

といった形になります。

これを意識することで、抽象→具体→行動という「モノの考え方」を身につけることができます。


このような考え方を授業や資料に取り入れると、「プログラミングは難しい言語」ではなく、「世界を記述する手段」として自然に捉えやすくなるでしょうか。

サンプルコードで考えてみる

以下に、あなたの「散歩中に犬を見かけた」という話をベースに、抽象 → 具体 → 行動の流れを、やさしいC#のコードで示します。


🐾 1. 抽象的な「犬」の定義(クラス)

// 「犬」とはどんな存在か(共通の型)
public class Dog
{
    public string Name;
    public string Color;
    public string Size;
    public string Breed;
    public bool HasCollar;

    // 「犬」ができること(行動)
    public void Bark()
    {
        Console.WriteLine($"{Name}がワンワンと吠えました!");
    }

    public void Jump()
    {
        Console.WriteLine($"{Name}が元気にジャンプしました!");
    }
}

🏡 2. 具体的な「犬」の登場(インスタンス)

// 散歩中に出会った犬を作ってみよう
Dog dog = new Dog();
dog.Name = "ポチ";
dog.Color = "白";
dog.Size = "小型";
dog.Breed = "柴犬";
dog.HasCollar = true;

🕺 3. 見た・行動した(メソッドの実行)

Console.WriteLine("私は散歩をしていて犬を見かけました。");

// 属性を表示してみよう
Console.WriteLine($"それは{dog.Color}色の{dog.Breed}で、{dog.Size}サイズです。");

// 行動をさせてみよう
dog.Bark();
dog.Jump();

🧠 解説まとめ

項目説明プログラム的視点
抽象class Dog共通の性質を定義
具体new Dog()情報を持った実体(オブジェクト)
行動dog.Bark() dog.Jump()メソッドで振る舞いを表現

このように、日常をコードに置き換えることで、プログラムは「難しい命令文の羅列」ではなく、「現実世界をモデル化する手段」として見えてきます。