エリクシルマンデー
どうも僕です。本日も月曜となりましたので「世界と挨拶」をしていこうと思います。皆さんはすでにご存じかもしれませんが、月曜と言う曜日は世界と交信するのに適した曜日と一般に言われています [要出典]。ですので本日も「世界と挨拶」をさせていただきます。
Elixirに手をだすの巻
というわけで、時代はElixirのような気がしたので本日はElixirに手を出すなどをしていきたいと思います。僕が聞きかじった情報によるとRubyっぽい感じの言語らしいのでRubyをそれなりにいじれる(大嘘)僕には楽勝の言語だと思ってます。
公式
Elixir
Elixir (エリクサー) は並行処理の機能や関数型といった特徴を持つ、Erlangの仮想マシン (BEAM) 上で動作するコンピュータプログラミング言語である。ElixirはErlangで実装されているため、分散システム、耐障害性、ソフトリアルタイムシステム等の機能を使用することができるが、拡張機能として、マクロを使ったメタプログラミング、そしてポリモーフィズムなどのプログラミング・パラダイムもプロトコルを介して実装されている。
件の言語の特徴はこんな感じです。なんかよくわかんないですけど、上記の特徴があるらしいです。ゲーム系のバックエンドの話でこの言語よくみる気がする。
インストール
Installing Elixir - Elixir
Erlangもセットでインスコを要求されるのでセットで導入します。
インストール後の操作確認
Introduction - Elixir
最下部のNEXTボタンの存在に気づかなかったからどうやって操作するんだと軽く狼狽してしまった。
なんかつくってみる
C:***>iex Interactive Elixir (1.7.1) - press Ctrl+C to exit (type h() ENTER for help) iex(1)> "Hello "<>"Elixir" "Hello Elixir"
とりあえずインスコできたので確認の「世界との挨拶」。文字列結合<>
らしい。この時点で軽いカルチャーショックを受ける。ウケるーwww。
確認できたので、それじゃあいつもの月曜日判定機つくります。
defmodule MonJudge do def display do # Erlangでなんとかする now_date = :calendar.local_time date = Date.from_erl!(elem(now_date,0)) if Date.day_of_week(date) === 1 do IO.puts "Yes Monday!" else IO.puts "Not!" end end end MonJudge.display
実行
C:* >elixir monday.exs Yes Monday!
できました。クソコードなのは許してください何でもしますから。
Erllangドキュメント
erldocs.com - Alternative Erlang Documentation
簡単な日付操作だけなら標準機能のドキュメントだけ見てれば動くものだと思ってのに全然うまくいかないじゃないですかー。大体の操作でタプル返してくるし、ElixirはRubyっぽく扱えるって言っているやつら許さない。Rubyっぽいの見た目だけじゃないですかーやだー。