検索
ニュース

オブジェクト指向プログラミングと関数型プログラミングの違い手法、コード例、ユースケースごとに解説

関数型プログラミングモデルの採用を考える開発者は多い。だが、採用するなら、関数型プログラミングモデルとオブジェクト指向のアプローチがどのように異なるかを正確に理解することが重要だ。

Share
Tweet
LINE
Hatena

 プログラミングのパラダイムを決めることは、どのようなアプリケーション開発作業にとっても重要なステップの1つだ。関数型プログラミングとオブジェクト指向プログラミングのどちらを選ぶかは、この2つしか選択肢がないわけではないとしても、今日の多くの開発者が直面する課題の1つになっている。

 本稿では、関数型プログラミングとオブジェクト指向プログラミングの主な違いを復習し、両コーディングパラダイムが機能する仕組みを幾つか示し、いずれかを選択する際に最も重要な考慮点を確認する。

オブジェクト指向プログラミングと関数型プログラミングの手法

 基本的には、関数型のプログラムは、一般的な数学関数(温度をセ氏からカ氏に変換する計算など)のように動作する。関数は、同じ入力に対しては一貫して同じ結果を返す。「純粋な」関数は決定論的で、副作用は起きない。つまり、呼び出されれば常に同じ値を返す。関数のスコープやパラメーター以外は一切変更されない。

 関数型の手法の一例に、Googleによる「MapReduce」の実装がある。そのアプローチでは特定の検索条件に対して結果が返される。MapReduceは、「reduce」という関数を使ってキーと値のペアの形式で検索条件を結び付ける。結び付けの過程では、検索条件が集約され、条件一つ一つに値が割り当てられる。この値が返すべき結果のタイプを示すことになる。データセットが同じであれば、Googleの検索では副作用なしに毎回同じ検索結果が返される。

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る