この記事は、fukuoka.ex Elixir/Phoenix Advent Calendar 2019 の 14日目です。 昨日は @adamu さんの「EElixirを使ってLineのチャットボットを作ろう」でした。
##Elixirに出会う
現職ではC#を使って開発しています。.netframework1.1の頃に開発されたシステムは流石にメンテナンス性が落ち、DDDの導入を進めていました。
社内ではなかなか理解が得られず導入を諦めていた頃、Elixirを知りました。
##Elixirはカンタンな関数型言語
Elixirを知ったきっかけというのは「Excelから関数型言語マスター1回目:データ行の”並べ替え”と”絞り込み”」 です。
それまでは関数型言語は難しいというイメージがありました。(実際、F#は途中で諦めました)もし、記事通り簡単に習得できるなら、DDDの導入をもう一度トライできるかもしれないと思いました。(うちの会社の場合は、DDDより言語を変える方がハードルは高いですが^^;)
DDDの導入の失敗の1つに、ValueObjectのメリットを上手く伝えられなかったことがあります。ValueObjectを作るのは、C#の場合それなりに工数がかかります。関数型であれば最初から副作用が発生しないので、ValueObjectを作らなくて済みます。
その他にもSliverlight+WCFという非同期プログラミングで苦労したり、メモリリークを見つけられず、Empty.exeに頼るという力技で解決?したりしていました。
Elixirであれば並行プログラミングやプロセスの特徴から、このような苦労はせずに済みそうだと感じ興味を惹かれました。その上、習得も容易であるならElixirを習得しない理由はありません。
##「プログラミングElixir」読んでみた
まずはお勧めされている「プログラミングElixir」を読み流してみました。後半になるにつれ理解が追いつかず、特に興味のあった並列プログラミング(14章以降)は完全に置いていかれました。
##今後の予定
読み流すだけでは理解が覚束ないので、年末年始は手を動かすために、もくもく会で購入した「Phoenix入門」を写経しようと思います。
ゆくゆくはOSSで公開されるEsunaに貢献できるぐらいにはElixirを習得したいです。