Livebook のはじめ方 -インストール、実行、注意点-

## はじめに

Livebook はブラウザ上で Elixir や Erlang のコードを実行し、結果を視覚化できるツールです

https://livebook.dev/

例えば以下の画像のように、黒い枠（セル）の中にコードを書いて実行すると、そのすぐ下に結果が表示されます

![スクリーンショット 2023-07-26 9.59.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/61922a62-b29c-feac-a6f1-02058bcd359b.png)

実行した一連のコードは「ノートブック」という形式で保存され、他の人と共有することができます

Python の [Jupyter](https://jupyter.org/) のようなツールですが、より簡単に高度な UI/UX が実装できるようになっており、更に書いたコードをそのまま Web アプリとしてリリースすることまでできます

https://qiita.com/RyoWakabayashi/items/9cd0032d1bd4ddad5d6c

以前、 @nako_sleep_9h さんが書いた記事がありますが、改めて、2023年7月 Livebook のはじめ方最新版をまとめます

https://qiita.com/nako_sleep_9h/items/585786648d2b7560d010

## 実行環境

Livebook は様々な方法で利用可能になっています

自分の好みや利用目的に合わせて使い分けましょう

|               環境              | 難易度 | 柔軟性 | 利便性 | コメント |
|:-------------------------------|:-----:|:-----:|:-----:|:------|
| [デスクトップアプリ](#デスクトップアプリ) |   ★   |   ★   |   ★   | 一番簡単です。ここから始めましょう |
| [クラウド](#クラウド)               |  ★★   |  ★★   |  ★★★  | 無料で使えます。有料で GPU も使えます |
| [コンテナ](#コンテナ)              |  ★★   |  ★★★  |  ★★   | いくらでも環境カスタマイズ可能です |
| [ローカルビルド](#ローカルビルド)      |  ★★   |  ★★★  |  ★★   | ローカルネットワークで分散処理したい場合など |

## デスクトップアプリ

環境構築初心者の方はデスクトップアプリがオススメです

Windows や macOS であればインストーラーから簡単にインストールできます

Livebook 公式のトップページ "Install Livebook" ボタンから簡単にインストール可能です

https://livebook.dev/

![スクリーンショット 2023-07-26 9.13.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/8bd50b2a-0b44-d664-9072-dcae2e41a661.png)

[インストールページ](https://livebook.dev/#install)に遷移します

Mac か Windows か、自分のローカルマシンに合ったものをクリックします

![スクリーンショット 2023-07-26 9.14.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/ccfc5c6c-4e94-1344-58f7-788cfd24e73c.png)

### macOS の場合

[インストールページ](https://livebook.dev/#install)の "Mac (Universal)" をクリックします

"LivebookInstall-latest-macos-universal.dmg" というファイルがダウンロードされます

ファイルをダブルクリックすると、以下のように Finder が表示されます

![スクリーンショット 2023-07-26 9.18.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/98962adb-6fc2-9363-6496-f554d9063624.png)

"Livebook.app" を "Applications" にドラッグ&ドロップします

macOS の画面最下部にあるバー（Dock）の Lanchpad をクリックします

![スクリーンショット 2023-07-26 9.20.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/5073e755-4e93-2031-9e14-6815d68bbdb1.png)

表示されるアプリのアイコンから、 Livebook のアイコンをクリックします

![スクリーンショット 2023-07-26 9.20.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/78a19f52-ab8e-1a6d-622f-f241120dd715.png)

デフォルトのブラウザ（Chrome や Safari）で Livebook が開きます

![スクリーンショット 2023-07-26 9.24.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/3c720096-c19c-19ae-3ce8-e8530006b4e9.png)

バージョン "0.10.0" では、 localhost のランダムなポート番号で起動します

インストール後、 "LivebookInstall-latest-macos-universal.dmg" は不要なので削除しましょう

[Livebook のホーム画面からノートブックを作成してみましょう](#ノートブックの作成)

### Windows の場合

[インストールページ](https://livebook.dev/#install)の "Windows" をクリックします

"LivebookInstall-latest-windows-x86_64.exe" というファイルがダウンロードされます

ファイルをダブルクリックすると、警告メッセージが表示されます

![スクリーンショット 2023-07-27 110139.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/727ba1a7-29d4-4633-e0c8-21830cfc4901.png)

「詳細情報」をクリックすると、実行できるようになります

![スクリーンショット 2023-07-27 110156.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/b72b0a07-7d05-a3ec-d619-44c26d270d86.png)

その後、再び警告メッセージが表示されることがありますが、そのまま実行します

以下のようにインストーラーが表示されたら "Install" をクリックします

![スクリーンショット 2023-07-27 110227.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/bf31486a-f565-46f4-8543-812ba95f588a.png)

インストール時、ネットワークに関する警告がでることがありますが、「許可する」をクリックしてください

インストールが完了したらインストーラーを閉じてください

デスクトップに Livebook のショートカット（アイコン）が作成されています

![スクリーンショット 2023-07-27 110839.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/3373ec0b-f227-7c8d-8831-cc4265ba87c7.png)

また、 Windows のメニューバーからも検索できるようになっています

![スクリーンショット 2023-07-27 111428.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/ccee7a23-6f23-5dbc-4c55-7976ed880e81.png)

Livebook のアイコンをクリックすると、ブラウザで Livebook　のホーム画面が開きます

![スクリーンショット 2023-07-27 111253.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/3cf2b6d1-06c5-b75d-7324-bfb603c28aed.png)

[Livebook のホーム画面からノートブックを作成してみましょう](#ノートブックの作成)

### 高度なデスクトップアプリのインストール方法

古いバージョンや未リリースの最新版を使いたい場合は特殊な方法になります

Livebook 公式の GitHub リポジトリーから各バージョンのインストーラーをダウンロードできます

https://github.com/livebook-dev/livebook/releases

各 Release （バージョン）の Assets から　".dmg" や ".exe" をダウンロードしてください

![スクリーンショット 2023-07-26 9.32.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/e2044f3c-32b5-8483-7b59-b4d11b8c0547.png)

また、 Nightly （未リリースの最新コードによるビルド）版は以下のリンクからダウンロードできます

- [macOS](https://livebook.dev/releases/nightly/LivebookInstall-nightly-macos-universal.dmg)
- [Windows](https://livebook.dev/releases/nightly/LivebookInstall-nightly-windows-x86_64.exe)

## クラウド

好きなときに好きなスペックのマシンで動かしたい方にはクラウドをオススメします

[Fly.io](https://fly.io/) や [Hugging Face](https://huggingface.co/) で CPU、メモリ、GPUなどのスペックを指定し、数クリックで利用開始できます

どちらのサービスも最低限のスペックであれば無料利用可能です

Fly.io と Hugging Face どちらもアカウント登録（サインアップ）が必要なので、初回はサインアップしてください

- [Fly.io のサインアップ](#fly.io-のサインアップ)
- [Huggin Face のサインアップ](#huggin-face-のサインアップ)

サインアップ完了後、 Livebook 公式からクラウド環境構築を実行します

https://livebook.dev/

![スクリーンショット 2023-07-26 9.13.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/8bd50b2a-0b44-d664-9072-dcae2e41a661.png)

[インストールページ](https://livebook.dev/#install)に遷移します

![スクリーンショット 2023-07-26 9.39.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/ac6dc955-4a26-aab2-84d4-ecd7ca73207b.png)

- Fly.io

  気軽に利用できるクラウドプラットフォームです

  ３つまでならサーバーを無料で使えます

  PostgreSQL のデータベースも簡単に無料で利用できるので、データベースも使いたい場合は Fly.io を選択します

  GPU は 2023年7月時点で [waitlist](https://fly.io/gpu/) による待ち状態です（そのうち使えるようになります）

- Hugging Face

  機械学習用のコード、データ、モデルファイルなどが集まっているコミュニティサイトです

  様々な機械学習用の環境をクラウド上に構築することができます

  現状、 GPU を使いたい場合は Hugging Face を選択します

### Fly.io

#### Fly.io のサインアップ

初めての場合はサインアップ（無料）が必要です

Livebook の環境以外にも、様々な Web フレームワークを簡単に動かせるようになっているので、アカウント登録しておいて損はありません

トップページの右上 "Sign Up" から指示に従ってアカウントを登録します
（全部英語ですが頑張りましょう）

![スクリーンショット 2023-07-26 10.38.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/eb6fdd42-9294-31fc-c295-5dfb4d73701b.png)

#### Fly.io の料金

Fly.io の料金表はこちら

https://fly.io/docs/about/pricing/

> Resources included for free on all plans:
>
> Up to 3 shared-cpu-1x 256mb VMs†
> 3GB persistent volume storage (total)
> 160GB outbound data transfer

shared-cpu-1x 256MB の仮想サーバーを3台、ストレージ 3GB 、 160 GB までの外向けデータ転送は無料です

Livebook を普通に使う分には十分ですが、一部のモジュールを使う場合、ビルド時点で大きなメモリが必要になることもあるので、その場合はリソースを拡張しましょう

#### Fly.io の支払い設定

無料利用範囲内であっても、クレジットカードを登録していないと Livebook を起動できません

クレジットカード登録なしの場合、起動しようとしたときに以下のようなメッセージが表示されます

```
We need your payment information to continue! Add a credit card or buy credit: https://fly.io/dashboard/xxxx/billing
```

Fly.io の支払い情報画面に移動します

https://fly.io/dashboard/personal/billing

"Add credit card" をクリックします

![スクリーンショット 2023-07-26 10.56.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/9b3392b9-3ea1-a529-f43c-43d57b10bb64.png)

以降、表示される画面の指示に従ってクレジットカードを登録してください

#### Fly.io での Livebook 起動

[Livebook のインストールページ](https://livebook.dev/#install)から、 "Run on Fly.io" をクリックします

![スクリーンショット 2023-07-26 9.39.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/ac6dc955-4a26-aab2-84d4-ecd7ca73207b.png)

Fly.io の画面に遷移するので、 "PICK AN APP NAME" に適当な名前を入力し、 "LIVEBOOK_PASSWORD" の値をどこかにメモしておきます

右下 "Deploy Livebook" をクリックします

![スクリーンショット 2023-07-26 11.03.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/24da62cc-f63e-0a05-420e-19da7385a05d.png)

しばらくすると、以下のような画面に変化するので、 "APP URL" の下に表示されている URL をクリックします

![スクリーンショット 2023-07-26 11.07.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/b09698a6-b0c6-3d0e-fb13-f67500001a0d.png)

認証画面が表示されるので、メモしておいた "LIVEBOOK_PASSWORD" の値を入力し、 "Authenticate" ボタンをクリックします

![スクリーンショット 2023-07-26 11.08.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/6e65b3e4-6e0a-00d2-f358-d2e2df56924f.png)

Livebook のホーム画面が表示されます

![スクリーンショット 2023-07-26 11.20.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/374b1987-40cc-8b20-c5c8-ff00c533ebe5.png)

[Livebook のホーム画面からノートブックを作成してみましょう](#ノートブックの作成)

#### Fly.io へのカスタムコンテナのデプロイ

カスタマイズした Livebook コンテナを Fly.io にデプロイすることも可能です

https://qiita.com/RyoWakabayashi/items/5ac91260b4d6b55adc1a

### Hugging Face

#### Huggin Face のサインアップ

初めての場合はサインアップ（無料）が必要です

Livebook の環境以外にも、 AI 、機械学習を学習するのに役立つコンテンツがたくさんあるので、アカウント登録しておいて損はありません

トップページの右上 "Sign Up" から指示に従ってアカウントを登録します
（全部英語ですが頑張りましょう）

![スクリーンショット 2023-07-26 9.50.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/fd5123ee-4156-5f07-fc40-7cdd66361ba5.png)

#### Hugging Face の料金

Hugging Face の料金表はこちら

https://huggingface.co/pricing#spaces

"CPU Basic" であれば無料で使用可能です

#### Hugging Face の支払い設定

GPU を使いたい場合、先に支払い設定をする必要があります

ログイン後のトップページ右上の自分のアイコンをクリックし、 "Settings" を開きます

![スクリーンショット 2023-05-23 9.10.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/2fc6411a-8c3e-8845-302f-f543096e43c8.png)

設定画面が開くので、左メニューから "Billing" を開きます

まだ支払い設定をしていない場合、支払い情報を更新するように求められます

![スクリーンショット 2023-05-23 9.04.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/7cc6700c-ce9d-e385-cd89-366e0dd8f55f.png)

"Payment information" タブを開き、 "Add a payment method" ボタンをクリックしてください

![スクリーンショット 2023-05-23 9.04.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/bbe9bc46-ed27-aeb1-500d-efdb6f94bf09.png)
 
クレジットカードの情報を入力し終えると、支払い情報が以下のように表示されます

![スクリーンショット 2023-05-23 9.10.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/537d40e8-9afd-4e4e-2928-aa8f6bf0ca9f.png)

#### Hugging Face での Livebook 起動

[Livebook のインストールページ](https://livebook.dev/#install)から、 "Run on Hugging Face" をクリックします

![スクリーンショット 2023-07-26 9.39.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/ac6dc955-4a26-aab2-84d4-ecd7ca73207b.png)

Hugging Face の画面に遷移します

"Space name" に適当な名前（この例では "livebook"）を入れ、 Space SDK に "Docker"、 Docker template に "Livebook" を選択します

![スクリーンショット 2023-05-22 17.38.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/d510deda-6d76-8730-beb4-d69c77111a3d.png)

"Space hardware" から使用したいサーバーのスペックを選択します

"LIVEBOOK_PASSWORD" に Livebook 起動時に使用するパスワードを12文字以上で入力します（後で使うので覚えておいてください）

:::note warn
パスワード文字数が足りない場合、 Space 作成時にエラーが発生します
:::

![スクリーンショット 2023-07-26 10.01.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/7d537c59-20d7-dff0-0d29-1473945d809d.png)

GPU を使う場合、 "XLA_TARGET" に CUDA のバージョンを指定します

2023年7月現在、 "cuda118" を入れておけば問題ありません

有効な値は EXLA 公式を参照してください

https://github.com/elixir-nx/xla#xla_target

最後に一番下の "Create Space" をクリックします

コンテナのビルドが開始され、数分待つと以下の画像のように最上部中央のステータスが "Running" になります

![スクリーンショット 2023-07-26 10.23.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/77ce2105-afbe-be3c-80d7-1d3776a87e60.png)

画面下部の Logs パネルの右上 "x" をクリックし、ログを閉じます（後で開き直すこともできます）

![スクリーンショット 2023-05-23 11.11.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/e83d6c81-08ea-6844-56e6-d4422ec1f547.png)

左側に Livebook の認証画面が表示されるので、入力した "LIVEBOOK_PASSWORD" の値を入力し、 "Authenticate" ボタンをクリックします

![スクリーンショット 2023-07-26 10.29.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/f9a632f4-cb76-671f-21d2-7c05ae558970.png)

Livebook のホーム画面が表示されます

![スクリーンショット 2023-07-26 10.30.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/011b76e4-98ca-4d69-5f95-1c4e5668aab1.png)

[Livebook のホーム画面からノートブックを作成してみましょう](#ノートブックの作成)

### Google Colab

ちょっとしたハックで Google Colab 上で Livebook を動かすこともできます

https://qiita.com/RyoWakabayashi/items/113b94866780c7646af1

## コンテナ

色々なライブラリを制限なく使いたい、最低限の環境構築は自前でできる、という方はコンテナがオススメです

コンテナ定義（Dockerfile）で自由に何度でも好きな環境を構築できます

### コンテナ実行環境の準備

学生や小規模ビジネス、個人開発、OSS開発のみでの利用の場合、 Docker Desktop を無償利用できます

Docker Desktop の公式からインストーラーをダウンロードし、実行しましょう

https://www.docker.com/products/docker-desktop/

![スクリーンショット 2023-07-26 11.23.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/9a85e840-864a-01b3-424b-537f7edc4c94.png)

一定規模以上の企業では Docker Desktop を無償利用できないので、無償で Docker のビルド、実行をしたい場合、 Rancher Desktop を使います

こちらも Rancher Desktop 公式からインストーラーをダウンロードししてください

https://rancherdesktop.io/

![スクリーンショット 2023-07-26 11.27.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/7e65bb54-2b32-edb8-7ee0-12459c38d8bd.png)

Rancher Desktop を使う場合、 docker の CLI は別途インストールする必要があります

macOS の場合、 [Homebrew](https://brew.sh/index_ja) を使ってインストールします

```bash
brew install docker
```
Windows の場合、 [Chocolatey](https://chocolatey.org/) を使ってインストールします

```powershell
choco install docker-cli
```

プロキシ設定は以下の記事を参照してください

https://qiita.com/yuu-matsuo/items/4a9b007cc3da88055418

https://qiita.com/RyoWakabayashi/items/158e6957d362709dc4d6

以下のコマンドが実行できれば Docker のビルド、実行環境が構築できています

```bash
docker run hello-world
```

### 公式イメージの実行

公式イメージをそのまま使う場合、以下のコマンドを実行します

```bash
docker run \
  -p 8080:8080 \
  -p 8081:8081 \
  --pull always \
  ghcr.io/livebook-dev/livebook
```

ビルド完了後、 <http://localhost:8080> をブラウザで開けば Livebook が使用可能です

[Livebook のホーム画面からノートブックを作成してみましょう](#ノートブックの作成)

以下のようにオプション指定することで、ローカルのカレントディレクトリーをコンテナ内の /data にマウントできます

```bash
docker run \
  -p 8080:8080 \
  -p 8081:8081 \
  --pull always \
  -u $(id -u):$(id -g) \
  -v $(pwd):/data \
  ghcr.io/livebook-dev/livebook
```

Livebook をパスワード認証にしたい場合、 コンテナ上の環境変数 "LIVEBOOK_PASSWORD" に値を設定して実行します

```bash
docker run \
  -p 8080:8080 \
  -p 8081:8081 \
  --pull always \
  -e LIVEBOOK_PASSWORD="securesecret" \
  ghcr.io/livebook-dev/livebook
```

### バージョン指定での実行

Livebook のイメージは GitHub コンテナレジストリ上に保存されています

以下のページから各バージョンのタグを参照できます

https://github.com/livebook-dev/livebook/pkgs/container/livebook

例えば 0.9.3 を使いたい場合、以下のページにタグの指定方法が記載されています

https://github.com/livebook-dev/livebook/pkgs/container/livebook/103117683?tag=0.9.3

> ```
> docker pull ghcr.io/livebook-dev/livebook:0.9.3
> ```

従って、以下のようにバージョン指定して Livebook を起動することが可能です

```bash
docker run \
  -p 8080:8080 \
  -p 8081:8081 \
  --pull always \
  ghcr.io/livebook-dev/livebook:0.9.3
```

### カスタムイメージを使う場合

公式イメージを元にカスタムする場合、 Dockerfile を作成します

こちらは私が実装した例です

https://github.com/RyoWakabayashi/elixir-learning/blob/main/Dockerfile

```Dockerfile
FROM ghcr.io/livebook-dev/livebook:0.10.0

...

# For Vix, Image
RUN apt-get upgrade -y \
  && apt-get update \
  && apt-get install --no-install-recommends -y \
    libvips-dev \
  && apt-get clean \
  && rm -rf /var/lib/apt/lists/*

...

CMD ["/app/bin/livebook", "start"]
```

先頭行で公式イメージを元にするよう指定しています

`RUN` などを使ってコンテナ内の環境を定義します

最終行で Livebook を起動させています

また、Dockerfile と同じディレクトリーに docker-compose.yml を作っておくと、コンテナ起動が楽になります

https://github.com/RyoWakabayashi/elixir-learning/blob/main/docker-compose.yml

```yml
---

version: '3.2'

services:
  livebook:
    build: .
    container_name: livebook
    ports:
      - '8080:8080'
      - '8081:8081'
...
```

Dockerfile と docker-compose.yml があるディレクトリー内で以下のコマンドを実行すると、 Livebook が起動します

```bash
docker compose up --build
``` 

## ローカルビルド

Elixir に慣れている、ローカルマシンの性能が十分、Livebook自体のカスタマイズまでしたい、という方にはローカルビルドがオススメです

ローカルで Livebook をビルド、起動するため、物理的な制約以外は何もありません

### Elixir の実行環境構築

#### macOS への Elixir の実行環境構築

##### asdf のインストール

macOS の場合、 asdf の利用をオススメします

複数バージョンをいつでもインストールでき、任意のバージョンに簡単に切り替え可能です

Elixir 以外の多種多様な開発言語、ツールに対応しています

https://asdf-vm.com/

asdf は [Homebrew](https://brew.sh/index_ja) からのインストールが簡単です

```bash
brew install asdf
```

インストール後、パスを通すための設定が必要になります

シェルによって異なるので、以下を参照して実行してください

https://asdf-vm.com/guide/getting-started.html#_3-install-asdf

Homebrew でインストールし、 zsh （現在の macOS 標準）を使っている場合は以下のコマンドになります

```zsh
echo -e "\n. $(brew --prefix asdf)/libexec/asdf.sh" >> ${ZDOTDIR:-~}/.zshrc
```

##### asdf による Elixir と Erlang のインストール

Elixir と Erlang のプラグインを追加します

```bash
asdf plugin add elixir
asdf plugin add erlang
```

それぞれ、 2023年7月時点の最新版をインストールします

```bash
asdf install elixir 1.15.4-otp-26
asdf install erlang 26.0.2
```

現在ローカルマシンにログインしているユーザーで基本的に最新版を使いたい場合は以下のコマンドを実行します

```bash
asdf global elixir 1.15.4-otp-26
asdf global erlang 26.0.2
```

#### Windows への Elixir の実行環境構築

[Chocolatey](https://chocolatey.org/) を使って最新版をインストールします

```powershell
choco install elixir
```

Erlang は依存パッケージとして同時にインストールされます

### コードからのビルド、実行

#### GitHub からのコード取得

git コマンドで GitHub 上から Livebook の最新版コードを取得します

```bash
git clone https://github.com/livebook-dev/livebook.git
```

もしも特定のバージョンを使用したい場合は以下のようにタグを指定します

```bash
git clone https://github.com/livebook-dev/livebook.git -b v0.10.0
```

### ビルド、起動

クローンしてきたディレクトリー内に移動します

```bash
cd livebook
```

asdf を使っていて、 Livebook の起動時のみ（livebook ディレクトリー配下にいるときのみ）特定バージョンを使いたい場合は以下のコマンドを実行してください

```bash
asdf local elixir 1.15.4-otp-26
asdf local erlang 26.0.2
```

依存モジュール（実行に必要なものだけ）を取得します

```bash
mix deps.get --only prod
```

Livebook を起動します

```bash
MIX_ENV=prod mix phx.server
```

しばらくすると Livebook の URL が表示されるので、ブラウザで開きます

```bash
...
[Livebook] Application running at http://localhost:8080/?token=xxxx
```

![スクリーンショット 2023-07-26 13.43.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/097060ca-3509-bcd6-b642-15439571dae6.png)

[Livebook のホーム画面からノートブックを作成してみましょう](#ノートブックの作成)

パスワード認証にしたい場合は以下のようにして起動します

```bash
LIVEBOOK_PASSWORD="xxxxxxxxxxxx" MIX_ENV=prod mix phx.server
```

### livebook コマンドのインストール

コマンドラインから実行できる `livebook` コマンドをインストールすることもできます

```bash
mix do local.rebar --force, local.hex --force
mix escript.install hex livebook
```

asdf を使っている場合、以下のコマンドを実行し、 livebook コマンドにパスを通します

```bash
asdf reshim elixir
```

以下のコマンドを実行すると、ローカルマシン上で Livebook が起動します

```bash
livebook server
```

実行結果に表示される URL をブラウザで開いてください

```bash
[Livebook] Application running at http://localhost:8080/?token=xxxx
```

## ノートブックの作成

Livebook でコードを実行するため、新しいノートブックを作成します

ホーム画面右上の "+ New notebook" をクリックします

![スクリーンショット 2023-07-26 13.43.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/097060ca-3509-bcd6-b642-15439571dae6.png)

以下のような画面が開きます

![スクリーンショット 2023-07-26 13.49.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/5a1f8a8f-c25c-201c-527d-1f20e4aa30be.png)

## コードの実行

黒い枠（セル）の中にコードを入力し、セルの右上 "Evaluate" をクリックする、もしくはセル内で Shift + Enter を押すとコードが実行され、結果が表示されます

![cell.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/400875b9-86b0-311a-4ad1-6d64a716799b.gif)

## セルの追加

セルの下辺りにマウスカーソルを持っていくと、セル追加用のボタンが表示されます

"+ Elixir" のボタンをクリックすると、新しいセルが下に追加されます

![add.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/26406f0e-ca37-be5c-aad3-dfdf551ffb7c.gif)

セルの外にいる状態（セルの外をどこかクリックした状態）で "n" キーを押しても同じようにセルが追加されます

セルの追加、実行を繰り返すことで、次々とコードを実行することができます

## はじめた後に

ホーム画面からチュートリアルを実行できます

![スクリーンショット 2023-07-26 13.43.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/22c71c94-c063-870a-f30c-ad0f89ac6bb6.png)

全て英語になっていますが、一通りの操作を学べます

![スクリーンショット 2023-07-26 14.13.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/e16a6aa2-1c1b-2443-93e1-060b94ebacbc.png)

Qiita にもたくさんの Livebook に関する記事があります

興味あるものを実行してみましょう

https://qiita.com/tags/livebook

## 注意点

### 依存ライブラリ

Livebook 上でモジュールをインストールしていると、エラーが発生することがあります

例えば [Image](https://github.com/elixir-image/image) モジュールには libvips が必要なので、存在しないとエラーになります

そのような場合、環境に応じて必要なライブラリをインストールします

例えば libvips は以下を参考にインストールできます

https://www.libvips.org/install.html

Livebook をコンテナで実行している場合、 Dockerfile に必要なライブラリのインストールを追加しましょう

### Elixir と Erlang のバージョン

Livebook の GitHub リポジトリーに実行環境のバージョン情報が掲載されています

https://github.com/livebook-dev/livebook/blob/v0.10.0/mix.exs

```elixir
...
@elixir_requirement "~> 1.14.2 or ~> 1.15-dev"
...
```

https://github.com/livebook-dev/livebook/blob/v0.10.0/versions

```
elixir="1.15.2"
otp="26.0.2"
...
```

2023年7月時点では Elixir 1.14.2 以上、 1.15 以下で動作します

Erlang は 26 で動くことが確認できています

asdf で Elixir　と Erlang をインストールしている場合、 Elixir バージョンの "1.15.4-otp-26" の末尾の数字が Erlang バージョンの "26.0.2" の先頭の数字と一致していなければなりません

### ブラウザのセキュリティ

デスクトップアプリ、コンテナ、ローカルビルドのように、ローカル（URL が "http://localhost" から始まっている場合）で実行している場合、 URL の先頭（プロトコル）が "http" になっています

通常、 Web サイトにアクセスする際は "https" を使って安全な暗号化通信を使っていますが、 "http" だとブラウザが危険だと判断し、一部の機能に制限をかけます

- カメラの起動、映像取得
- マイクからの録音
- クリップボードへのコピー

このような場合、 [ngrok](https://ngrok.com/) を使って localhost へ外部から https 通信できるようにトンネリングします

#### ngrok の使い方

ngrok にサインアップします

https://ngrok.com/

ngrok の認証トークンページから認証トークンを発行します

https://dashboard.ngrok.com/tunnels/authtokens

以下のページを参考に ngrok の CLI をインストールします

https://ngrok.com/download

- macOS の場合

  ```bash
  brew install ngrok/ngrok/ngrok
  ```

- Windows の場合

  ```powershell
  choco install ngrok
  ```

ngrok の認証トークンを設定します

```bash
ngrok config add-authtoken <認証トークン>
```

Livebook が起動しているポート番号を指定し、 ngrok によるトンネリングを開始します

```bash
ngrok http 8080
``` 

実行すると、以下のように表示されます

```bash
ngrok by @inconshreveable                                                                     (Ctrl+C to quit)

Session Status                online
Account                       xxx@xxx.xxx (Plan: Free)
Update                        update available (version 2.3.41, Ctrl-U to update)
Version                       2.3.35
Region                        United States (us)
Web Interface                 http://127.0.0.1:4040
Forwarding                    http://xxxx-xxx-xxx-xxx-xxx.ngrok-free.app -> http://localhost:8080
Forwarding                    https://xxxx-xxx-xxx-xxx-xxx.ngrok-free.app -> http://localhost:8080

Connections                   ttl     opn     rt1     rt5     p50     p90
                              0       0       0.00    0.00    0.00    0.00
```

`https://` から始まっている URL にアクセスすると、 Livebook が開きます

## まとめ

様々な方法で Livebook を利用することができます

外部に公開したい、 GPU を使って高速に処理したい、特殊なライブラリを使いたい、など様々な要件に応じて使い分けましょう