春すぎて夏来にけらし白たへのころもほすてふあまの香具山
Advent Calendar 2022 51日目1の記事です。
I'm looking forward to 12/25,2022
私のAdvent Calendar 2022 一覧。
はじめに
Elixirを楽しんでいますか
2月22日(火)に行われるLiveView JP#4:Livebook始めよう+Fly.ioでモブプロのLT資料です。
説明すること
この資料で説明すること(もくじ)です。
What's Livebook?
Livebookとは、Elixir's version of Jupyter Notebooksです。
Livebook is an exciting advancement in the Elixir community. It was created for the Elixir machine learning library nx. You can think of it as Elixir's version of Jupyter Notebooks.
https://fly.io/docs/app-guides/elixir-livebook-connection-to-your-app/
以下、ド派手な(象徴的な)サンプルです。
私の感じ方、ざっくりとした説明
私の感じ方、ざっくりとした説明をご紹介します。
私の感じ方、ざっくりとした説明 | |
---|---|
Elixir | 世俗派関数型言語2。なんとなく知らない間にゆるふわで「アタシ、関数型言語でプログラミングしちゃってました」 てな具合にプログラミングを楽しめます。 |
Phoenix | Webアプリケーションの開発を楽しめます |
LiveView | 高性能なバックエンド開発もリッチなフロントエンド開発もElixir一本で楽しめます! |
Livebook | Jupyterに相当するもの。LiveViewを利用したアプリケーションの代表例ともいうべき金字塔。LiveViewを利用したアプリケーションのお手本であり、最高峰。 |
Nerves |
ElixirでIoTを楽しめるフレームワークです。(誤解を恐れずにいえば)Nervesは、Elixir専用OSです!!! sshで中に入ったらiex> |
Nerves Livebook | Livebookは、Nervesの上でイゴきます3 |
Livebookの動かし方
Livebookの動かし方を説明します。
Dockerをインストールしておいてください。
ローカルマシン
ローカルマシンで動かす手順を説明します。
https://github.com/livebook-dev/livebook に書いてあるコマンド例に従ってください。
2022/02/20時点で書いてある内容を転載しておきます。
お使いになるときの最新の情報でお試しください。
docker run -p 8080:8080 -p 8081:8081 --pull always livebook/livebook
fly.io
fly.ioで動かす手順を説明します。
いつでもどこでもElixirを楽しめるようになります。
fly.ioは、Phoenixとめちゃくちゃ相性のいいPaaSです。
2つ紹介します。
① https://fly.io/launch/livebook
このページからポチポチやるとすぐにできます。
注意点としては、LIVEBOOK_PASSWORD
を覚えておいてください。
もし忘れちゃった場合は、以下のように値を上書きしてください。
flyctl --app your-app-name secrets set LIVEBOOK_PASSWORD="securesecret"
-
--app your-app-name
はアプリ名で上書きしてください- アプリ名が不明な場合は、
flyctl list apps
で一覧から確認してください
- アプリ名が不明な場合は、
- 説明が前後しますが、「Installing flyctl」に従って
flyctl
コマンドをインストールしておいてください
② Dockerfile
Dockerfileを用意するだけの方法を紹介します。
Deploy Your Application via Dockerfile
が参考になります。
Dockerfileは以下の1行だけです。
FROM livebook/livebook:0.5.2
-
0.5.2
は2022/02/20時点の最新です。 - DockerHubにて最新のバージョンをご確認ください。
上記のDockerfile
をおいたディレクトリにて以下のように操作します。
説明が前後しますが、「Installing flyctl」に従ってflyctl
コマンドをインストールしておいてください。
flyctl launch -- Launch a new app
fly.io上のアプリを作ります。
flyctl launch
-
App Name (leave blank to use an auto-generated name):
はお好きな名前か自動生成に任せましょう -
Would you like to setup a Postgresql database now?
はNo
でよいです -
Would you like to deploy now?
はNo
でよいです
この操作でローカルには、fly.toml
ファイルができあがります。
環境変数の設定
続いて環境変数LIVEBOOK_PASSWORD
を設定しておきます。
flyctl --app dark-river-20 secrets set LIVEBOOK_PASSWORD="securesecret"
-
--app dark-river-20
は、ご自身のアプリ名に書き換えてください。 - アプリ名を忘れちゃった場合は、
fly.toml
ファイルの中身を確認してください
flyctl deploy --detach
さあ、デプロイです。
flyctl deploy --detach
デプロイできました。
私が作ったものを公開しておきます。
どうぞご自由にお使いください。
https://dark-river-20.fly.dev/
パスワードは、securesecret
です。
Notebookデモ
当日、Notebookのデモをします。
Elixirを楽しみます。
Welcome to Livebookを説明しながら動かします。
Wrapping up
Enjoy Elixir
$\huge{Enjoy\ Elixir🚀}$
$\huge{Enjoy\ Livebook🚀}$
この記事では、Livebookの基礎知識をまとめました。
さあ、このあともLiveView JP#4:Livebook始めよう+Fly.ioでモブプロをお楽しみください
付録
以下、付録です。
Elixirの誕生日は、2012年5月24日です。
そのため、今年の2022年5月24日は10周年を迎えます。
iex> Date.diff(~D[2022-05-24], ~D[2022-02-18])
95
そうそう!
2月24日発売予定のWEB+DB PRESSで、ElixirとPhoenixの特集がでますよ〜
Elixir、Phoenixをはじめられたばかりの方も、腕におぼえがある方も、どんなものなのかなあと様子見をきめこんでいる方も、
つまりは
$\huge{全人類のみなみなさま!!!}$
お手にとって、お楽しみください!!!
We, @tamanugi @torifukukaiou @the_haigo @mokichi_s12m including me, wrote featured articles for WEB+DB PRESS Vol.127 about Elixir and Phoenix! It's being published on 24, Feb.https://t.co/UPNiVU1zG9
— 栗林健太郎 (@kentaro) February 4, 2022
fukuoka.ex特別編:WEB+DB PRESS vol127 Phoenix特集こたつで座談会
出版記念イベントが開催されます。
ぜひご参加ください。
2022/03/08(火) 19:30 〜 21:00
この本を多くの方に知っていただき、出版という ”おめでたい” イベントを、執筆陣全員と皆さまで、ぜひ同じこたつに入ってのんびり座談会するかのように楽しんでいただきたいと思います。
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さん(@kn339264) 作、素敵な資料)
Elixirのイベント情報
@koga1020 さんが作成されたイベントカレンダーがあります。
https://elixir-jp-calendar.fly.dev/
気になるイベントにはぜひ参加してみましょう!!!
上記サイトの解説記事はこちらです。
I organize autoracex.
And I take part in NervesJP, fukuoka.ex, EDI, tokyo.ex, Pelemay.
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」から着想を得て、模倣いたしました。 ↩
-
@kikuyuta 先生の「世俗派関数型言語 Elixir を関数型言語風に使ってみたらやっぱり関数型言語みたいだった」より。Elixirはコワくないですよ〜。 ↩
-
「動きます」の意。おそらく西日本の方言、たぶん。NervesJPではおなじみ。少し古いオートレースの映像ですが、実況アナウンサーが「針4イゴきます」とはっきり言っています。https://autorace.jp/netstadium/SearchMovie/Movie/iizuka?date=2017-01-04&p=5&race_number=11&pg= ↩
-
大時計の針のこと。針がイゴいてある地点まで到達すると選手はスタートを切って良い発走の合図。針がイゴきはじめると(おそらく)選手は緊張するし、スタートはその後のレース展開に大きく影響するので、車券を握りしめている観客たちがもっとも緊張する瞬間であるため、先の尖った鋭いものを連想させる針は緊張の暗喩としても言い得て妙。 ↩