【Elixir入門】プログラミング言語Elixirの特徴や用途を徹底解説!並行処理機能や開発での実用性・メリットも紹介
この記事では「Elixir」というプログラミング言語について紹介します。
あまり聞き慣れない人も多いのではないでしょうか。それもその筈、Elixirは2012年に誕生した新しい言語です。
ここではElixirの誕生や特徴、取得のメリットやElixirが使われている場所などをまとめました。
IT業界に興味があるという人や、Webプログラマーを目指している人は、これを機に是非学習を検討してみてください。
Elixirの誕生はつい最近の出来事
まずはElixirの誕生について解説しましょう。
Elixirは2012年にRuby on RailsのチームメンバーであるJosé Valim氏によって開発されました。
比較的新しいプログラム言語といえます。
Elixirは、BEAMと呼ばれるErlang仮想マシン上で動作する関数型言語のことです。
ErlangとElixirはJavaとScala、JavaScriptとCoffeeScriptのような関係だと想像すれば分かりやすいのではないでしょうか。
Elixirの特徴
次にElixirの特徴について見ていきましょう。何となくでも良いので、Elixirについて少し知ってみてください。
拡張性が高い
Elixirの全てのコードは隔離された軽量の実行スレッドの中で動作します。
その軽量性により、数千のプロセスが同時に動くことも珍しくありません。
プロセスが隔離されていることによって、各プロセスが個別にガベージコレクション(廃品回収)できるようになります。
システム全体のポーズを削減できるようになり、マシンリソースを効率的に使うことができるようになるのです。これを垂直拡張といいます。
また、プロセスは同一のネットワーク内に存在する他のマシン上で動作しているプロセスとも通信することも可能に。
この機能が分散システムの基盤となり、複数のノードにまたがったシステムの構築を可能とするのです。これを水平拡張といいます。
この二つの拡張機能により、Elixirは処理速度の速いプログラム言語といわれているのです。
関数型のプログラムになっている
Elixirは関数型のプログラム。
そのため、開発者がコードを短く速く、メンテナンスしやすく書くための助けとなるようなコーディングスタイルを推奨しています。
関数型プログラムの最大のメリットは、人間にとって分かりやすいということです。
プログラムには、大きく分けて関数型のプログラムと命令型プログラムがあります。
命令型プログラムはコンピュータにとって分かりやすい言語です。一方で関数型プログラムは人間にとって分かりやすい言語といえます。
そのため、関数型プログラムは命令型プログラムよりも組みやすくなっているのです。
また、関数型プログラムはテストがしやすくなるというメリットもあります。
このプログラミングでは関数に対して入力から等しい実行結果が得られるためです。
命令型プログラムでもできないことはないですが、関数型プログラムの方がより簡単にテストがしやすくなります。
プログラムはメッセージ経由でやり取りする
Elixirはメッセージ経由でプログラミングをするのが基本です。
メッセージ経由でのプログラミングは、コンピュータと会話をするような形でプログラムするというもの。
この形式でプログラムすると、画面に表示されるメニューに従って操作を行うことになります。
プログラムがユーザーに入力された命令を逐次解釈して処理されるのです。
プログラムに誤りがあると、そこで処理が止まるようになります。つまり、その場で修正しやすいというメリットがあるのです。
耐障害性のシステム「スーパーバイザー」
システムの開発をするうえではどうしてもバグが発生することもあります。
バグを放置してしまうと、当然システムが正常に動かなくなってしまうことが少なくありません。
プログラマーがプログラミングをする際、細心の注意を払っていることでしょう。
Elixirには、障害があった部分をどのように再起動するかを決められる「スーパーバイザー」というものがあります。
そのためなるべくバグが少ないプログラムができるようになるのです。
並行処理機能とは
ElixirはErlangから並行性と信頼性の特徴を受け継いでいます。
Elixirはプロセス内部で全てのコードが実行され、プロセスは並行で動作してお互いに独立しているのです。
このことを並行処理と呼びます。
とある時点で1つの仕事しかしてないように見えても、複数のプロセスを切り替えることで同時にやっているように見せる処理です。
並行処理は動作を速くすることよりも、単純に同時に行う事や他の処理を待たせないということが目的となっています。
同じような処理として並列処理がありますが、並列処理は実際に複数の処理を同時に行うことです。
Elixirの用途
Elixirはどのような用途で使われるのか見ていきましょう。IT業界の中でも、特にWeb業界で注目されている言語です。
大規模システムで利用されている
Elixirは拡張性の高いプログラム言語ということで、大規模なシステムが必要なケースで使われます。
大規模なシステムを組む場合、障害が発生する可能性が高くなってしまうことが多いです。
しかしElixirはスーパーバイザーがあるため、障害に強いシステムを構築することができるのです。
Webプログラムとしてだけでなく、ゲームのシステムの一部として使用されていることもあります。
有名なアプリでも利用されている
TwitterやLINE、WhatsAppなど、かなり有名なアプリでもElixirは一部のシステムとして利用されています。
ネット上にはLINEのチャットボットをElixirで作ってみたという人もいるようです。
このような分野に興味があるという人は、ぜひElixirの習得を検討してみても良いでしょう。
Elixirを使うメリット
次にElixirのメリットについて見ていきます。
特徴とかぶる部分もありますが、メリットを理解して、何故Elixirが使われているのかを理解しておくと良いでしょう。
数十万ものプロセスを同時に動かせる
まず一つ目のメリットが、数十万ものプロセスを同時に動かせるという点です。
Elixirは拡張性が高く、同時に複数のプロセスを動かすことができます。
時には数十万ものプロセスを同時に動かすことも可能です。このことからElixirは高速処理ができるというメリットがあります。
スーパーバイザー機能で障害を見つけやすい
Elixirはスーパーバイザーという機能があり、障害を見つけやすいのもメリットの一つといえるでしょう。
プログラマーはもちろんバグが発生しないように、細心の注意を払いながらプログラミングをしている筈です。
しかし人間は完璧ではないので、どんなに気を付けていてもバグが発生することもあるでしょう。
しかも、プログラミングをしているとバグに気付かないということもあります。
このような失敗をしないよう、Elixirでは障害があった場合は障害が発生する前の段階まで戻してくれるのです。
プログラマーとしてはバグを見つけて修正してくれるというのは、デバッグの手間が大幅に省くことができます。
開発しやすい環境が整っている
Elixirは開発しやすい環境が整っているので、比較的使いやすい言語です。
たとえばElixirを開発したJosé Valim氏が所属しているRailsが開発したRailsライクなフレームワークの「Phoenix」が挙げられます。
こちらのフレームワークは、Elixirを利用している人の多くが利用しているものです。
また近年台頭してきた組み込みのIoT向けのフレームワーク・「Nerves」などもあります。
自分の使いやすいものを選択して、開発していきましょう。
関数由来の仕組みは少ない
Elixirは関数型のプログラム言語です。
関数型言語は学習コストが高いといわれていますが、実はElixirは関数型由来の仕組みは少ないといわれています。
もちろん関数を使ったプログラムもできますが、そうするとElixirの良さが損なわれてしまうため、Elixirの開発者たちは推奨していません。
またElixirでプログラミングをしていけば、関数を使わないシンプルなコードが書けるようになるといわれています。
Elixirに限ったことではありませんが、プログラミングする際はシンプルにコードを組んでいくことを意識するようにしましょう。
開発での実用性
Elixirの開発での実用性について見ていきましょう。どのような実用性があるのかを確認してみてください。
大型のチャット機能に使われている
Elixirは耐障害性に優れているという点とスケールしやすいという点から、チャット機能に使われていることもあります。
LINEやTwitter、WhatsAppなどがそうですね。
ゲーム「ロマンシングサガ リ・ユニバース」のゲームロジックの計算をElixirで行っているという実例もあります。
またNintendo Switch向けのプッシュ通知システムのNPNSも、Elixirが利用されているのです。
プログラミングから実行まで「Mix」でできる
Elixirには「Mix」というコマンドが準備されています。
これは
- ライブラリの管理
- 雛形アプリの作成
- アプリのコンパイル
- アプリの起動・停止
をするためのツールです。
Mixで作成したプログラムを利用するにはHexというツールが必要になります。
しかしHex自体はMixを使ってインストールすることができるので、わざわざHexをインターネットなどで検索する必要ありません。
Rubyと似ているため導入しやすい
ElixirはErlangの上位互換のプログラム言語として開発されていますが、特性はRubyと似ているといわれています。
そのためRubyを使ってWeb開発をしている会社などは、Elixirを導入しやすいのです。
その理由がElixirはRubyと同様にメッセージ経由でプログラミングをすることができるため。
処理の重いWebサイトなどでもElixirが使えるので、Web会社でもElixirが利用されるようになっています。
わざわざElixirを使わなくても問題ない?
しかし、一方で開発者の中にはわざわざElixirにしなくても問題ないという人もいます。
Elixirの最大のメリットは耐障害性の高さです。
とはいえ、現在のWebアプリケーションやサービスの多くは、重大なバグでない限り問題ありません。
また、他のプログラム言語でも問題ないといわれている理由については、Elixirを強く推奨している企業がないということもあるでしょう。
たとえば新しく登場した「Go言語」ですが、こちらはGoogleが推奨しているということもあって広がりつつあります。
しかしながら、Elixirではこのような動きはありません。
現段階では「Elixirじゃなくても他の言語でも問題ない」と考える人が多く、なかなかElixirが浸透しない理由としても挙げられます。
Elixirの導入の仕方
この記事を読んでElixirに興味を持った人や使ってみたい人のために、Elixirの導入方法を紹介していきます。
MacOSにElixirをインストールする
Macユーザーの人は「Homebrew」を使えば簡単にインストールすることができます。
# brewのパッケージを更新
- $ brew update
# Elixirのインストール
- $ brew install elixir
上記のコードを入力すればElixirのインストールは終了です。
Elixirをダウンロードすると同時にErlangも関連パッケージとして同時にインストールされます。
WindowsにElixirをインストールする
WindowsでElixirをダウンロードするにはElixirの公式サイトのダウンロードページからダウンロードしましょう。
ダウンロード後は手順に従って「Click,next,next…finish」と進めていけば問題なくダウンロードすることができます。
【Windows版】Elixir公式サイトのダウンロードページはこちら
https://elixir-lang.org/install.html#windows
Unix/LinuxにElixirをインストールする
UnixやLinuxでElixirをインストールする場合は、各ディストリビューションのインストール方法でインストールしてください。
【Unix/Linux版】Elixir公式サイトのダウンロードページはこちら
https://elixir-lang.org/install.html#unix-and-unix-like
IT業界やWebプログラマーを目指しているならElixirの習得を検討してみよう
Elixirの概要や特徴、メリットについて解説しました。
Elixirは最近できた言語ですが、スケールのしやすさや耐障害性を考えると良いプログラミング言語といえます。
求人数としてはまだ少ないですが、有名なアプリやゲームのシステムの一部に組み込まれているのが現状です。
そのため、今後需要は増えていく可能性があります。
IT業界に進みたい人やWebプログラマーを目指している人は、一度触れてみても良いのではないでしょうか。
toiroフリーランスは、SHIFTグループがプライムとして参画している独自案件をフリーランスエンジニア向けに紹介する唯一のプラットフォームサービスです。
エージェントによるサポートもありますので、ご利用を検討してみてはいかがでしょうか。