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
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
93
NervesHubでrp4に自動デプロイ
nako_sleep_9h
0
71
Elixir国内コミュニティと アンチパターン回避
nako_sleep_9h
3
150
「推し」について話すLT〜NOKIA、Elixir〜
nako_sleep_9h
0
130
YouTubeライブ対談からのエッジコンピューティング入門
nako_sleep_9h
1
210
おすすめエンジニアコミュニティ
nako_sleep_9h
0
290
ElixirDesktopを楽しむための前説
nako_sleep_9h
0
440
Livebookを楽しむための前説
nako_sleep_9h
0
270
Nx、Axonを楽しむための前説
nako_sleep_9h
0
240
Other Decks in Programming
See All in Programming
torikago - Ruby::Boxで照らすモジュラモノリスの実行境界
se4weed
1
290
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
350
改善しないと、タスクが回らない。 “てんこ盛りポジション” を引き継いだ情シスの、入社3ヶ月の業務改善録
krm963
0
230
その節約、円になってますか?
isamumumu
0
590
Go言語とトイモデルで学ぶTransformerの気持ち / fukuokago23-transformer
monochromegane
0
150
作るコストが小さくなった時代 幸せに働くために改めて考えたいこと 〜エンジニアとして価値を出し続けるために注視している二分野〜
yuppeeng
0
140
Build-to-own AI: Agentic Development for Humans
inesmontani
PRO
0
130
ドリフトを絶対に許さない(?)CDK運用 / CDK Ops with Zero Tolerance for Drifts (?)
akihisaikeda
1
130
ソフトウェア設計に溶けるインフラ ― AWS CDK のインフラ認識論
konokenj
3
710
ビデオ通話が繋がる0.2秒で何が起きているのか
supurazako
2
160
Laravel Boostに学ぶ、AIにPHPを書かせる技術 〜OSSの実装から蒸留するエージェント制御の王道〜
kentaroutakeda
3
610
全PRの83%がAIレビューだけでマージできるようになった開発組織はその後どうなったか
athug
0
640
Featured
See All Featured
Game over? The fight for quality and originality in the time of robots
wayneb77
1
230
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
Code Reviewing Like a Champion
maltzj
528
40k
Code Review Best Practice
trishagee
74
20k
Color Theory Basics | Prateek | Gurzu
gurzu
0
400
First, design no harm
axbom
PRO
2
1.2k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
67k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.5k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
67
56k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
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!