新しい言語の勉強として、最近本番環境での導入も増えてきているGo言語と Erlang仮想マシンで動作する並列処理に強いElixirをしているhamanokamiです。
今回はElixirとElixirのインストールと手順と、 みんな大好きHello World!の実行を書いていきます。
Elixirについて
まず本題の前に、このElixirですが最近Webプログラマ界隈で話題になっているとの噂で、 なぜ話題になっているかというと、
ここ数年、Webアプリケーションは以下の問題を抱えています。
- C10K問題
10000以上のクライアントがサーバに同時接続すると、HWの性能は足りていてもOS、ソフトウェアの問題で処理が破綻する
- ムーアの法則の限界
CPUチップメーカーの製造するチップのクロックレートの成長に陰り。代わりにマルチコアアーキテクチャのCPUが開発されている
- リアルタイムWeb
サーバ、クライアントが常時接続するアプリケーションが増えてきた
これらを解決するために従来のマルチスレッドもしくはイベント駆動のスタイルで開発していたのですが、どちらも様々な問題(実装上の問題)がプログラマを悩ませてきました。 並行処理性能に優れ、モダンなシンタックス、ライブラリを持つプログラミング言語で開発したいという要望がプログラマーの間に強くあり、それがElixirが誕生した背景です。 dev.classmethod.jp
というように、近年のWeb技術に発達により、ぶちあった問題を簡単な手段で解決してくれるからです。
これまでもErlangで「C10K問題」などの問題は解決できましたが、 文法が難しく、書ける人間が少ないという部分でシステムを運用すると言う観点で難がありました。
その点Elixirは、これまで多くのWeb業界人が親しみをもってきたRubyぽさを持ちつつ、 Erlangの強みも持っているため、Erlangよりは慣れ親しめるのではと思います。
インストール
今回インストールする環境は、CentOS 6.7です。
Erlangのインストール
Elixirを使用するには、まずErlang v18以上がインストールされていることが前提なので、 Erlangをインストールします。
cd /usr/local/src # Erlang最新バージョンをインストールするために、Erlangの最新RPMパッケージを取得 wget http://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm rpm -Uvh erlang-solutions-1.0-1.noarch.rpm # Erlangインストール yum install erlang # バージョンの確認 erl # 下記メッセージが表示され、バージョンが18以上であることが確認できればOK # =>Erlang/OTP 18 [erts-7.3] [source-d2a6d81] [64-bit] [smp:4:4] [async-threads:10] [hipe] [kernel-poll:false]
Erlangシェルを停止するときは、
Elixirのインストール
cd /usr/local/src # 最新のプリコンパイル済パッケージを取得 wget https://github.com/elixir-lang/elixir/releases/download/v1.2.4/Precompiled.zip mkdir elixir unzip Precompiled.zip -d elixir # binファイルをコピー cp -R /usr/local/src/elixir /usr/local/ # 環境変数にパスを設定 /etc/profile, ~/.bash_profile, ~/.bash_login, ~/.profile export PATH="$PATH:/usr/local/elixir/bin" # バージョンの確認 elixir -v
Hello World!
ElixirではRuby同様、対話形式とファイル形式での実行が可能ですが、 今回はファイル形式ですすめます。
まず任意のフォルダにhello.exsというファイルを作成し、 下記コードを記述します。
# モジュールの定義 defmodule Hello do # 関数の定義 def world do IO.puts "Hello, World!" end end # 関数の実行 Hello.world
作成が完了したら、elixirコマンドで実行します。
elixir helloworld.exs
# Hello, World!
最後に
今回のHello WorldではElixirの特徴をまったく使っていないため、 Elixirがどれだけ強力なツールかというところはわかりませんが、 まずはElixirを触る第1歩としてHello Worldを書いた次第です。
今後はElixirのよさを感じることができる記事を書いていく予定なので、 また次回。