Upgrade to Pro — share decks privately, control downloads, hide ads and more …

piyopiyo.ex#15 春のElixir入学式

piyopiyo.ex#15 春のElixir入学式

piyopiyo.ex #15:春のElixir入学式!のスライドです
https://piyopiyoex.connpass.com/event/276636/

nako@9時間睡眠

April 01, 2023
Tweet

More Decks by nako@9時間睡眠

Other Decks in Programming

Transcript

  1. piyopiyo.ex
    春のElixir入学式
    ようこそElixirへ!
    2023/4/1 ver0.1 nako

    View full-size slide

  2. Elixirは
    どんな言語?

    View full-size slide

  3. Elixirはどんな言語?
    ● 関数型に影響を受けた動的なプログラミング言語。
    ● シンプルな構文で、文法はRubyから大きく影響を受けています。
    ○ Elixirの作者のJosé(ジョゼ)はRuby on Railsのコミッター
    ● 拡張性や保守性に優れたアプリケーションを構築するために設計されています。
    ○ 拡張性とは、機器やソフトウェア、システムなどの使用を開始した後に、その中核部分に大きな変
    更や交換、影響を伴わずに、機能追加や性能向上を行えること。
    ○ 保守性とは、機器やソフトウェア、システムなどが備える特性の一つで、所定の条件で修理や交換
    などの保守作業を実施することで、機能や状態が維持される性質。また、その容易さ。

    View full-size slide

  4. Elixirはどんな言語?
    ● Elixirは、低遅延、分散、耐障害性があるシステムの構築で知られるErlang VM上で
    実行されます。
    ○ スウェーデンの大手通信機器メーカー、エリクソン( Ericsson)によって開発され、電話交換機の制
    御システムなどの通信アプリケーションの開発に使用されています。
    ○ Erlang VM(Virtual Machine)は、Erlangプログラムを実行するための仮想マシンです。 Erlang VM
    は、Erlang言語で書かれたプログラムを実行するためのランタイム環境を提供します。
    ○ オープンソースとして 1998年に公開されました。公開されてから 25年経過
    ● これらの機能とElixirのツールにより、開発者はWeb開発、組込みソフトウェア、
    データパイプライン、マルチメディア処理など、幅広い産業分野で生産性を向上させ
    ることができます。

    View full-size slide

  5. Elixirはどんな言語?
    ● 海外サービスでは、SlackやSpotify、Discord、WhatsAppなどに使われています。
    ○ どれも大量ユーザーを抱えるネットワークサービス

    View full-size slide

  6. Elixirは
    書いて面白い

    View full-size slide

  7. 素晴らしき |>(パイプ)演算子
    |>演算子は、左の項の式の結果をとって、右の関数呼び出しの第一パラメータとして渡
    すことができる。
    people = DB.find_customers
    orders = Orders.for_customers(people)
    tax = sales_tax(others, 2022)
    filing = prepare_filing(tax)
    filing = DB.find_customers
    |> Orders.for_customers
    |> sales_tax(2022)
    |> prepare_filing

    View full-size slide

  8. パターンマッチ①
    値(右辺)がパターン(左辺)と同じ構造を持ち、パターンのそれぞれの項が値の中の対
    応する項とマッチするとき、パターンマッチと呼びます。
    iex(1)> list = [1, 2, [3, 4, 5]]
    [1, 2, [3, 4, 5]]
    iex(2)> [a,b,c] = list
    [1, 2, [3, 4, 5]]
    iex(3)> a
    1
    iex(4)> b
    2
    iex(5)> c
    [3, 4, 5]

    View full-size slide

  9. パターンマッチ② FizzBazzを例に
    defmodule FizzBazz do
    def upto(n) when n > 0 do
    1..n |> Enum.map(&fizzbazz/1)
    end
    defp fizzbazz(n) do
    cond do
    rem(n, 3) == 0 and rem(n, 5) == 0 ->
    “FizzBazz”
    rem(n, 3) == 0 ->
    “Fizz”
    rem(n, 5) == 0 ->
    “Bazz”
    true ->
    n
    end
    end
    end
    iex(5)> FizzBazz.upto(16)
    [1, 2, "Fizz", 4, "Bazz", "Fizz", 7, 8, "Fizz", "Bazz", 11, "Fizz",
    13, 14,
    "FizzBazz", 16]

    View full-size slide

  10. パターンマッチ② FizzBazzを例に
    defmodule FizzBazz do
    def upto(n) when n > 0, do: 1..n |> Enum.map(&fizzbazz/1)
    defp fizzbazz(n), do: _fizzword(n, rem(n, 3), rem(n, 5))
    defp _fizzword(_n, 0, 0), do: “FizzBazz”
    defp _fizzword(_n, 0, _), do: “Fizz”
    defp _fizzword(_n, _, 0), do: “Bazz”
    defp _fizzword( n, _, _), do: n
    end
    関数呼び出しで
    パターンマッチが使える!

    View full-size slide

  11. Elixirで
    なんでも出来る?!

    View full-size slide

  12. Elixirはなんでも出来る!
    ● Phoenix
    ○ ElixirのデファクトスタンダードなWebフレームワーク
    ● LiveView
    ○ サーバサイドだけでReact/Vue.jsと同じリアルタイムフロント(SPA)
    ● ElixirDesktop
    ○ FlutterやReactNative同様、Android/iOS両ネイティブアプリ開発
    ● Axon
    ○ Keras/PyTorch相当のスマートなディープラーニング開発が可能に
    ● Livebook/Kino/VegaLite
    ○ JupyterNotebook/Colaboratoryを超えるWeb上開発UX
    ● Explorer
    ○ Pandas以上の直感的なデータ操作/処理性能、
    Nx行列もシームレスに操作
    ● Bumblebee
    ○ ElixirでStable DiffusionやBERT等の様々な先端ディープラーニング
    ● Nerves
    ○ IoTフレームワーク
    まだまだ他にもあるよ!!!

    View full-size slide

  13. Elixirはなんでも出来る!
    ● Phoenix
    ○ ElixirのデファクトスタンダードなWebフレームワーク
    ● LiveView
    ○ サーバサイドだけでReact/Vue.jsと同じリアルタイムフロント(SPA)
    ● ElixirDesktop
    ○ FlutterやReactNative同様、Android/iOS両ネイティブアプリ開発
    ● Axon
    ○ Keras/PyTorch相当のスマートなディープラーニング開発が可能に
    ● Livebook/Kino/VegaLite
    ○ JupyterNotebook/Colaboratoryを超えるWeb上開発UX
    ● Explorer
    ○ Pandas以上の直感的なデータ操作/処理性能、
    Nx行列もシームレスに操作
    ● Bumblebee
    ○ ElixirでStable DiffusionやBERT等の様々な先端ディープラーニング
    ● Nerves
    ○ IoTフレームワーク
    まだまだ他にもあるよ!!!
    Webサービス以外にも
    IoTやAI・ML、データ分析、
    デスクトップアプリなど
    Elixirで様々なジャンルの技術を
    扱うことができます!

    View full-size slide

  14. エンジョイElixir!

    View full-size slide