2017/06/02 に行われた Elixir入門者LT大会 へ参加する際、事前に準備しておいたことのメモ。

Elixirとは?

公式サイト

https://elixir-lang.org/

  • スケーラブルで持続可能なアプリを作るためにデザインされた動的関数型言語
  • Erlang VM上で動いている。
    • Erlang VMは、レイテンシが低く、配布可能で耐障害性もあり、Webでも組み込みシステムでも利用されている
  • 特徴
    • 関数型
    • 拡張可能なDSL
  • その他の特徴
    • Ecosystem
    • Interactive Development
    • Erlang互換

インストール

Macの場合

brew update
brew install elixir

その他の場合

基本

Elixir Schoolより

  • iex でREPLを起動
  • 真偽判定: falsenil 以外は真
  • アトム :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

  • シェル芸との共通点から好きになる