今日は表題のものを紹介します。
背景
onlineでpythonが動く環境って結構ありますよね。私が良く使うのだと以下のやつです。
でも大抵のサービスはwebアプリになっているだけで、実際のpythonコードはサーバーで動いているわけです。自分で動かしてるサーバーでそういうアプリを入れるとなるとパフォーマンスやらセキュリティやら気になってしまいますよね。
ではクライアント(ブラウザ上)で動かせないか?と考えたのがpyodideです。
pyodide
これ実体はwasmなのです。以下はデモです。
例えば以下のようなコードを貼り付けて実行してみてください。
import time
s = time.monotonic()
while s + 30 > time.monotonic():
pass
ちゃんとCPU使ってるでしょ?気になったら本家にGo
pyscript
これを使ってHTMLにpythonを埋め込めるのがpyscriptです。
から引用したサンプルコードがこちら。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Sine Wave</title> <link rel="stylesheet" href="https://pyscript.net/alpha/pyscript.css" /> <script defer src="https://pyscript.net/alpha/pyscript.js"></script> </head> <body> <py-env> - matplotlib - numpy </py-env> <py-script> import matplotlib.pyplot as plt import numpy as np time = np.linspace(0, 2 * np.pi, 100) plt.plot(time, np.sin(time)) plt </py-script> </body> </html>
これをjsfiddleなどのページに貼り付ければちゃんとpythonコードが動いてグラフが表示されてしまうのです。
気なった方は本家にGo