見出し画像

【PyScript】ブラウザでpythonを扱う

世間ではAI関連の記事が多いですが、その中心的な言語pythonをブラウザで扱えるようにするPyScriptはご存知でしょうか?


基本的なコードを書いてみる

ブラウザでpythonを動かすために必要なコードはこれだけです。
スタイルシートとJavaScriptを読み込むだけで、pythonが動作します。

<link rel="stylesheet" href="https://pyscript.net/latest/pyscript.css" />
<script defer src="https://pyscript.net/latest/pyscript.js"></script>


次のコードは画面にsin波を書くコードです。

sin波出力

構成としては、

  • htmlのヘッダー(cssとJavaScriptの読み込み)

  • 実際に描画される場所のhtml(sine_plot)

  • 外部ライブラリの読み込み(py-config)

  • 実際のpythonコード(py-script)

という単純な流れです。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Sine Wave Plot</title>
    <link rel="stylesheet" href="https://pyscript.net/latest/pyscript.css" />
    <script defer src="https://pyscript.net/latest/pyscript.js"></script>
</head>
<body>
    <!-- HTML描画部分 -->
    <div id="sine_plot"></div>

    <!-- ライブラリの読み込み -->
    <py-config>
        packages = ["numpy", "matplotlib"]
    </py-config>
    
    <!-- Python Script -->
    <py-script>
        import numpy as np
        import matplotlib.pyplot as plt

        x = np.linspace(0, 2 * np.pi, 100)
        y = np.sin(x)

        fig, ax = plt.subplots()
        ax.plot(x, y)
        plt.title('Sine Wave')

        pyscript.write('sine_plot', fig)
    </py-script>
</body>
</html>

大切なのはライブラリの読み込みです。
元々はheadの部分に書く仕様だったのですが、最新版では<py-config>で書くことになっています。

<py-config>
     packages = ["numpy", "matplotlib"]
</py-config>

このように、カンマ区切りでライブラリ名を箇条書きをします。その後、通常のpythonのようにimport文を書きます。

<py-script>
        import numpy as np
        import matplotlib.pyplot as plt
</py-script>


動作する外部ライブラリ

動作する外部ライブラリはまだ多くありません。時間が解決してくれることを待ちましょう。


まとめ

テキストエディタで書かれたhtmlだけで気軽にpythonが動作し、ブラウザで表示できる環境は素晴らしく簡単です。
最初の読み込みに時間がかかるところは、まだまだ改善の余地がありますが一度ぜひ遊んでみてください。

いいなと思ったら応援しよう!