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
86
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
270
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
ユニットテストの先へ:テスト技法で要求・仕様を整理するJava開発実践 / Beyond_Unit_Testing_Practical_Java_Development_Techniques_for_Organizing_Requirements_and_Specifications
shimashima35
0
390
TypeScript+Orvalで実現する型安全かつ堅牢でスケーラブルなマルチチャネル通知基盤 / TSKaigi Night talks ~after conference~
d0riven
0
330
Composerを使ったサプライチェーン攻撃の様子を眺めてみる #phpstudy
o0h
PRO
2
240
脅威をエンジニアリングの糧にして――現場編 / Turning Threats into Engineering Fuel — Field Edition
nrslib
0
270
不変条件と整合性境界—ビジネスが決める設計判断と実現パターン / Invariants and Consistency Boundaries
nrslib
13
3.6k
Technical Debt: Understanding it Rightly, Engaging it Rightly #LaravelLiveJP
shogogg
0
220
決定論的オーケストレーションの設計と実装 / Design and Implementation of Deterministic Orchestration
nrslib
3
1.3k
AIチームを指揮するOSS「TAKT」活用術 / How to Use “TAKT,” an OSS Tool for Orchestrating AI Teams
nrslib
6
880
Java × distroless で 軽量なコンテナイメージを / Java on Distroless
contour_gara
0
530
Vite+ Unified Toolchain for the Web
naokihaba
0
280
エージェンティックRAGにAWSで入門しよう!
har1101
8
1.4k
AI時代の仕事技芸論 — ソフトウェア開発で「遊ぶように働く」職人的熟達のすすめ
kuranuki
2
660
Featured
See All Featured
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
840
What's in a price? How to price your products and services
michaelherold
247
13k
Six Lessons from altMBA
skipperchong
29
4.3k
The Cost Of JavaScript in 2023
addyosmani
55
10k
Technical Leadership for Architectural Decision Making
baasie
3
400
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
200
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
180
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.7k
New Earth Scene 8
popppiees
3
2.3k
Done Done
chrislema
186
16k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
300
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!