より良いエンジニアを目指して

1日1つ。良くなる!上手くなる!

Elixir/Erlangについて学ぶ

speakerdeck.com

上記のスライドの影響で、Elixirを勉強してみることにしました。

ElixirはErlang仮想マシン上で動作するプログラミング言語です。

ベースとなるErlangは分散システムに適しているというメリットがあります。

どうしてもある程度の規模のシステムとなってくると、分散システムの必要性を感じてしまいます。

学習したもの

elixirschool.com

上記のElixir Schoolを手元で動かすことにしました。

Elixirが動作するErlangは あの一人称シューティングゲームであるCall Of Dutyでも使われているようです。

シリーズを重ねるごとに紆余曲折を経ており、C++でサーバーを開発していたものの、保守性の観点からPythonを取り入れたりもしながらErlangに行き着いたようです。

と、モチベーションを高めた上で取り組みました。

私がやってみたところ、丸2日はかかりました。

開発環境

クラウドエディタはPaizaくらいしかありません。Paizaは、多くの言語に対応しているため点では便利なのですが、各言語に対して作り込まれていないので、やや物足りないです。

私は、ローカルにElixirをインストールした上で、Visual Studio Codeをエディタとして用いて学習することにしました。

ほとんどがREPL上の操作する内容であるためコンソールで事足りますが、一部については、実際にプロジェクトを生成して、テストコードを実行する必要があります。

Visual Studio Codeはエディタで拡張によりElixirのシンタックスハイライトが出来、なおかつターミナル画面もあるので一石二鳥と思った次第です。

OSはMacで使えるコマンドが使われることがあるので、Macの方が楽です。Windowsで出来ないということもありません。

生成したCLIアプリをWindowsで動かすときは、アプリ名をプロンプトで叩くだけではダメで、escriptコマンドで実行する必要があります。

escript {appName}

とする必要があります。

How to run an Elixir escript on Windows 8.1 - Stack Overflow

言語全体について

コロンについて。コロンの直後のスペース。

「do :」 とかするとダメですし、 キーの時は「key: value」としないとダメ。

やや、コロンの宣言のタイプミスコンパイルに引っかかる点は気になりました。

それ以外は、言語として思っていたほどクセのようなものは感じませんでした。

関数型言語はクセが強い印象があるのですが、F#と比べるとそこまではないかなと思いました。(私としては、引数を(a,b)ではなく、 a b とカッコで囲わないのは苦手だったりします。PowerShellとかF#がこれに該当します。)

Rubyが引き合いに出されていますが、関数宣言にdefとか出てくるあたり確かに近いです。

後はIDEの物足りなさですかね。

Visual Studio Codeシンタックスハイライトされても、上記のタイプミスがカバーされるわけではありません。

コンパイルはされるので、間違いには、すぐ気づくのですが、スムーズには進みませんでした。

もっと使われればIDEが充実するでしょうし、IDEが充実すれば使われるのか、卵が先か、鶏が先かになってしまいますが。

採用事例

ニコニコ動画

GitHub - voluntas/japanese-erlang-elixir-companies: 日本で Erlang/OTP や Elixir を利用している会社一覧

生みの親が語るElixirのこれまでとこれから ―「ElixirConfJapan 2017」参加レポート:レポート|gihyo.jp … 技術評論社

安定性や信頼性を取るならGo言語よりErlangのようです。