コミュ障だから明日が僕らをよんだって返事もろくにしなかった

何かを創る人に憧れたからブログをはじめたんだと思うよ

エリクシル月曜日

リクシルマンデー

どうも僕です。本日も月曜となりましたので「世界と挨拶」をしていこうと思います。皆さんはすでにご存じかもしれませんが、月曜と言う曜日は世界と交信するのに適した曜日と一般に言われています [要出典]。ですので本日も「世界と挨拶」をさせていただきます。



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!

できました。クソコードなのは許してください何でもしますから。


標準機能
Kernel – Elixir v1.7.3

Erllangドキュメント
erldocs.com - Alternative Erlang Documentation

簡単な日付操作だけなら標準機能のドキュメントだけ見てれば動くものだと思ってのに全然うまくいかないじゃないですかー。大体の操作でタプル返してくるし、ElixirはRubyっぽく扱えるって言っているやつら許さない。Rubyっぽいの見た目だけじゃないですかーやだー。