注目イベント!
アドベントカレンダー2024開催します(12/1~12/25)!
一年を締めくくる特別なイベント、アドベントカレンダーを今年も開催します!
初心者からベテランまで楽しめる内容で、毎日新しい技術トピックをお届けします。
詳細はこちらから!
event banner

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 で使えるようにしたパッケージのようです。 ↩︎

豆蔵では共に高め合う仲間を募集しています!

recruit

具体的な採用情報はこちらからご覧いただけます。