🕌

Unity×C#でわかる!ラムダ式 : 高校生にもやさしい入門ガイド

2025/01/20に公開

Unity×C#でわかる!ラムダ式 : 高校生にもやさしい入門ガイド

「Unityで開発をしているとよく目にする“ラムダ式”って何だろう?」
高校生が初めてC#に触れるとき、ラムダ式という言葉は少し難しく感じるかもしれません。でも、ポイントを押さえればとても簡単。この記事では、ラムダ式を使うメリットや、Unityでの具体的な活用例を初心者向けに解説していきます。

ラムダ式ってなに?

C#のラムダ式をざっくり言うと、「簡単に書ける関数」 です。通常、メソッドを作るときはこんな形にしますよね。

int AddNumbers(int a, int b)
{
    return a + b;
}

これをラムダ式で書くと、こんなに短くなります。

(int a, int b) => a + b

=>」は矢印演算子と呼ばれるもので、左側が入力、右側が処理の中身です。
この書き方は、Unityでイベントの登録や短い処理をサクッと書きたいときにとても便利です。


そもそもなぜラムダ式が便利なの?

1. コードを短く書ける

メソッド名をわざわざ定義しなくても、ちょっとした処理を一行で記述できます。

list.ForEach(item => Debug.Log(item));

と書けば、リストの各要素を簡単に表示できます。

2. “使い捨て”の関数にちょうどいい

「この場でちょこっと使うだけのメソッド」を、別々に作らなくて済むのが利点です。Unityイベントのコールバック(例:ボタンを押したら実行)などに活用できます。

3. イベントやコルーチンとの相性が良い

後述するUnityのイベント登録やコルーチンの動的生成など、Unity特有の仕組みと一緒に使うことでスマートなコードになります。


Unityで使う具体例:ラムダ式 + イベント

高校生でも作りやすい実例として、UIボタンを押したときに処理を行うコードを見てみましょう。

using UnityEngine;
using UnityEngine.UI;

public class ButtonExample : MonoBehaviour
{
    [SerializeField] private Button myButton;

    void Start()
    {
        // 通常のメソッドを登録する場合
        // myButton.onClick.AddListener(OnButtonClicked);

        // ラムダ式で処理を埋め込む場合
        myButton.onClick.AddListener(() => {
            Debug.Log("ボタンが押されました!");
        });
    }

    // void OnButtonClicked()
    // {
    //     Debug.Log("ボタンが押されました!");
    // }
}
  • ポイント
    • myButton.onClick.AddListener( () => { ... } );
    • { ... } の中に書かれた処理が、ボタンが押されたときに実行される
    • 別途メソッドを定義する必要がなく、数行ですっきりまとまる

このシンプルな例でも、ラムダ式のメリットがわかりやすいはずです。


ラムダ式のシンタックス(書き方)をもう少し詳しく

ラムダ式はいくつか形があります。高校生でも押さえておきたい基本パターンは以下の通り。

  1. パラメータが1つ&戻り値を返す

    x => x * 2
    

    たとえば、渡された数値を2倍にして返す処理。
    この場合は型推論により、xの型を省略できます。

  2. パラメータが複数

    (a, b) => a + b
    

    丸括弧を使ってパラメータを並べます。戻り値を返すときは=>の右側に式を書く。

  3. ステートメントが複数あるとき

    (int x, int y) => {
        int result = x + y;
        Debug.Log("合計値: " + result);
        return result;
    }
    

    処理が複数行に及ぶ場合は、波括弧 { ... } の中に書き、最後にreturnを入れます。


どんな場面で使うのがオススメ?

リスト操作:ForEach, Select, Where など

たとえば、ゲーム内にあるオブジェクトリストを一気に操作するとき、以下のように書けます。

GameObject[] enemies = GameObject.FindGameObjectsWithTag("Enemy");
enemies.ToList().ForEach(e => {
    // 敵をちょっと上に移動
    e.transform.position += Vector3.up;
});

イベント登録:Button, Collider, Custom Events など

先ほどの例のように、ボタン押下時の処理や、OnTriggerEnterのコールバックに登録したい内容を、ラムダ式でスッキリ書けます。

非同期処理・コルーチン内でちょっとした処理を行いたいとき

StartCoroutine(DoSomething(() => {
    Debug.Log("処理が終わったのでログを出すよ");
}));

コルーチンの最後にラムダ式を受け取り、処理終了後に呼び出すようなイメージです。


よくある疑問:ラムダ式は使いすぎても大丈夫?

「メソッドを分けずに何でもラムダ式にすると、かえって読みにくくならない?」

たしかに**「長すぎるラムダ式」はかえって見にくいです。使い捨て感覚で書けるのがラムダ式の強みとはいえ、処理が複雑になる場合は普通のメソッド**を定義してもOK。1~3行で終わるような短い処理ならラムダ式、長い処理はメソッドと使い分けましょう。


まとめ:ラムダ式でコードをスマートに

  • “ラムダ式” は、短いコードで小さな処理を書ける強力なツール
  • Unityでのイベントやリスト操作との相性は抜群
  • 短い処理→ラムダ式、長い処理→メソッドで使い分けると読みやすい

高校生でも、if文やfor文が書ければ、ラムダ式はすぐに慣れます。最初は「(引数) => 処理」という形をまねしてみるところから始めてみてください。C#を使うたびに、ちょこっとした処理をラムダ式で書いていくと、自然と使いこなせるようになるはずです。

この記事を読んで「もっと実践したい!」と感じたあなたへ

Unity開発を効率よく進めるためには、実践的スキルと仲間の交流が大切。
おすすめステップは下記3つ:

1. 有料教材「どこでもUnity教室」でゲーム制作を短期マスター

  • 5日でシンプルFPS完成: 初心者でも要点を網羅
  • 最新InputSystem, FPS実装まで: つまずきやすいポイント先回り解説
  • 購入特典: Discord招待+サンプルプロジェクト

https://zenn.dev/ryuryu_game/books/fd28de9d8e963a

2. 無料コミュニティで疑問即解消&モチベUP

  • 初心者~中級OK: 学習ペースに合わせた質問・情報共有
  • 質問サポートが充実: 講師や仲間に即相談
  • 切磋琢磨できるから挫折しにくい

https://discord.gg/5FwuKCacNy

3. ゲーム開発所RYURYUがトータルサポート

  • コナラ総販売200件超: 多様なUnity案件対応
  • VR/AR/AI含む先端技術にも精通
  • ゲームクリエイター甲子園/TGS出展実績多数

https://coconala.com/users/1772507

Discussion