Chapter 01

こんな文章を書き始めた理由

とっくり
とっくり
2022.06.14に更新

関数型プログラミングをもっと普及させたい

関数型プログラミングについて、どのような印象を持っているでしょうか。
なんだか難しそう?mapとかreduceとか、何の役に立つの?覚えたほうがいいの?などなど、様々な意見を見かけます。

関数型プログラミングについての入門記事や入門本がたくさん書かれていて、それぞれ正しいことが書かれています。

しかしこんなに入門記事がたくさんあるのに、僕の観測範囲では関数型プログラミングを前提にプロジェクトを進めているチーム、というのはそれほど多くないように思います。
mapだのreduceだの一般的じゃないコードは可読性が低いので普通にforループとかで書いて(キリッ)
1990年代にオブジェクト指向が爆発的に普及したのに比べるとかなり遅い普及速度だと思います。データなどはないですが。

オブジェクト指向と比べて?

オブジェクト指向の良さはとても説明がしやすいものでした。メンバー変数をクラスに隠蔽し、変数の扱い方はそのクラスのメソッドだけが知るようにすれば、利用者はいちいち全てのコードを読まなくてもクラスを使うことができる。グローバル変数をなくせば堅牢になるし、再利用性が上がれば開発効率も上がる。バンザイ。

それに比べて関数型プログラミングの良さを説明する文章は、どうも関数型プログラミングをすでにわかってる人にしかピンと来ないものが多いように思います。

関数型ってこわい?

また令和の時代ではあまり見かけなくなりましたが、かつては関数型といえば「マサカリ」が飛び交う界隈というイメージがあったのも、浸透に良くない影響を与えていたかもしれません。

この一連の記事は、関数型プログラミングという言葉に興味はあるがいまいちメリットがわからない、とか、とっつきづらくて諦めた、という読者を想定しています。そのような人に「明日から関数型プログラミング、ちょっとだけでも書いてみたい!」と思ってもらえることを目標とします。

関数型プログラミングを自然に使えるプログラマーが増えることで、もっと堅牢で、テストしやすくて、マルチスレッドに強くて、読みやすく書きやすいプログラミングの方法が当たり前になることを願っています。