Elixirは仮想マシン上で動作し大量の並列処理を安定的に実行できるプログラミング言語です。誕生時期は2012年と新しく次世代のプログラミング言語と注目を集めております。この記事ではElixirを理解するために初心者でも分かる歴史、特徴、基礎知識などを簡単に解説していきます。
Elixirとは拡張性と保守性の高いアプリケーションを構築するためにデザインされた動的で関数型のプログラミング言語です。ElixirはErlangの仮想マシン 「BEAM」 上で使用することができます。Rubyに影響を受けた言語であることから文法が分かり易い安いことや大量の並列処理を安定的に実行できることなどで親しまれております。このような特徴を持つことからWebアプリケーション開発で利用されるシーンが増えております。
関数型プログラミング言語とは関数の組み合わせによって課題を解決する仕組みで構成されるプログラミング言語の種類です。宣言型プログラミング言語の一種であり、関数は引数の適用から先行式の評価を後続式の適用につなげて終端の評価を導き出す式のツリー構造として定義されます。代表的な関数型プログラミング言語としてR言語、ScaLa、Pythonなどが挙げられます。
関数型プログラミング言語の歴史や種類などの基礎知識を解説している記事はこちら>>
Rubyとはまつもとゆきひろ氏によって1995年に開発されたオープンソースでオブジェクト指向のプログラミング言語です。日本人プログラマーのよって開発された言語として初めて国際電気標準会議(IEC)で国際規格に認証されました。2018年には米国において最も稼げる言語はRubyと言われるほど国内外問わず世界的にも注目を集めております。Rubyの特徴は記述量が少なく、自由度が高い、そして何より『書くことが楽しい』と多くのプログラマーの方が口を揃えております。RubyはWebアプリケーションの開発に最も向いており代表的な開発事例としてGunosy、食べログ、価格.comなどが挙げられます。
Elixirの読み方は『エリクサー』です。名前の由来は調査したところ判明しませんでしたが、エリクサーという言葉は「不老不死」や「万能の霊薬」といった逸話があることからこれらに因んだ意味が込められている可能性があります。
ElixirはJosé Valim氏によって2012年に開発された関数型のプログラミング言語です。José Valim氏がElixirを開発しようと思ったきっかけは、2011年に並行処理の重要性が高まったことからその課題解決の為に動いたということを語っております。「Elixir1.0」がリリースされたのは2012年9月のことです。その後も順調にバージョンアップを重ねていき2021年3月時点での最新バージョンを「Elixir1.11.4」としております。MATLABの歴史について簡単に以下の年表にまとめておりますのでご覧ください。
年代 | 内容 |
2011年 | 「Elixirプロジェクト開始」 並行処理の重要性が高まったことからその課題解決の為に |
2011年 | |
2012年 | 「Elixir1.0」リリース |
2015年 | 「Elixir1.1.0」リリース |
2017年 | 「Elixir1.5.0」リリース |
2020年 | 「Elixir1.10.0」リリース |
Elixirの特徴を見ていきましょう。
Elixirは拡張性が高いという特徴があります。Elixirは開発者の生産性向上を実現させる為に言語を特定のドメインに自然に拡張できます。
Elixirは大量の並行処理を安定的に実行できるという特徴があります。一般的に並行処理は高い学習コストを要するイメージがありますが、Elixirではそれも不要です。Elixirフレームワーク「Phoenix」を使用すれば逐次処理を書くだけで、軽量プロセスによる並行処理を実現できます。
Elixirは文法が分かり易いという特徴があります。Rubyライクなプログラミング言語であることから文法は非常にRubyに近しいです。文法や書式がシンプルに構成されており読みやすく結果記述量も少なくなるという特徴があります。記述量が少ないということは覚えることも少なくて済みます。
Elixirの基本的な文法を見ていきましょう。
Elixirでは変数の宣言は不要です。変数型も存在しないので、一つの変数に様々なクラスオブジェクトを代入することができます。
変数宣言 | 不要 |
Elixirではデータ型で使用される基本的な種類は以下の通りです。
データ型 | 概要 |
数値型 | 整数および浮動小数点データ |
原子 | 名前が値である定数 |
ブール | ブール値としてtrueとfalseをサポート |
バイナリ | コンマで区切られた<< >>で囲まれたバイトのシーケンス |
リスト | 角括弧を使用して値のリストを指定します。 値は任意のタイプにすることができます。 |
タプル | 中括弧を使用してタプルを定義 |
Elixirでは演算子で使用される基本的な種類は以下の通りです。
演算子の種類 | 概要 |
算術演算子 | 足し算や引き算を実行する |
比較演算子 | 演算子の左辺と右辺を比較 |
論理演算子 | 理論を判定する際に用いる |
パイプ演算子 | 結果を左に取りそれを右側に渡す |
集合演算子 | 和集合、積集合、差集合 |
ビット演算子 | 特定のビット フィールドにおける設定、シフト、比較 |
Elixirの制御文ではif/else/unless文、case文、do/end文を覚えておく必要があります。
Elixirの代表的なフレームワークを見ていきましょう。
Phoenix FrameworkとはElixirベースのWebアプリケーションフレームワークです。MVCモデルを採用しており、コードと可動部分を減らして、リッチでインタラクティブなWebアプリケーションを構築します。気軽に素早くWebアプリケーションを作成できることから多くのElixirユーザーに愛されております。
Phoenix Frameworkの公式サイトはこちら>>
Phoenix Frameworkの歴史や特徴などの基礎知識を解説している記事はこちら>>
Antikythera FrameworkとはElixirベースのWebアプリケーションフレームワークです。独自の社内PaaS(Platform as a Service)を構築するため誕生し、2018年4月27日に開発コミュニティ向けに公開されました特徴として「非同期ジョブ実行」「マルチコアを最大限に活用する並列実行」「マルチサービス・マルチテナント」などが挙げられます。
Elixirを理解するために初心者でも分かる歴史、特徴、基礎知識などを簡単に解説させていただきました。Elixirを一言で表すと『拡張性と保守性の高いアプリケーションを構築するためにデザインされた動的で関数型のプログラミング言語』です。特徴として「拡張性が高い」「大量の並行処理を安定的に実行できる」「文法が分かり易い」などが挙げられます。Elixirについてこの記事に記載されている最低限の内容は理解をしておくようにしましょう。