Elixir入門
2017/06/02 に行われた Elixir入門者LT大会 へ参加する際、事前に準備しておいたことのメモ。
Elixirとは?
公式サイト
- スケーラブルで持続可能なアプリを作るためにデザインされた動的関数型言語
- Erlang VM上で動いている。
- Erlang VMは、レイテンシが低く、配布可能で耐障害性もあり、Webでも組み込みシステムでも利用されている
- 特徴
- 関数型
- 拡張可能なDSL
- その他の特徴
- Ecosystem
- Interactive Development
- Erlang互換
インストール
Macの場合
brew update
brew install elixir
基本
Elixir Schoolより
iex
でREPLを起動- 真偽判定:
false
とnil
以外は真 - アトム
:foo
はRubyのシンボルと同じ true === :true
は真- モジュール名もアトム。宣言されていなくても。
is_atom(MyApp)
は真 - アトムは、Erlangのビルトインも含めたモジュール参照にも使われる。
:crypto.rand_bytes 3
- どんな型同士も比較可能、ソート可能
- 文字の連結は
"Hello, " <> "Elixir"
参考
公式サイト
https://elixir-lang.org/
Elixir School(日本語あり)
https://elixirschool.com
イベントに参加した時のメモ
guest1 @ohrdev おーはらさん
なぜElixir
-
可用性◯
-
速度× => C, golangの方が
-
今持っていない考え方が身につく?
- アクターモデル
- 関数プログラミング、マクロ、プロトコル
- 並行プログラミング、OTP
-
適当な問題
- 並列処理が効くツール
- クローラー
- chat, mastodon cloneとか?
- ライブラリ制作
- マクロを使う必要がある
- 並列処理が効くツール
guest2 さっちゃん
- phoenix new しとけばRailsみたく開発できる。Webはだいたいいける
- dockerで環境をつくって、環境差異をなくした
- lint: 開発の最初から入れる必要がある
- dogma, credoの2つがある
- dialyzer: flowtypeみたく型を指定できる
- 但し、めちゃくちゃ遅い
- test: ExUnit
- 関数合成だけで構築できると信じるとテストが書きやすくなる
- awesome-elixer
- ライブラリの選定に有用
- elixir公式MLでも情報とれる
- 別の言語で学ぶ
- Haskell, Lisp, Scala
- プロセスの役割
- タスクを分割する
- 状態を持つ
LT
@color_box
-
とりあえず HexDoc
-
erlang ライブラリ多い
-
REPL環境が良い
-
iex -S mix でライブラリも参照できる
-
パターンマッチの重要性
- case
- 関数のシグネチャ
-> 関数が小さくなるので、読みやすくなる
@cedretaber
- Bibliotheca 蔵書管理アプリ
- 認証ライブラリを作った
@nunulk
- ElixirでSlack botをつくっている
@yasuhiroki
- シェル芸との共通点から好きになる