Motivation
クラスメソッドさんがDevelopers.IOにとても良い記事を投稿されていたので、Elixir版も書きたくなりました。
Elixirを始める
最近のソーシャルゲームでは、ユーザー同士によるリアルタイムマルチプレイがトレンドになってきました。 アカツキが最近リリースしたメザマシフェスティバルも、Node.jsによってマルチプレイが実装されています。 個人的にリアルタイムゲームサーバーの他の実装例が気になったので、調べてみることにしました
Call of Dutyの実装言語であるErlangですが、このErlangのVM上で動作するElixirという言語があります。 筆者はErlangも関数型言語も知見が全く無いですが、学んだことをまとめていきたいと思います。
動作環境
今回使用した動作環境は以下のとおりです。
- OS: MaxOS X 10.9.5
- Elixir 1.0.5
Elixirとは
Elixirはオープンソースのプログラミング言語で、 Erlang VM上で動作します。 主な特徴は以下のとおり。
- Erlang VM上で動くので、Erlangの良い所(耐障害性、高可用性)が利用できる
- Erlangの関数を呼び出すことができる
- スケールしやすく、プロセス間の通信が楽
- Fault-tolerance
- 関数型言語
- REPL(rubyで言う所のirb)
- mix(ビルドツール)
Elixirのセットアップ
インストール
homebrewからインストールすることが出来ます
$ brew install elixir
サンプルを動かしましょう
せっかくなので今回はREPLを使ってみたいと思います。 iexコマンドでREPLを起動することが出来ます。(Ctrl+C 2回で停止)
$ iex
Hello Worldを実行するために、IO.puts/1を利用します。
iex(1)> IO.puts("Hello Elixir")
Hello Elixir
:ok
IO.puts/1は:okという値を返却しますが、これらについては次回以降に解説したいと思います。
また、Elixirは公式のドキュメントが豊富なので、気になった方はこちらを読み進めてみてください。