Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
piyopiyo.ex#15 春のElixir入学式
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
nako@9時間睡眠
April 01, 2023
Programming
150
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
piyopiyo.ex#15 春のElixir入学式
piyopiyo.ex #15:春のElixir入学式!のスライドです
https://piyopiyoex.connpass.com/event/276636/
nako@9時間睡眠
April 01, 2023
More Decks by nako@9時間睡眠
See All by nako@9時間睡眠
Nervesで令和のLチカ?!と 大須でパーツお買い物
nako_sleep_9h
0
87
NervesHubでrp4に自動デプロイ
nako_sleep_9h
0
68
Elixir国内コミュニティと アンチパターン回避
nako_sleep_9h
3
140
「推し」について話すLT〜NOKIA、Elixir〜
nako_sleep_9h
0
120
YouTubeライブ対談からのエッジコンピューティング入門
nako_sleep_9h
1
210
おすすめエンジニアコミュニティ
nako_sleep_9h
0
280
ElixirDesktopを楽しむための前説
nako_sleep_9h
0
440
Livebookを楽しむための前説
nako_sleep_9h
0
260
Nx、Axonを楽しむための前説
nako_sleep_9h
0
240
Other Decks in Programming
See All in Programming
Datadog × OpenTelemetry 入門と実践のあいだ
kn_to_maxpno
1
160
AI 時代のソフトウェア設計の学び方
masuda220
PRO
29
13k
Performance Engineering for Everyone
elenatanasoiu
0
180
The NotImplementedError Problem in Ruby
koic
1
850
決定論的オーケストレーションの設計と実装 / Design and Implementation of Deterministic Orchestration
nrslib
4
1.4k
Honoでのサプライチェーン侵害対策 〜 3つのライブラリに学ぶ
yusukebe
6
1.4k
軽量Java基盤の設計 DIコンテナに頼らない、長期保守と1秒起動の実現 JJUG CCC 2026 Spring
macha64
0
540
DynamoDBには集計系のクエリがないけどなんとかしたい
musan
1
180
AI時代のUIはどこへ行く?その2!
yusukebe
22
7.4k
ADKを使って簡単にAIエージェントを作ってみよう
k1mu21
0
270
ローカルLLMを使ってB2Bサービスを作っていての学び
yaotti
0
200
依存関係から依存物へ―Dependencyという言葉の歴史をひも解く
j_lee
0
120
Featured
See All Featured
Designing Experiences People Love
moore
143
24k
Fireside Chat
paigeccino
42
4k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
150
Building Adaptive Systems
keathley
44
3.1k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
460
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
580
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.2k
The Cost Of JavaScript in 2023
addyosmani
55
10k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.4k
Exploring anti-patterns in Rails
aemeredith
3
410
Transcript
piyopiyo.ex 春のElixir入学式 ようこそElixirへ! 2023/4/1 ver0.1 nako
Elixirは どんな言語?
Elixirはどんな言語? • 関数型に影響を受けた動的なプログラミング言語。 • シンプルな構文で、文法はRubyから大きく影響を受けています。 ◦ Elixirの作者のJosé(ジョゼ)はRuby on Railsのコミッター •
拡張性や保守性に優れたアプリケーションを構築するために設計されています。 ◦ 拡張性とは、機器やソフトウェア、システムなどの使用を開始した後に、その中核部分に大きな変 更や交換、影響を伴わずに、機能追加や性能向上を行えること。 ◦ 保守性とは、機器やソフトウェア、システムなどが備える特性の一つで、所定の条件で修理や交換 などの保守作業を実施することで、機能や状態が維持される性質。また、その容易さ。
Elixirはどんな言語? • Elixirは、低遅延、分散、耐障害性があるシステムの構築で知られるErlang VM上で 実行されます。 ◦ スウェーデンの大手通信機器メーカー、エリクソン( Ericsson)によって開発され、電話交換機の制 御システムなどの通信アプリケーションの開発に使用されています。 ◦
Erlang VM(Virtual Machine)は、Erlangプログラムを実行するための仮想マシンです。 Erlang VM は、Erlang言語で書かれたプログラムを実行するためのランタイム環境を提供します。 ◦ オープンソースとして 1998年に公開されました。公開されてから 25年経過 • これらの機能とElixirのツールにより、開発者はWeb開発、組込みソフトウェア、 データパイプライン、マルチメディア処理など、幅広い産業分野で生産性を向上させ ることができます。
Elixirはどんな言語? • 海外サービスでは、SlackやSpotify、Discord、WhatsAppなどに使われています。 ◦ どれも大量ユーザーを抱えるネットワークサービス
Elixirは 書いて面白い
素晴らしき |>(パイプ)演算子 |>演算子は、左の項の式の結果をとって、右の関数呼び出しの第一パラメータとして渡 すことができる。 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
パターンマッチ① 値(右辺)がパターン(左辺)と同じ構造を持ち、パターンのそれぞれの項が値の中の対 応する項とマッチするとき、パターンマッチと呼びます。 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]
パターンマッチ② 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]
パターンマッチ② 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 関数呼び出しで パターンマッチが使える!
Elixirで なんでも出来る?!
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フレームワーク まだまだ他にもあるよ!!!
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で様々なジャンルの技術を 扱うことができます!
エンジョイElixir!