Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
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
110
NervesHubでrp4に自動デプロイ
nako_sleep_9h
0
79
Elixir国内コミュニティと アンチパターン回避
nako_sleep_9h
3
150
「推し」について話すLT〜NOKIA、Elixir〜
nako_sleep_9h
0
130
YouTubeライブ対談からのエッジコンピューティング入門
nako_sleep_9h
1
210
おすすめエンジニアコミュニティ
nako_sleep_9h
0
310
ElixirDesktopを楽しむための前説
nako_sleep_9h
0
450
Livebookを楽しむための前説
nako_sleep_9h
0
270
Nx、Axonを楽しむための前説
nako_sleep_9h
0
250
Other Decks in Programming
See All in Programming
数年滞っていたダークモード対応をおよそ2週間で完了させる
chigichan24
0
730
LL言語やWebフレームワークのPostgreSQL対応 〜DBの機能がユーザーに届くまで〜
kentaroutakeda
1
150
Heart of Swift Concurrency
koher
0
920
Starting & Sustaining Code-Based E2E Testing for Non-Coding QA Teams( #jasstniigata )
teyamagu
PRO
1
430
App Storeの外へ──日本のiOSサイドローディング入門 for iOSDC Japan 2026
yuukiw00w
0
220
Family mrubyの進捗
kishima
1
130
AI Agent時代のリアーキテクチャ戦略と実践
hokaccha
9
4.8k
setup-vp GitLab対応の裏側
naokihaba
0
110
Intent as Code
shoppingjaws
6
1k
WebAssembly in Android Apps 〜 WASMはJNIの夢を見るか
keiji
1
110
世界の中心で、AI(App Intents)をさけぶ ー App Intents中心設計の実践ガイド
touyou
0
620
Building an Out-of-Order CPU
latte72
1
790
Featured
See All Featured
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
330
A Soul's Torment
seathinner
8
3.6k
Designing Powerful Visuals for Engaging Learning
tmiket
1
570
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.8k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
370
Context Engineering - Making Every Token Count
addyosmani
9
1.1k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
250
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
42k
Code Reviewing Like a Champion
maltzj
528
40k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
500
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!