ブラウザでPythonを実行するオープンソースプラットフォーム PyScript
(pyscript.net)- PyScriptは、ブラウザでPythonコードを実行できるようにし、Webページ自体をPython実行環境にできるオープンソースプラットフォーム
- Webの普遍性とPythonエコシステムを組み合わせ、ブラウザがある場所ならどこでもPythonを実行できる点を打ち出している
- 複雑なインストールなしでアプリがブラウザで動作するため、Pythonの学びやすい文法でWebベースのアプリを作れる
- コードがユーザーのブラウザで実行されるため高価なインフラ負担を減らせ、成果物はWebのURLで共有できる
- 初心者と上級ユーザーの両方を対象とし、使いやすさ・表現力・拡張性・共有性・普遍性・安全性・強力さを中核的な特性として掲げている
ブラウザ内のPython実行環境
- PyScriptは、ブラウザでPythonを実行するためのオープンソースプラットフォーム
- HTML内で
script type="py"を使ってPythonコードを実行する形を例として挙げられる- 例のコードでは、ブラウザ文書内で
print('You can!')を実行する
- 例のコードでは、ブラウザ文書内で
- WebとPythonという2つの技術エコシステムを結びつけることが、PyScriptの中核的な方向性
- Webは世界的に普遍的なコンピューティングプラットフォーム
- Pythonは世界で人気のあるプログラミング言語のひとつ
- 結果として、ブラウザがある場所ならどこでもPythonを実行できるというメッセージを前面に出している
始め方とプラットフォームの特性
- PyScript.comで無料で簡単に試せる
- ドキュメントは初心者と上級ユーザーの両方を対象としている
- コミュニティ資料で、PyScriptで何を作れるか確認できる
- Discordを通じて、ほかのPyScriptユーザーとつながれる
- PyScriptが掲げる特性は次のとおり
- Easy: 複雑なインストールなしでアプリがブラウザで動作する
- Expressive: Pythonのように強力で人気があり、学びやすい言語でアプリを作れる
- Scalable: コードがユーザーのブラウザで実行されるため、高価なインフラが不要
- Shareable: アプリケーションをWebのURLで共有できる
- Universal: ブラウザが動作する場所なら、コードも実行される
- Secure: ブラウザという実証済みのコンピューティングプラットフォーム上で動作する
- Powerful: WebとPythonの長所をあわせて活用できる
1件のコメント
Hacker News のコメント
使用例が気になるなら、Dallas 犯罪統計 Panel ダッシュボードをここで見られる: https://crimede-coder.com/graphs/Dallas_Dashboard
起動には1分ほどかかり、複数の Python ライブラリのインストールと外部の 5MB データセットの読み込みが含まれる。いったん表示されるとかなり反応がよく、iPhone でもうまく動作する
一緒に仕事をしている多くの業者は Tableau の無料版を使い、データを手動で更新している。無料版ではデータストアへの直接接続が許可されていないため。これは無料の代替手段で、GitHub Actions で圧縮 CSV ファイルを作り、環境側で取り込むようにしている
iPad の Safari 内で Panel アプリを動かせるだけの Python をブートストラップするには、8秒よりずっと長くかかると思っていた。Shift リロードは約6秒かかった
データ分析のために Python が必要で、サーバー費用のためにサーバー側で動かしたくない、という問題なのかもしれないとも思う
ホームページを見ても混乱したし、ドキュメントを読んだ後でも、これが正確に何なのかよく分からない
直接少し触ってみると、Web サイトに入れると “Hello World” を表示できた。
type="py"のスクリプトを探し、Pyodide 経由で Python から JavaScript へトランスパイルするスクリプトのように見えるただ、ホームページのデモは REPL で、タイトルは「プラットフォーム」となっているので、まだ混乱している
jsパッケージは実際のwindowオブジェクトにマッピングされ、何らかの Proxy オブジェクト経由で DOM メソッドを呼び出す API なのだと思うブラウザコンソールで Python を実行できることを期待していた
これは Pyodide とどう違うのか? https://pyodide.org/en/stable/
PyScript は Pyodide も MicroPython も使うことができ、MicroPython は実際かなり小さい。ランタイムの上で、PyScript は単に Python コードを実行するだけにとどまらず、Web プログラミングに Python を実際に使うための便利機能や使い勝手の改善を提供する
最近 PyScript で Python CLI アプリをブラウザで実行する方向を深く掘ってみた
終始ハックっぽく感じたし、特に依存関係が入るとさらにそうだった。Pydantic 2.x を使えず、回避用のラッパークラスを作る必要があった。すべてのロジックを Python ファイルに入れようとしたが、欠けている機能があったため一部は JavaScript に入れざるを得なかった
Python コードの上に簡単な UI とカスタム UI ロジックを載せたい場合にはよいかもしれないが、Streamlit や Gradio の方が合っているかもしれない
GitHub リポジトリ: https://github.com/data-catering/data-contract-playground
Web サイト: https://data-catering.github.io/data-contract-playground/
実際のユースケースを見つけにくい。機械学習モデルを動かしたいなら ONNX でビルドできる: https://onnxruntime.ai/docs/tutorials/web/
JS/TS の代わりにブラウザベースのアプリを作るのに、これが効率的なのか気になる
Firefox でスクリプトを書いてブラウザを操作できるとよさそう。GET のタイミング、すべての GET の後、JavaScript の評価前後のように、望むどの段階でも評価を行う形
こういうことができて、Python のすべての機能にもホストからアクセスできるツールがあるのか気になる
これは Brython と同じコンセプトでは? BRowser pYTHON: https://brython.info/
https://github.com/brython-dev/brython
https://yasoob.me/2019/05/22/running-python-in-the-browser/
少し宣伝すると、PyScript を使って、もう少し 意見の強いリアクティブなフロントエンドフレームワークを作った。Vue.js から少し着想を得ている: https://puepy.dev
以前これで Markdown レンダラーを作った。とても単純なソースコードはここで見られる: https://pyscript.com/@stuartmaxwell/markdown-previewer-v2/la...
アプリはモバイルではあまりうまく動かないかもしれないが、デスクトップでは問題ないはず。Django で書いていたブログアプリケーションでこのコードを使った
どんな WASM 設定でも、結局 CORS のせいで多くの API を呼び出したりサイトをスクレイピングしたりできないという大きな制約が非常に厄介
もちろん CORS は XSS のようなものを防ぐうえで重要だが、CORS を取り除くプロキシを立てる以外の方法があるとよい。そうすると、住宅用 IP ではなく、ブロックされる可能性がより高い IP が残ることになる