Deno 1.37 でリリースされた Jupyter Notebook の Deno カーネルを使う
はじめに
#Deno 1.37 がリリースされました。このリリースの目玉は Jupyter Notebook の Deno カーネルでしょう。
Deno 1.37: Modern JavaScript in Jupyter Notebooks
Jupyter Notebook で Deno をインタラクティブに利用することができます。
準備
#JupyterLab を事前にインストールします。筆者の環境(macOS Ventura)では Homebrew で Python 3.11 が導入されていました。
$ python3 --version
Python 3.11.5
pip3 コマンドで JupyterLab をインストールします。
pip3 install jupyterlab
Jupyterlab をビルドします。
jupyter lab build
JupyterLab を起動します。
jupyter lab
localhost:8888/lab
にアクセスすると Jupyter Notebook が使えるようになっています。
Deno カーネルのインストールと起動
#まず Deno を 1.37 に更新します。
deno upgrade
Deno カーネルをインストールします。 --unstable フラグが必要です。
$ deno jupyter --unstable --install
[InstallKernelSpec] Installed kernelspec deno in /Users/kondoh/Library/Jupyter/kernels/deno
✅ Deno kernelspec installed successfully.
この状態で、jupyter lab
で Jupyter Notebook を起動すると、Deno カーネルが有効化されているのがわかります。
Deno カーネルを使う
#それでは、Deno カーネルを使ってみましょう。上記の JupyterLab の画面で、Notebook セクションに追加された Deno カーネルのアイコンをクリックすると Deno が書ける Jupyter Notebook が開きます。
以下のサンプルは1.37リリースブログのサンプルの写経がほとんどです。
まずは、コンソールへの出力や Deno の top level await の利用です。問題ないようです。
Deno の標準 API はインポートなしで使えます。fetch API を使用する例です。
NPM の d3 パッケージを使ったパイチャートの描画[1]です。NPM パッケージのインポートも普通にできます。
NPM パッケージをインストールするので初回実行には時間がかかります。JupyterLab を起動しているコンソールでは、パッケージインストール時にログが出ていました。
Warning Implicitly using latest version (v0.1.1) for https://deno.land/x/display/mod.ts
Warning Implicitly using latest version (0.5.4) for https://deno.land/x/skia_canvas/mod.ts
以前の、記事「Deno のビルトイン key-value データベース Deno KV が登場」で紹介した Deno KV ですが、Deno 1.36.4 リリースでリモートのデータベースに https で接続できるようになりました。以下のようにデータベースの UUID を使って openKv API を使用します。
await Deno.openKv("https://api.deno.com/databases/<uuid>/connect");
接続文字列はプロジェクトページからコピーできます。
以下の例では、上記の記事で作成していた books データベースに接続して、nodejs-polars[2] を使用して、テーブルを表示する例です。
Notebook で Deno KV にアクセスするには、環境変数 DENO_KV_ACCESS_TOKEN
に Deno Deploy で発行したアクセストークンが必要になります。Deno.env.set
でアクセストークンを指定して、Deno.openKv
で Deno KV のデータベースに接続しました。あとは、データを取り出して、テーブルに出力するだけです。
最後に
#Deno を Jupyter Notebook で使うのなかなか楽しいです。
参照 - https://app.noteable.io/f/0c265ea3-fd8b-43e5-9bcc-2e862a1acb00/Using-D3-with-Canvas-in-Deno-Notebooks.ipynb ↩︎
Rust で書かれた Pandas ライクなデータフレームライブラリ Polars を Node.js で使えるようにしたパッケージのようです。 ↩︎