読者です 読者をやめる 読者になる 読者になる

株式会社クイックのWebサービス開発blog

HAPPYなエンジニア&デザイナーのブログです

ElixirのHello World!

Elixir

新しい言語の勉強として、最近本番環境での導入も増えてきている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シェルを停止するときは、, qで停止できます。

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のよさを感じることができる記事を書いていく予定なので、 また次回。