2023-05-02
DDD周りを最近漁っている。原著はオブジェクト指向で説明されているけど、関数型で説明している本を直近で読んでいる。僕はプログラミングを関数型から始めた人間だし、集合論や関数解析が好きだったからかオブジェクト指向があまりしっくり来ない。インターフェースとかクラスでモデルする気持ちはなんとなく分かる気がするし、拡張性とか再利用性を考えたときに既存のコードをできるだけ壊さずに機能追加できるのは強いと思う。なんだけど、そういう変更ありきで書かれたコードが素直に対象を表現しているとは思えなくて辛さを感じてしまう。それに対して型とか関数型のあれこれを考えるときは、まだ分かる感じがして救いがある。モナドとかが普通のプログラミングに入ってくるとやはりこんがらがってくるのだけど。きっとパラダイムの問題ではなくて、抽象化になれてないとか親しんでないみたいなところが問題なのだろう。
話をDDDを漁っている件に戻そう。オブジェクト指向と関数型のそれぞれで同じようなことを表現しようと思ったときに使う言語機能を比べられて楽しい、ということを言いたかっただけなのだった。こういう見方をしていると、代数的エフェクトやエフェクトシステムのもたらす幸せがもっと浮かんできて本当に欲しくなるし、どんな側面が役立ちそうで、どんなところは妥協して良さそうかが感じ取れるようになってくるような気がする。
Ulauncherを使い始めた。とりあえずはただのランチャーとして使うけど、拡張機能をpythonでかけるのでターミナルの代わりのCLIとしても良いかもしれない。