トップ / ブログ / 検索結果

Elixir(エリクサー)

オークネット・アイビーエスの藤原です。

今まで Web 系の開発経験がほとんどない私でしたが、 5月から開発メンバーとして参加しております。

今回ある顧客向けに、DB 問合せ機能の開発を担当することになりました。 開発言語は「Elixir」。

http://elixir-lang.org/

??? 全く知らない言語です。

あまりにも未知なので、まずは Elixir の概要を調べてみました。

  • 読み方は「エリクサー」というらしい
  • 関数型言語
  • Erlang の仮想環境(BEAM)上で動作する
  • Erlang を Ruby 風味に書きやすくしたものらしい
  • 耐障害性が高いらしい
  • 並列処理が得意らしい …

ちなみに私が今まで開発で使用してきたプログラミング言語は

  • C
  • C++
  • C#
  • Java
  • Ruby(少しだけ)

といったところで、完全にオブジェクト指向脳になっております。 関数型言語は経験がありませんでした。 Elixir以前に Erlang がよく分かりません。

分からないことだらけですが、ひとまず開発環境を入れてみます。

インストール手順

http://elixir-lang.org/install.html

Mac,Unix,Windows に対応しておりますが、 今回は Mac を使用しました。

まずは練習。Elixir には interactive mode というものがあり 対話的に、1行ずつ入力しては実行することができるらしい。 iex というコマンドで interactive mode に入ります。

$ iex
Erlang/OTP 17 [erts-6.4] [source] [64-bit] [smp:4:4] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]

Interactive Elixir (1.0.4) – press Ctrl+C to exit (type h() ENTER for help)
iex(1)>

ここで、基本的な文法を試してみます。

iex(1)> 1+1
2

iex(2)> “hello”<>” world”
“hello world”

ちゃんと動いているようです。 Ctrl+C の後に a (abort) を押すと interactive mode を抜けます。 ※Ctrl+C の後に間違った文字を入力すると「Eh?」と言われます。

次に Elixir のスクリプトを見てみます。 Elixir では拡張子に exs, ex が使われるようです。

hello.exs

defmodule ModuleName do
  def hello do
    IO.puts “Hello World”
  end
end

確かに Ruby 風です。 iex で ModuleName.hello を実行してみます。

$ iex hello.exs
Erlang/OTP 17 [erts-6.4] [source] [64-bit] [smp:4:4] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]

Interactive Elixir (1.0.4) – press Ctrl+C to exit (type h() ENTER for help)
iex(1)> ModuleName.hello
Hello World
:ok

もう Elixir が分かったような気がしました。この時は…。

本ブログでは今後、オブジェクト指向に慣れ親しんできた人間が Elixir での開発で今までの経験を生かせた部分、 つまづいた部分などをご紹介します。

技術統括室 藤原

Author daiza 2015/06/30 09:26