修身斉家治国平天下
Advent Calendar 2022 24日目1の記事です。
I'm ready for 12/25,2022
I'm looking forward to 12/25,2022
I can't wait for 12/25,2022
私のAdvent Calendar 2022 一覧。
はじめに
Elixirを楽しんでいますか
Livebookを楽しんでいますか
Nerves Livebookを楽しんでいますか
明日2022/01/25(火)は、「LiveView JP#3」でLTをします。
3つ話します。
話さないこと
しまった
LiveUpload特集と銘打たれていますが、
LiveUploadの話を用意していません。
う〜ん、そうですねー、あーそうだLiveUpload関連でコントリビューションしたことがあることを思い出しました。
docの修正です。
この当時、LiveUploadのレビューに
$\huge{勝手に参加していました🚀}$
LiveUploadと全く無関係の人ではないことをアピールしておきます。
詳しいことは、@piacerex さんと @the_haigo さんにお任せして、私は違う話をします。
主役たち
Elixir の主役たちを私の感じ方でざっくり説明します。
Elixirエコシステムの
$\huge{ど真ん中}$
にいらっしゃる本体、ライブラリたちです。
私の感じ方、ざっくりとした説明 | |
---|---|
Elixir | 世俗派関数型言語3。なんとなく知らない間にゆるふわで「アタシ、関数型言語でプログラミングしちゃってました」 てな具合にプログラミングを楽しめます。 |
Phoenix | Webアプリケーションの開発を楽しめます |
LiveView | 高性能なバックエンド開発もリッチなフロントエンド開発もElixir一本で楽しめます! |
Livebook | Jupyterに相当するもの。LiveViewを利用したアプリケーションの代表例ともいうべき金字塔。LiveViewを利用したアプリケーションのお手本であり、最高峰。 |
Nx | AI関係のゲームチェンジャー |
Nerves |
ElixirでIoTを楽しめるフレームワークです。ナウでヤングでcoolなすごいやつです。(誤解を恐れずにいえば)Nervesは、Elixir専用OSです!!! sshで中に入ったらiex> ![]() ![]() ![]() |
Nerves Livebook | Livebookは、Nervesの上でイゴきます2 |
Req
Nerves LivebookにデフォルトでプリセットされるようになったHTTPクライアントです。
プリセットされるようになったのは、何を隠そう私のプルリクです。
Qiita APIを利用させていただいてElixirタグがついた最新記事20件を取得しています。
"https://qiita.com/api/v2/items?query=tag:Elixir"
|> URI.encode()
|> Req.get!(finch_options: [pool_timeout: 50000, receive_timeout: 50000])
|> Map.get(:body)
|> Enum.map(& Map.take(&1, ["title", "url"]))
海外のAlchemistは、Req推しのようです。
OwnerのWojtek Machさんは、Elixir本体にもたくさんコミットされています。
Mermaid
Livebookのmarkdownでこげなことをかくと、いい感じに表示されます。
@ShozF さんにNerves Livebookでも動くことを教えてもらいました。
この場をお借りして厚く御礼申し上げます。
当日はデモ or 動画共有をします。
Mermaidのトップページにあるサンプルは、Sequence diagramを除いてそのまま動きます。
Sequence diagramで一部パースエラーが発生してしまう件は、Issueの報告をしています。
José Valimさんご本人から直々にご返信をいただきました。
Webチカ
当日お知らせするURLに代表でどなたかにアクセスしていただいて、以下のプログラムにてLチカをしていただきます。
点灯
{:ok, gpio} = Circuits.GPIO.open(18, :output)
Circuits.GPIO.write(gpio, 1)
消灯
{:ok, gpio} = Circuits.GPIO.open(18, :output)
Circuits.GPIO.write(gpio, 0)
仕組み
ngrokを使っています。
One command for an instant, secure URL to your localhost server through any NAT or firewall.
Wrapping up 



Enjoy Elixir
$\huge{Enjoy\ Elixir🚀}$
「LiveView JP#3」のLTにて3つ話をしました。
Elixirの誕生日は、2012年5月24日です。
そのため、今年の2022年5月24日は10周年を迎えます。
iex(1)> Date.diff(~D[2022-05-24], ~D[2022-01-24])
120
2022年に流行る技術予想 ーー それは、Livebookです
Elixir
最後の最後に、Elixirについて紹介します。
- |>でスイスイ、プログラミングしていくことができる素敵なプログラミング言語です
- さっそくプログラムの例を示します
-
Qiita APIを使わせていただいて、
Elixir
タグがついた最新の記事を20件取得しています - ここでは雰囲気をつかんでいただければ大丈夫です
Mix.install [{:req, "~> 0.2.1"}]
"https://qiita.com/api/v2/items?query=tag:Elixir"
|> URI.encode()
|> Req.get!(finch_options: [pool_timeout: 50000, receive_timeout: 50000])
|> Map.get(:body)
|> Enum.map(& Map.take(&1, ["title", "url"]))
Webアプリケーションを楽しむなら
IoTを楽しむなら
AIを楽しむなら
もっとElixirのことを知りたい方へオススメの書籍
- プログラミングElixir(第2版) -- オーム社
- Elixir実践ガイド -- インプレス
- アルケミスト − 夢を旅した少年 -- KADOKAWA
コミュニティ
-
elixir.jp Slack workspaceに参加してみてください
- マヂ、やさしい人ばっかりのコミュニティ
- あなたの困ったをきっと解決してくれるでしょう
-
NervesJP Slack workspaceでは、NervesやIoTが好きな愉快なfolksたちがあなたの訪れを歓迎します
- たくさんのコミュニティがあります
(EDI/fukuoka.ex/kokura.ex & LiveView JP の @piacerex さん作)
Elixirコミュニティに初めて接する方は下記がオススメです
Elixirコミュニティ の歩き方 -国内オンライン編-
https://speakerdeck.com/elijo/elixirkomiyunitei-falsebu-kifang-guo-nei-onrainbian
(piyopiyo.ex & エリジョ の nakoさん(@nako_sleep_9h) 作、素敵な資料)
I organize autoracex.
And I belong to NervesJP, fukuoka.ex, EDI.
I hope someday you'll join us.
We Are The Alchemists, my friends!
-
@kaizen_nagoya さんの「「@e99h2121 アドベントカレンダーではありますまいか Advent Calendar 2020」の改訂版ではありますまいか Advent Calendar 2022 1日目 Most Breakthrough Generator」から着想を得て、模倣いたしました。 ↩
-
ウェブチカの初出は、@nishiuchikazuma さんの https://speakerdeck.com/nishiuchikazuma/elixir-nervesru-men-jian-lao-naiot-edgedebaisupuroguraminguwooshou-qing-ni-nervesdetukuruuebutika-number-algyan ↩ ↩2
-
@kikuyuta 先生の「世俗派関数型言語 Elixir を関数型言語風に使ってみたらやっぱり関数型言語みたいだった」より。Elixirはコワくないですよ〜。 ↩
-
大時計の針のこと。針がイゴいてある地点まで到達すると選手はスタートを切って良い発走の合図。針がイゴきはじめると(おそらく)選手は緊張するし、スタートはその後のレース展開に大きく影響するので、車券を握りしめている観客たちがもっとも緊張する瞬間であるため、先の尖った鋭いものを連想させる針は緊張の暗喩としても言い得て妙。 ↩