[Elixir]Excelから関数型言語マスターの1回目と2回目をやってみた。
2018/08/16に fukuoka.ex#12:Elixir/Phoenixもくもく会に参加してきました。
Elixirを書いているのを見たことはあるけど書いたことはない、
だけど書いてるのを見ていると面白そうだし、いろいろ使えそう!と思ったので、
Elixirをゆるっと勉強することにしました。
もくもく会の紹介に、
Elixirをやったことない人は、@piacere_exさんの「ExcelからElixirをマスターする」シリーズがおすすめ!
とあるので、とりあえずこのシリーズをやってみることにしました。
※注意
この記事は「ExcelからElixirをマスターする」シリーズをやってみた中で躓いたところや、試してみたことなどを書いてみたものです。
Excelから関数型言語マスター1回目:行の「並べ替え」と「絞り込み」
Elixirのインストール
以下の3つの方法があるそうなのですが、私は1番を選択しました。
- インストーラ/Homebrewを使う
- ソースコードからビルドする
- DockerでElixirイメージをインスト―ル (pull) する
ただし、そもそもHomebrewが入ってなかったので(笑)
以下を参考にまずHomebrewをインストールしました。
https://brew.sh/index_ja
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
$ brew update
$ brew upgrade
$ brew install elixir
Excelの「並べ替え」をElixirで書いてみる & Excelの「フィルタ」をElixirで書いてみる
これについては、特に疑問やつまづくところなく、実行することができました。
リスト内に999が複数あっても、もちろん999が取り除かれたリストが表示されましたし、
f(n) -> n == 999
とすると、もちろん999のみが取り出されました。
iex(1)> [323,999,54,999,6] |> Enum.filter(fn(n) -> n !=999 end)
[323, 54, 6]
iex(2)> [323,999,54,999,6] |> Enum.filter(fn(n) -> n == 999 end)
[999, 999]
Excelから関数型言語マスター2回目:「列の抽出」と「Web表示」
複数列のデータ & 複数列データから「列の抽出」
躓くことなくできました!
iex起動中、コードの途中で改行を入力すると、命令の入力が継続されるのいいですね!
マップリストのデータも入力しやすかったです
(コピペしましたけど…w)
Phoenixのインストール、PJ作成、起動
下記の順番で行ったところ、最後のiex -S mix phx.server
でコケてしまいました…。
$ mix archive.install https://github.com/phoenixframework/archives/raw/master/phx_new.ez
$ mix phx.new sample --no-brunch --no-ecto
$ cd sample
$ iex -S mix phx.server
※途中表示される[Yn]ではすべてYを入力してました。
iex -S mix phx.server
を行ったときに出たエラーがこちら。
$ iex -S mix phx.server
Erlang/OTP 21 [erts-10.0.5] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [hipe] [dtrace]
Could not find Hex, which is needed to build dependency :phoenix
Shall I install Hex? (if running non-interactively, use "mix local.hex --force") [Yn]
Y
* creating /Users/nobuhiroyoshitake/.mix/archives/hex-0.18.1
Unchecked dependencies for environment dev:
* phoenix_live_reload (Hex package)
the dependency is not available, run "mix deps.get"
* gettext (Hex package)
the dependency is not available, run "mix deps.get"
* cowboy (Hex package)
the dependency is not available, run "mix deps.get"
* phoenix_html (Hex package)
the dependency is not available, run "mix deps.get"
* phoenix_pubsub (Hex package)
the dependency is not available, run "mix deps.get"
* phoenix (Hex package)
the dependency is not available, run "mix deps.get"
** (Mix) Can't continue due to errors on dependencies
調べた結果、こちらの記事の通り、mix deps.get
を行ったあと、
iex -S mix phx.server
コマンドを実行すると、無事解決しました!
(mix deps.get
やって的なことがエラーメッセージにも表示されてるんですけどね。。。)
・https://qiita.com/K_ichi/items/230903d0868669d9deea
$ mix deps.get
$ iex -S mix phx.server
Web上での複数列データの「フィルタ」& Web上での複数列データの「並べ替え」
あとは、記事通りつつがなく実行することができました!
パイプでフィルターしたり、並べ替えたりとなんだか面白いですね。
1回目&2回目の感想
Elixirを動かすところは特別問題なく、わかりやすく楽しかったです!
Excelと比較してあるので、動作などイメージしやすかったですし。
ただ、それ以外の環境構築で躓いたのがちょっとつらかったです。
mix deps.get
のくだりについては、聞くところによるとPhoenix側のバグとかなんとか…。
Elixir以外のそもそもの知識ないとちょっとつらいですが…「ExcelからElixirをマスターする」シリーズ、3回目以降も頑張っていこうと思います!