P5 Magic Command
概要
Jypyter(notebook/lab)・VSCodeまたはGoogle Colabでp5.js/q5.js/p5play.jsを使ったコードセルのPythonコードをPyScriptを使ってiframe(ブラウザ)上で実行するマジックコマンドです。
使い方
マジックコマンドの追加
コードセルに以下のコードを貼り付けて実行しマジックコマンドを登録してください。カーネルやランタイムを再起動する度に再実行する必要があります。
%pip install -q -U pysmagic p5magic
from p5magic import register_p5magic
register_p5magic()
マジックコマンドの使い方
コードセルの冒頭に以下のようにマジックコマンドを記述してください。実行するとアウトプットにiframeが表示されてその中でコードセルのコードがPyScriptで実行されます。グローバルモード及びインスタンスモードの両方に対応しています。
以下は、q5.jsライブラリを使って描画した赤い円を矢印キーで動かす例です。
グローバルモード
%%runp5
x = 100
y = 100
def setup():
p5.createCanvas(300, 300)
def draw():
global x, y
background(128)
fill(255, 0, 0)
ellipse(x, y, 50, 50)
if keyIsDown(LEFT_ARROW):
x -= 1
if keyIsDown(RIGHT_ARROW):
x += 1
if keyIsDown(UP_ARROW):
y -= 1
if keyIsDown(DOWN_ARROW):
y += 1
インスタンスモード
%%runp5 500 500 white '{}' False
import pyscript
import js
def sketch(p5):
x = 100
y = 100
def setup():
p5.createCanvas(300, 300)
def draw():
nonlocal x, y
p5.background(128)
p5.fill(255, 0, 0)
p5.ellipse(x, y, 50, 50)
if p5.keyIsDown(p5.LEFT_ARROW):
x -= 1
if p5.keyIsDown(p5.RIGHT_ARROW):
x += 1
if p5.keyIsDown(p5.UP_ARROW):
y -= 1
if p5.keyIsDown(p5.DOWN_ARROW):
y += 1
p5.setup = setup
p5.draw = draw
js.p5start(sketch)
グローバル変数
PyScriptから以下の変数にアクセスできます。
- 別のセルで設定したグローバル変数(_で始まる変数名やJSONに変換できないものは除く)
- マジックコマンドの引数py_valで設定した変数
- width: iframeの幅(マジックコマンドの引数で指定した幅)
- height: iframeの高さ(マジックコマンドの引数で指定した高さ)
この変数はjs.pysオブジェクトを介してアクセスできます。 変数名が衝突した場合は上記リストの順に上書きされて適用されます。
マジックコマンド
%%runp5
セル内のp5play.jsライブラリを使ったPythonコードをPyScriptを用いてiframe内で実行するマジックコマンド
%%runp5 [width] [height] [background] [py_val] [p5_global] [p5_type] [p5play_use] [py_type] [py_conf] [js_src] [py_ver]
- width: iframeの幅を指定します。デフォルトは500です。
- height: iframeの高さを指定します。デフォルトは500です。
- background: iframeの背景色を指定します。デフォルトはwhiteです。
- py_val: PyScriptの変数を''で囲んだJSON形式で指定します。デフォルトは'{}'です。
- p5_global: p5playをグローバルモードと同様のコーディングができるようにするかどうかを指定します。デフォルトはTrueです。
- p5_type: 実行するp5.jsの種類。q5またはp5を指定します。q5は軽量p5互換ライブラリのq5.js、p5はp5.jsを使います。デフォルトはq5です。
- p5play_use: p5play.jsを使うかどうかを指定します。デフォルトはFalseです。
- py_type: 実行するPythonの種類。pyまたはmpyを指定します。mpyはMicroPyton、pyはCPython互換のPyodideで実行します。デフォルトはmpyです。グローバルモードのときはmpy固定です。
- py_conf: PyScriptの設定を''で囲んだJSON形式で指定します。デフォルトは'{}'です。
- js_src: 外部JavaScriptのURLを''で囲んだ文字列のJSON配列形式で指定します。デフォルトは'[]'です。
- py_ver: PyScriptのバージョンを指定します。
%%genp5
セル内のp5play.jsライブラリを使ったPythonコードからブラウザで実行可能な単一HTMLを生成するマジックコマンド。オプションはrunp5と同じです。
%%genp5 [width] [height] [background] [p5_global] [p5_type] [p5play_use] [py_type] [py_conf] [js_src] [version]
ライセンス
p5play.jsはAGPL-v3ライセンス・商用ライセンスのデュアルライセンスとなっていますので使用の際は確認してください。
Release files for p5magic 2.5.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| p5magic-2.5.0.tar.gz | 5.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| p5magic-2.5.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 11.2 kB
Release files / p5magic-2.5.0.tar.gz
| Download URL | p5magic-2.5.0.tar.gz |
|---|---|
| Size | 5.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
986ad42f843903be70adc5b688585bf4cdd2d631066db92efdf516df0885046b
|
|
BLAKE2b-256 checksum How to use checksums |
87257a152d177860b0cf685ae7591852766a04296cc06f47af0fbd45bb9459c3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.13.0
|
Release files / p5magic-2.5.0-py3-none-any.whl
| Download URL | p5magic-2.5.0-py3-none-any.whl |
|---|---|
| Size | 5.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
07d19fe61513991ec0829999f2d4e1dac5cd24b66772bea8aa98108575c3d69a
|
|
BLAKE2b-256 checksum How to use checksums |
7a3c3af18ad0358baf796532b8f55f0b4b37183f7e83f0d7b0f7c7a3a981f78a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.13.0
|