関数型プログラミング

計算を関数の組み合わせとして表現し、可変状態や副作用をできるだけ局所化する考え方。

作成日: 2026-07-22 / 更新日: 2026-07-22

キーワード: 純粋関数 / 不変性 / 副作用 / 高階関数 / 関数合成 / Stream API

概要

関数型プログラミングは、計算を関数の組み合わせとして表現し、可変状態や副作用をできるだけ局所化する考え方です。

同じ入力に対して同じ結果を返し、外部の状態を変更しない純粋関数を中心に組み立てると、処理を部分ごとに理解しやすくなります。

HaskellやClojureは関数型の特徴が強い言語です。Javaでも、ラムダ式、Stream API、不変オブジェクトなどを通して関数型の考え方を利用できます。

注文金額の合計をJavaのStream APIで求めます。

int total = items.stream()
    .mapToInt(item -> item.getPrice() * item.getQuantity())
    .sum();

「合計値を0から更新していく手順」ではなく、「各要素を金額へ変換し、その合計を求める」という計算の関係を表しています。

主な考え方

メリット

デメリット

向いている場面

副作用との付き合い方

Webアプリケーションでは、DB更新やAPI通信を避けることはできません。関数型の目的は、副作用をゼロにすることではなく、計算部分と副作用のある部分を分け、影響範囲を明確にすることです。

たとえば、金額計算は純粋関数として実装し、計算結果を保存する処理はRepositoryなどの境界へ分けられます。

更新履歴

  • 初版作成

関連項目

このページを参照しているページ