LoginSignup
5
4

More than 5 years have passed since last update.

[Elixir]Excelから関数型言語マスターの1回目と2回目をやってみた

Last updated at Posted at 2018-08-18

[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番を選択しました。

  1. インストーラ/Homebrewを使う
  2. ソースコードからビルドする
  3. 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)
iex_enter.gif

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回目以降も頑張っていこうと思います!

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4