本文へスキップ

関数型プログラミングとは?

かんすうがたぷろぐらみんぐ

関数プログラミングとは、副作用を排除した純粋な関数の組み合わせによってプログラムを構築するプログラミングパラダイムです。

関数プログラミング(Functional Programming、FP)とは、数学的な関数の概念に基づき、状態の変更や副作用を極力避け、関数の組み合わせによってプログラムを構成するプログラミングスタイルです。オブジェクト指向プログラミングと並ぶ主要なプログラミングパラダイムの一つです。

関数型プログラミングを特徴づける主要な概念を以下に示します。

  • 純粋関数:同じ入力に対して常に同じ出力を返し、外部の状態を変更しない関数
  • イミュータブル(不変性):一度作成したデータを変更せず、新しいデータを生成する
  • 高階関数:関数を引数として受け取ったり、戻り値として返したりできる関数
  • 参照透過性:式をその評価値に置き換えてもプログラムの意味が変わらない性質
  • 遅延評価:必要になるまで式の評価を遅らせる仕組み

純粋な関数型言語としてはHaskell、Erlangなどが知られていますが、JavaScript、Python、Scala、Kotlinなどの多くのモダン言語も関数型の特徴を取り入れています。JavaScriptのmap・filter・reduceといった配列メソッドは関数型の考え方を実践する代表例です。

関数型プログラミングのメリットとして、テストのしやすさ(純粋関数は入出力だけで検証できる)、バグの予測可能性の向上、並列処理との相性の良さ(状態共有がないため競合が起きにくい)が挙げられます。近年のマルチコア・分散システムの普及に伴い、関数型の考え方への注目が高まっています。

使い方・例文

例えば、JavaScriptで「数値の配列から偶数だけ取り出して2倍にする」処理を関数型スタイルで書くと、filterとmapを組み合わせた一文で表現でき、元の配列を変更せずに新しい配列を生成します。

この用語をシェア

𝕏 でポスト LINE

最終更新:

関連用語