Deno 1.37 でリリースされた Jupyter Notebook の Deno カーネルを使う

| 3 min read
Author: masahiro-kondo masahiro-kondoの画像

はじめに

#

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 が使えるようになっています。

JupyterLab

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 kernel

Deno カーネルを使う

#

それでは、Deno カーネルを使ってみましょう。上記の JupyterLab の画面で、Notebook セクションに追加された Deno カーネルのアイコンをクリックすると Deno が書ける Jupyter Notebook が開きます。

Information

以下のサンプルは1.37リリースブログのサンプルの写経がほとんどです。

まずは、コンソールへの出力や Deno の top level await の利用です。問題ないようです。

hello world

Deno の標準 API はインポートなしで使えます。fetch API を使用する例です。

Deno API

NPM の d3 パッケージを使ったパイチャートの描画[1]です。NPM パッケージのインポートも普通にできます。

D3 Chart

Information

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");

接続文字列はプロジェクトページからコピーできます。

connection string

以下の例では、上記の記事で作成していた books データベースに接続して、nodejs-polars[2] を使用して、テーブルを表示する例です。

Notebook で Deno KV にアクセスするには、環境変数 DENO_KV_ACCESS_TOKEN に Deno Deploy で発行したアクセストークンが必要になります。Deno.env.set でアクセストークンを指定して、Deno.openKv で Deno KV のデータベースに接続しました。あとは、データを取り出して、テーブルに出力するだけです。

Deno kv

最後に

#

Deno を Jupyter Notebook で使うのなかなか楽しいです。


  1. 参照 - https://app.noteable.io/f/0c265ea3-fd8b-43e5-9bcc-2e862a1acb00/Using-D3-with-Canvas-in-Deno-Notebooks.ipynb ↩︎

  2. Rust で書かれた Pandas ライクなデータフレームライブラリ Polars を Node.js で使えるようにしたパッケージのようです。 ↩︎

豆蔵デベロッパーサイト - 先週のアクセスランキング
  1. 基本から理解するJWTとJWT認証の仕組み(2022-12-08)
  2. 直感が理性に大反抗!「モンティ・ホール問題」(2022-07-04)
  3. Nuxt3入門(第8回) - Nuxt3のuseStateでコンポーネント間で状態を共有する(2022-10-28)
  4. Nuxt3入門(第4回) - Nuxtのルーティングを理解する(2022-10-09)
  5. OpenAIのAssistants API(ベータ版)を試す(2023-11-08)
  6. RAGを利用して国会会議録に基づいて質問に回答するLLMを作る方法(2023-09-27)
  7. GitHub Actions - 構成変数(環境変数)が外部設定できるようになったので用途を整理する(2023-01-16)
  8. Nuxt3入門(第1回) - Nuxtがサポートするレンダリングモードを理解する(2022-09-25)
  9. Pytestを使ってみる(その2:VSCode拡張機能編)(2023-03-05)
  10. WSL2上にUbuntu-22.04LTSを導入し、Dockerをインストールしようとしたら、いろいろとハマった件(2023-09-09)