- PyScriptは、WebAssemblyを使用してPythonをHTMLに埋め込むことを可能にし、NumPyやPandasなどの強力なライブラリをサポートしています。
- BrythonはPythonコードをJavaScriptに変換するため、DOMやSVG要素を軽量に操作するのに最適です。
- WebAssemblyは、コンパイルされた言語をネイティブに近いパフォーマンスでウェブ上で実行できるようにする重要な技術です。
- バックエンドのロジックを処理するための従来型のサーバーベースの代替手段としては、FlaskやDjangoなどがある。
Pythonのパワーをブラウザ環境にもたらすことは、多くの開発者にとって長年の夢でした。つい最近まで、ウェブ上で何かを動かしたい場合、JavaScriptが圧倒的な王者であり、外部サーバーに頼らずにクライアント側のロジックを実行する唯一の現実的な選択肢でした。
しかし、バックエンドの障壁を取り除く様々なツールや標準の登場により、状況は劇的に変化しました。現在では、コードを変換するコンパイラから、 Chromeなどの主要ブラウザのタブ内で驚異的なパフォーマンスを実現するバイナリ技術の使用まで、PythonとHTMLを統合する方法は複数存在します。
PyScript:アナコンダ革命

最も大きな進歩の一つは、AnacondaによるPyScriptのリリースでした。このフレームワークは、単に...のラッパーレイヤーです。 Pyodide、Emscripten、WebAssembly(Wasm)これにより、Python はクライアント上でほぼ透過的に実行されます。最も魅力的な点は、次のようなカスタム HTML タグ内に Python コードを直接記述できることです。 <py-script>これにより、インタラクティブなアプリケーションの作成が大幅に容易になります。
始めるには、ドキュメントのヘッダーに PyScript の CSS および JS ファイルを含めるだけです。その大きな利点の 1 つは、 大容量ライブラリをサポートしています NumPy、Pandas、Scikit-learnなど、タグを使用して設定できます <py-env>さらに、PyScriptは JavaScriptによる双方向通信モジュールを使用してブラウザのDOMを操作することを可能にする js Python。
インターフェースに関しては、PyScriptは劣らず、 統合されたUIコンポーネント として <py-button> o <py-inputbox>これは、操作されると Python 関数を実行します。ただし、WebAssembly に基づいているため、 初期読み込みには時間がかかる場合があります。 また、モバイル端末でのパフォーマンスが低下する可能性があります。
Brython: Python を JavaScript に翻訳

負荷の軽い代替手段を探しているなら、Brythonは定番の選択肢です。PyScriptとは異なり、BrythonはPython 3をベースとした実装で、すべてJavaScriptで記述されています。 Pythonコードを翻訳する ブラウザが理解できるようにするためです。動作させるには、関数を呼び出すことが不可欠です。 brython() イベント中 onload HTML本文の。
BrythonはHTMLおよびSVG要素との相互作用能力で際立っています。オブジェクトを使用することで document可能です コンテンツを動的に挿入する または、次のようなカスタム演算子を使用してSVGキャンバス上に幾何学的図形を描画します。 =< ドキュメントツリーにノードを追加する。汎用性は高いものの、以下のような制限がある。 すべてのモジュールをサポートしているわけではありません 標準ライブラリのものであり、データ入力と出力はHTML要素を介して処理する必要がある。 print() o input() それらは従来の方法では機能しない。
その他の実装例と比較

エコシステムは幅広く、他にも興味深いプロジェクトが数多く存在します。例えば、JavaScriptを介してPython 2と3をサポートするSkulptや、JavaScriptへのコンパイラとして機能するTranscryptなどがありますが、後者は忘れ去られてしまったようです。また、JavaScriptで記述されたバイトコードインタープリタとAntlrで生成されたパーサーを用いるVistaPythonは、異なるアプローチを提案しており、Pythonの新しいバージョンへのアップグレードを容易にしています。
これらのアプローチを比較すると、BrythonとSkulptはメンテナンスが難しい手動パーサーを使用していることがわかります。一方、Pyodide(PyScriptの基盤)はCPythonをWebAssemblyに完全に移植したもので、ダウンロードするパッケージサイズがかなり大きくなるという欠点はあるものの、はるかに高い互換性を保証しています。VistaPythonは柔軟性とサイズのバランスを取ろうとしており、ロードプロファイルを最適化することで、あらゆるデバイスでアプリケーションが高速に動作するようにしています。
従来の方法とバックエンド
すべてがブラウザ内で行われる必要はありません。多くの人にとって、PythonとHTMLを組み合わせる最も堅牢な方法は、依然として... サーバーフレームワークなど PythonのFlask またはDjangoこの方式では、Python がサーバー上でロジックを処理し、レンダリングされた HTML をクライアントに送信するか、 REST API JavaScriptで書かれたフロントエンドとJSON形式でデータを交換します。 fetch o axios.
CGI(Common Gateway Interface)のような古い手法もあります。これらは複雑さゆえに現在では時代遅れとされていますが、動的なウェブの基盤を形成しました。単にデータを提示するだけであれば、Jupyter NotebookをHTMLに変換するのが、技術的な複雑さを伴わずに技術レポートを公開する最も迅速な方法です。
そのすべてを支えるエンジン:WebAssembly
Python、C++、Rustといった言語がウェブ上で動作するようになった真の魔法は、WebAssembly(Wasm)です。このオープンスタンダードは、ネイティブに近いパフォーマンスでバイナリコードの実行を可能にします。Wasmのおかげで、Adobeのような企業はPhotoshopをウェブに移植することができ、AutoCADやFigmaはデータ読み込みと処理を大幅に最適化することができました。
Brythonによる変換であれ、PyScriptのバイナリ機能であれ、クライアント上でPythonを実行できる機能は、ユーザーが自分のコンピュータに何もインストールすることなく、複雑なデータサイエンスツールやアプリケーションを作成するための可能性を大きく広げ、高度なプログラミングへのアクセスを民主化する。
ウェブ上でのPythonの統合は、単純なサーバーサイドスクリプトからWebAssemblyを介したバイナリ実行へと進化し、Brythonによる軽量なJavaScriptへの変換、あるいはPyScriptとPyodideのフルパワーを選択できるようになり、フロントエンド開発の考え方を変革しました。