用語集に戻る
プログラミング基礎初級

lambda

lambda

一言で言うと

「lambda」は 2 つの意味で使われる。1 つは Python などの無名関数の構文、もう 1 つは AWS のサーバーレス関数サービス。どちらも「使い捨ての小さな関数」が共通点。

もう少し詳しく

一言で言うと

「lambda」は 2 つの意味で使われる。1 つは Python などの無名関数の構文、もう 1 つは AWS のサーバーレス関数サービス。どちらも「使い捨ての小さな関数」が共通点。

詳細

文脈で意味が決まります。会話の流れがプログラミング言語なら無名関数、インフラ / クラウドなら AWS Lambda です。歴史的にはどちらもラムダ計算 (Alonzo Church, 1930 年代) からの命名で、「名前のない小さな関数」というイメージが共通します。

Python の lambda 式

lambda 引数: 式 の構文で、その場限りの 1 行関数を作ります。def で名前付き関数を作るほどでもないとき、map / filter / sorted / pandas の apply などに渡すのが定番です。

AWS Lambda

リクエストが来たときだけ起動して関数を実行し、終わったら自動でリソース解放するサーバーレスサービス。サーバー管理不要・リクエスト課金・1 秒未満のコールドスタートが特徴です。

具体例

Python lambda 式

# sort のキー関数として
users = [{"name": "Bob", "age": 30}, {"name": "Alice", "age": 25}]
sorted_users = sorted(users, key=lambda u: u["age"])

# map で 2 乗
squares = list(map(lambda x: x 2, [1, 2, 3, 4])) # [1, 4, 9, 16]

# filter で偶数のみ
evens = list(filter(lambda x: x % 2 == 0, range(10))) # [0, 2, 4, 6, 8]

複数行や複雑な処理になるなら def で名前付き関数にしたほうが読みやすくなります。

AWS Lambda (Node.js)

// handler.ts — API Gateway から呼ばれる Lambda
import type { APIGatewayProxyHandler } from "aws-lambda";

export const handler: APIGatewayProxyHandler = async (event) => {
const name = event.queryStringParameters?.name ?? "world";
return {
statusCode: 200,
body: JSON.stringify({ message: Hello, ${name}! }),
};
};

aws lambda create-function や Serverless Framework、SAM、CDK でデプロイします。

使い分け / トレードオフ

Python lambda 式 — 1 行で済むなら lambda、それ以外は def。lambda を変数に代入する (f = lambda x: ...) のはアンチパターンで、PEP 8 で非推奨です。

AWS Lambda** — 同時実行が読めない・15 分以内に終わる・状態を持たない処理向き。常時稼働の長時間ジョブや、コールドスタートが許容できないレイテンシ要件 (10ms 以下) では ECS / EC2 のほうが向きます。

関連用語

  • [aws](/glossary/aws)

  • [callback](/glossary/callback)

  • [arrow-function](/glossary/arrow-function)

  • [cloud](/glossary/cloud)

  • [function](/glossary/function)

  • 関連する用語

    この用語を学べるコース

    この用語を実際に使ってみよう

    チョットデキルなら、5分のレッスンで実際にコードを書いて学べます。

    コース一覧を見る