この記事は、Elixir Advent Calendar 2023 シリーズ9 の18日目です
昨日は、 @RyoWakabayashi さんで 「闘魂Elixir ── Advent of code 2023 Day 4 Part 2 を Livebook で楽しむ」 でした
piacere です、ご覧いただいてありがとございます
2023年末の時点で、Elixirにいったい何が出来るのかを紐解いていくシリーズで、前回は「⑥ AI・ML後編【Scholar/Explorer/Evison/EXGBoost】」でしたが、今回は「⑦ Livebook+プラグイン編」です
Livebook
Livebookは、2022年1月にデビューしましたが、現在までの約2年の間に、最も進化したElixir OSSだと思います
当初は、「JupyterNotebookやColaboratoryのElixir版」のようなElixir開発、もしくはAI・ML/データサイエンス開発環境としての位置付けが強かったですが、現在は、DB管理ツールやリアルタイムグラフ表示サーバ、データ変換サーバとしても使え、アプリケーションサーバとして他アプリへのモジュール/関数を提供するサーバや他サーバの管理コンソールとしても存在でき、さらにElixir分散ノードとしても高速稼働させることができます
従来のElixir/Erlangが進化し続けてきた方向を受け継ぎ、「よりElixirらしい魅力」を広げつつも、全く異なるUXの実現や、ユーザー層確立へと繋がるプロダクトとなっています
Elixirを新たに始める方が、iexからスタートするのでは無く、Livebookからスタートするケースも出てきており、更に書いたコードをMarkdownとして保存し、使いまわせるメリットもあることから、「育成」という面でも強力なプロダクトです
出来ること
- ノーコード(Elixir不要)でAI開発やDB管理、グラフ表示、データ変換をこなせる
- さまざまなデータ変換もノーコードでこなせる
- DB接続(PostgreSQL、MySQL、BigQuery、Snowflake等)とSQLもノーコードで
- Livebookで作ったアプリ(ノーコード含む)をLiveViewアプリとしてデプロイできる
- ノーコードで作ったものからElixirコードを抽出し、自作プロダクトに転用できる
- Web上だけでElixirコードを実行することができる
- JupyterNotebookやColaboratory同様、Markdownでコードを保存できる
- GitHubにpushすればGitHub上で表示もできる
- Marmaidによるダイアグラムも使える
- vi/emacsのようなキーバインディングが使える
- コードブロックの削除とアンドゥがUI上でできる
- JupyterNotebookやColaboratory同様、Markdownでコードを保存できる
- 既存のElixir PJやPhoenix PJに後付けでLivebookをバインドできる
- Livebook側でそれらPJのモジュールや関数を単独で動かして試せる
- データのグラフ化や
dbg
によるビジュアルデバッグ/スキップも可能
- データのグラフ化や
- Livebook側でそれらPJのモジュールや関数を単独で動かして試せる
- 複数ユーザーで同時に1つのLivebookに入ってモブプログラミングもできる
- 複数のLivebook同士を接続して、コードを共有することもできる
- 動いているElixirサーバに接続し、リモートデバッガとして動かすことができる
- Elixirサーバとして、他ElixirノードとNW接続できる
- Livebookを1つの分散サーバとしてクラスタ参加させることもできる
- Livebookをコントローラとした分散すら可能
- 今後、Phoenixのサーバレス機能「FRAME」で関数単位の分散も可能に
Livebookプラグイン
VegaLite
VegaLiteを使えば、Livebook上での高度なグラフ描画やセンサーデータのリアルタイム表示などお手のものです
Kinoシリーズ
今年もっとも進化したのは、LivebookにさまざまなUIパーツを提供してくれる 「kino」シリーズ でした
Webフォームもあれば、グラフ操作ノーコードUI、DB操作ノーコードUI、Bumblebee/Explorer等のAI・MLのためのノーコードUI、地図操作UI、Slack連携UI、ChatGPT copilot利用や動画配信、diff表示、シェル実行と多種多様なものが存在し、果てはLiveViewをLivebook上ですら動かせるものすら出現してしまい、まるでElixirの凄さが霞んでしまう位(笑)のインパクトでした
Kino
Livebook上にWebフォームを設けたり、実行結果を表示させる
KinoVegaLite
グラフ操作ノーコードUI
KinoLiveView
Livebook上でLiveViewアプリが構築でき、Livebookセルを1つのルーティングとして扱えます
KinoDB
DB操作ノーコードUI
KinoBumblebee
Bumblebee AI・ML操作ノーコードUI
KinoExplorer
Explorerデータ分析ノーコードUI
KinoCopilot
Livebook上でCopilotとのやり取りによるAIプログラミング支援
KinoDiff
diff表示(インライン、左右ペイン)
KinoShell
Livebook上でシェルコマンド実行
KinoSlack
LivebookからSlackにメッセージ送信できる
KinoMapLibre
地図操作UI
KinoMembrane
動画配信サーバである「Membrane」の配信パイプラインのビジュアライズなど
終わりに
Livebook+プラグインの織りなす、凄まじいElixir開発体験/新たな分散体験が伝わったでしょうか?
これまでElixirに触れ続けてきた人間から見ても、この2年間のLivebookとその周辺の進化は、「まるで付いていけない人」を続出させるくらいの勢いで、新しい世代のプログラミングイディオムを生み出しています
そうそう実は、Brightの管理系にもLivebookは活用されており、レポジトリにも含まれています … これも今後のElixirプロダクションにおけるRPA的在り方・使い方の提案の1つで、来年あたりには、そのレポートも公開していきたいと思います
次回は、「⑧ クラウドライブラリ編」をお送りします
明日は、 @torifukukaiou さんで 「闘魂Elixir ── LivebookではじめるElixir」 です