朝からHaskellの動画を漁っていました。最近の自分の中のちょっとしたブームで、純関数型プログラミングというやつに入門しようとしています。

夜にも関数型プログラミングの解説動画を見ていました。一つは「オブジェクト指向は万能の薬ではなかった。関数型の流行へ」という動画で、オブジェクト指向の弱点とか関数型の利点とかをふむふむと聞いていたんですが、話している人も何度も挫折していて、いまもなお挫折している、という話が出てきてずっこけました。そういうもんなんですね。

その中で「2015年くらいに大学で関数型が流行っていた」という話があって、めっちゃ最近じゃん、と思ってしまいました。ちなみにHaskellは1987年ごろに設計が始まり、1990年に最初の仕様が出た言語らしい。自分とほぼ同世代だと思うと、こんなところからもちょっと親近感がわきます。

で、昼に見ていた別の動画(「関数型プログラミングは全エンジニア必修です」みたいなやつ)では、関数型の利点としてイミュータブルとか副作用とかの話が出てきました。それを聞いていたら、2015年あたりにReact界隈で同じような話が盛り上がっていたのを思い出したんです。当時の自分はそれに完全に挫折していて、結局jQueryで手続き型な書き方を続けていました。

ただ、不思議なもので。その「なんとなく」の感覚だけはどこかに残っていたみたいなんです。使い回しが利くように抽象化した関数を作るのが自然だな、とか、内部でごちゃごちゃ状態を持って処理するのがなんか気持ち悪いな、とか。そういう感覚がいつの間にか自分の中に染みついていたことに、関数型の解説を見ていて気づきました。

イミュータブルとか副作用を避けるとか、名前や概念こそ頭には入っていなかったけれど、リーダブルコードとかベストプラクティスとかをちょこちょことつまみ食いしていたところが、知らず知らずのうちに実務でも役に立つ形でにじみ出てきていたのかもしれません。そういえば、ちょうどその頃からjsよりPHPを書くことが多くなってきたのも、関係しているのかな。

純関数型のHaskellと、いわゆる関数型プログラミングとではまたちょっと違うのかもしれないし、自分はまだラムダ式がちょっと分かるくらいで、関数型のなんたるかなんて全然見えていません。でも、自分の中にずっとあった「なんとなく」がちょっとだけ減って、レベルが上がっていくような、そんな感覚があって、なんだか楽しいです。