回答編集履歴

1 追記

fumieval

fumieval score 45

2015/08/04 22:07  投稿

私はHaskellを業務に使っています。
> 1.プログラム言語を選定するときに、関数型プログラミングを採用したい(したくない)と判断した材料ってどんなものがありましたか?
関数型プログラミングでは、プログラムの制御構造を、専用の構文などではなく、純粋な関数を使って明示的に表現します。一見やや遠回りですが、制御構造そのものがプログラムで扱えるため柔軟性が高く、また論理的な見通しがよくなることも多いです。
関数型プログラミングでは、プログラムの制御構造を、専用の構文などではなく、純粋な関数を使って明示的に表現します。一見やや遠回りですが、制御構造そのものがプログラムで扱えるため柔軟性が高く、また論理的な見通しがよくなることも多いです。私が関数型プログラミングを好む理由はこれに尽きます。
> 2.どのようなシステムで関数型プログラミングは生かされやすいと思いますか?
どんなものにも利用できますが、静的型付きの言語における関数型プログラミングは、扱うデータの構造が固定されている場合に特に有効です。そのため、通信やログなどの処理のほか、あまり実用に至ってはいませんが画像や音声の処理も簡潔に記述できます。これはオブジェクト指向プログラミングとは真逆で、オブジェクト指向は操作が固定されているものに対して高い記述力を発揮します。ゲームプログラミングでエンティティの挙動を表現するのにはオブジェクト指向のほうが向いていると思います。
> 3.処理をがっつり書く(MVCだったら、モデルに該当する部分)のには向いていないのでしょうか?
扱うモデルを、開発の過程でどう拡張していきたいかによります。特定のデータに対し、できることを増やしていきたいのならば関数型プログラミングが、やることがあらかじめ決まっており、扱う対象を増やしていきたいのならばオブジェクト指向プログラミングが適しています。しかし、関数型プログラミングをサポートする言語のほうが「処理に対する処理」が気軽に書きやすいため、より便利に感じることも多いです。
ちなみに、ビューやコントローラに関しては、関数型プログラミングだからといって特に書きやすかったり、書きにくかったりはしないと考えています。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る