Skip to main content

Deno Magic Command

概要

Jypyter(notebook/lab)またはGoogle ColabのコードセルにDeno(JavaScript/TypeScript)を書いて実行するためのマジックコマンドです。

使い方

マジックコマンドの追加

コードセルに以下のコードを貼り付けて実行しマジックコマンドを登録してください。カーネルやランタイムを再起動する度に再実行する必要があります。

%pip install denomagic
import denomagic

# denoのインストール(Google Colab用、他の環境では無視されます
denomagic.install_deno_colab()
# マジックコマンドの登録
denomagic.register_deno_magics()

マジックコマンドの使い方

コードセルの冒頭に以下のようにマジックコマンドを記述してください。実行するとDenoによってコードセル内のJavaScript/TypeScriptコードが実行されます。

%%run_deno

console.log("Hello, world!");

また、コードセルのJavaScript/TypeScriptコードをDenoでトランスパイルしてiframe内で実行するマジックコマンドも用意しています。 以下は、ブラウザ用のライブラリであるp5.jsを使った例です。

%%run_deno_iframe 830 430
import "https://cdn.jsdelivr.net/npm/p5@1.9.4/lib/p5.js";

const sketch = (p: any) => {
  let x = 0;
  let y = 0;
  let speed = 2;
  let color: [number, number, number] = [0, 0, 0];

  p.setup = () => {
    p.createCanvas(800, 400);
    x = p.width / 2;
    y = p.height / 2;
  };

  p.draw = () => {
    p.background(220);
    p.fill(color);
    p.ellipse(x, y, 50, 50);
    if (p.keyIsDown(p.LEFT_ARROW) === true) {
      x -= speed;
    }

    if (p.keyIsDown(p.RIGHT_ARROW) === true) {
      x += speed;
    }

    if (p.keyIsDown(p.UP_ARROW) === true) {
      y -= speed;
    }

    if (p.keyIsDown(p.DOWN_ARROW) === true) {
      y += speed;
    }
  };

  p.mousePressed = () => {
    color = [p.random(255), p.random(255), p.random(255)];
  };
};

new p5(sketch);

マジックコマンド

%%run_deno

%%run_deno [userval]

コードセル内のJavaScript/TypeScriptをDenoで実行します。

  • userval: Jupyterのユーザー変数をDenoで利用するかどうかを設定します。デフォルトはFalseです。

usevalをTrueにすると、Jupyterのユーザー変数をglobalThis.jupyterを通じて利用できるようになり、セルを超えた変数のやりとりが出来るようになります。
内部ではJupyterとDenoの間をJSONの一時ファイルでやりとりしているため、JSONに変換できないオブジェクトは利用できません。
利用した場合の動作は未定義です。

Jupyterのコードセル内で実行されている場合、globalThis.isJupyterCellが定義されているので、これがundefinedではないかどうかを確認することでJupyterのコードセルからの実行なのかどうかを判定できます。

Jupyterユーザー変数を利用した状態でコードセルの途中で終了させたい場合はDeno.exitの代わりにjupyterExit()を利用してください。 Deno.exitで終了するとJupyterのユーザー変数は更新されません。

%%run_deno_iframe

コードセル内のJavaScript/TypeScriptをDenoでトランスパイルしてiframe内で実行します。

%%run_deno_iframe [width] [height] [srcs]
  • width: iframeの幅を指定します。デフォルトは500です。
  • height: iframeの高さを指定します。デフォルトは500です。
  • srcs: 外部JavaScriptのURLを指定します。複数指定する場合はスペースで区切ります。

%%run_deno_bundle_iframe

コードセル内のJavaScript/TypeScriptをimportしたコードも含めてトランスパイル及びバンドルしてiframe内で実行します。

引数は%%run_deno_iframeと同じです。

%%view_deno_iframe

コードセル内のJavaScript/TypeScriptをDenoでトランスパイルした後生成したHTMLを出力します。

引数は%%run_deno_iframeと同じです。

%%view_deno_bundle_iframe

コードセル内のJavaScript/TypeScriptをimportしたコードも含めてトランスパイル及びバンドルした後生成したHTMLを出力します。

引数は%%run_deno_iframeと同じです。

Release files for denomagic 1.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for denomagic 1.1.0
File Size Uploaded
denomagic-1.1.0.tar.gz 6.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for denomagic 1.1.0
File Interpreter ABI Platform
denomagic-1.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 12.2 kB

Release files / denomagic-1.1.0.tar.gz

Download URL denomagic-1.1.0.tar.gz
Size 6.0 kB
Tags Source
SHA-256 checksum
How to use checksums
a6bdfb274a40143cf404898da22ffc97a57b4a260b88234d621924a9dde6169d
BLAKE2b-256 checksum
How to use checksums
9b2baa0e85f969aee87b92b8609e517ff0b9c8084ab73dc2e2c40aa8d896f03d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.3

Release files / denomagic-1.1.0-py3-none-any.whl

Download URL denomagic-1.1.0-py3-none-any.whl
Size 6.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8ee84fdf4fcb8a96b56d4da022725dcb297545ae6fc19ea773306d2b342aeb79
BLAKE2b-256 checksum
How to use checksums
d40c2edab808c4ba4d83e1d51a883da775d939703819244be3fbbcd47e9312ad
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.3

Release history Release notifications | RSS feed

This release

1.1.0 This release

2 release files

1.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page