Livebook v0.9に向けて、v0.8の機能をおさらいする

この記事は、2023/3/28開催「LiveViewJP#15：先端AI・ML実装入門（ChatGPT、whisper、お絵描きAI）」勉強会のLTを記事にしたものです。

2023/3/23にLivebook v0.9がリリースされたので、v0.8の内容をおさらいしようという記事です。

## セットアップ

後で出てくるスマートセル追加時にライブラリが追加されるので、
req以外は最初に追加しなくて大丈夫です。

```elixir
Mix.install(
  [
    {:kino, "~> 0.8"},
    {:axon, "~> 0.2"},
    {:req, "~> 0.3.6"},
    {:nx, "~> 0.5.0"},
    {:kino_bumblebee, "~> 0.2.1"},
    {:exla, "~> 0.5.1"},
    {:explorer, "~> 0.3"},
    {:kino_slack, "~> 0.1.1"},
    {:kino_maplibre, "~> 0.1.7"},
    {:kino_vega_lite, "~> 0.1.7"}
  ],
  config: [nx: [default_backend: EXLA.Backend]]
)
```

## Livebook v0.8 was released on January 12, 2023

### 依存関係の無いセルの再評価が不要になった

cell4を計算後にcell3の値を変更すると、過去verだと再計算が必要だったが
ver0.8から依存関係がない値の場合は再計算が必要なくなったそう。

```elixir
# cell 1
x = 1
```

```elixir
# cell 2
y = 1
```

```elixir
# cell 3
z = 3
```

```elixir
# cell 4
x + y
```

### doctestが自動実行されるようになった

```elixir
defmodule Fib do
  @doc ~S"""
    iex> Fib.fib(0)
    0

    iex> Fib.fib(1)
    1

    iex> Fib.fib(2)
    1

    iex> Fib.fib(3)
    2
  """
  def fib(0), do: 0
  def fib(1), do: 1
  def fib(n), do: fib(n - 1) + fib(n - 2)
end
```

`4 doctests, 0 failures` というようにテスト結果が表示されるようになりました。

### ホバーで数式のドキュメント展開に対応

```elixir
# v0.8以前に関数にカーソルを合わせるとドキュメント展開するよう対応されていました
Enum.map()
```

```elixir
# v0.8で数式もホバーでドキュメント展開されるようになりました
Axon.Layers.layer_norm()
```

![スクリーンショット 2023-05-01 23.13.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109744/7dfd899d-e2fd-5804-d5a8-8b3150b3f4c4.png)

### 画像のインプットに対応

```elixir
input = Kino.Input.image("image")
```

![スクリーンショット 2023-05-01 23.17.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109744/aa928e64-1453-8706-cf94-1d7ed3c6ef24.png)

### ネストされているデータをツリー状に表示する

```elixir
Req.get!("https://api.github.com/repos/elixir-lang/elixir")
|> Kino.Tree.new()
```

![スクリーンショット 2023-05-01 23.21.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109744/396aa050-a454-7508-6a96-0c9f9defc43e.png)

↑これが、こう↓

![スクリーンショット 2023-05-01 23.21.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109744/f620ef45-240d-2dca-d076-c22d414b1370.png)

### ニューラルネットワークのスマートセル

新しいSmart cell を使用すると、数回クリックするだけで、さまざまな機械学習モデルを Livebook で直接実行できます。

![スクリーンショット 2023-05-01 23.54.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109744/dd10e786-ff5e-109c-93c5-39ae49cc610d.png)

### Slackへメッセージ送信

![スクリーンショット 2023-05-01 23.25.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109744/b200e49c-638c-18d1-452a-e6dc367ff50d.png)

### Map Smart cellの向上

Map Smart cellがさらに良くなりました。
データを緯度と経度として受け入れるだけでなく、国、州、都市、郡、通りの名前も使用できるようになりました。

![スクリーンショット 2023-05-01 23.55.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109744/8e80f671-8004-7bbb-9804-1564533c1bf8.png)

![スクリーンショット 2023-05-01 23.56.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109744/837c6115-80d4-5528-6a2b-89147c39aabf.png)

### グラフをカスタマイズするオプションが増えた

bins設定で数値を一連のbinに離散化できるようになりました。これは、たとえばヒストグラムの作成に役立つそうです。

```elixir
# グラフを表示するために、サンプルとしてExplorerのデータセットを使用する
iris = Explorer.Datasets.iris()
```

![スクリーンショット 2023-05-02 0.05.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109744/75b7256d-c52a-e5d8-3b5f-4958cd11893a.png)

## さいごに：Livebookのリリースノートわかりやすいよ

本記事はThe Livebook Blogの「What's new in Livebook 0.8」をかいつまんだものです。

https://news.livebook.dev/whats-new-in-livebook-0.8-4gQiEE

動画が貼ってあって視覚的にさらにわかり易いので、そちらをぜひ見てみてください:blush: