一般に、 PythonとJavaScript のどちらのほうが将来性が高いかについての議論は、激化し続けています。ただし、Web フロントエンドでの優位性について話す必要はありません。 WebAssembly がブラウザで使用するためにプログラミング言語を透過的にコンパイルできるようにしない限り、JavaScript を回避する方法はありません。これは、あるプログラミング言語を別のプログラミング言語に変換するトランスパイラーのトップターゲット言語の 1 つです。巨大で成長を続けるコミュニティと豊富なライブラリにより、Python は JavaScript に変換 (トランスパイル) される理想的な候補です。

以下に、Python を JavaScript の世界で役立つようにする 7 つの最新ツールをまとめました。

ブライソン

WebAssembly の主な約束 (まだ遠い話ですが) は、Web 開発に任意の言語を使用できることです。 Brython の背後にある哲学によると、モットーは「なぜ待つのか?」です。

 Web 開発ツール: Python を JavaScript に変換する 7 つのツール

このツールは、クライアント側の Web 開発用に Python 3 のバージョンを実装します。これは、Python 3 のすべてのキーワードとほとんどの機能をエミュレートする JavaScript ライブラリを介して機能します。 Python で書かれたスクリプトは、Web サイトに直接統合できます。ドキュメント オブジェクト モデル (DOM) およびブラウザと対話するため (および通常 JavaScript で直接処理される他のすべてのタスクを処理するため)、Brython は高レベルの Python モジュール インターフェイス ( browserパッケージ) を提供します。

多数のライブ コード例ミニ アプリケーションのギャラリーで、全体がどのように機能するかを示します。このツールを使用して、Python でネイティブ Android アプリをコーディングすることもできます。非同期機能も利用できますが、Python のasyncioモジュールの代わりに Brython のasyncモジュールを使用する必要があります。

ただし、Brython はブラウザーの JavaScript に課せられた制限から逃れることはできません。たとえば、ローカル ファイル システムはサポートされません。少なくともHTML5 ローカル ストレージがサポートされており、アプリケーションごとにデータを保持する方法を探しているだけの場合に役立ちます。

 Web 開発ツール: Python を JavaScript に変換する 7 つのツール

JavaScripthon

Brython とは異なり、 JavaScripthon はブラウザ内での完全なサポートを目的として設計されたツールではありません。 Python コード (バージョン 3.5 以降) を JavaScript に変換することにのみ焦点を当てています。 JavaScripthon は、ブラウザ側でのポリフィルの必要性を最小限に抑えるために ES6 コードを生成し、ソース マップの保持のおかげで、Webpack などのツールとうまく連携します。

 Web 開発ツール: Python を JavaScript に変換する 7 つのツール

JavaScripthon は、 asyncawait 、Python 3.6 f-strings、クラス メソッドと継承など、最も一般的な Python キーワードをサポートしています。また、JavaScript を直接使用する必要がある場合は、特別な関数呼び出しを使用してインラインで JavaScript を挿入できます。

重要ではありません: JavaScripthon プロジェクトへの最後の貢献は 2022 年 7 月に遡りますが、このツールは Python 3.10 のサポートを含むように更新されました。

ジフィー

Jiphy は「JavaScript in、Python out」の頭字語です。このツールは、2 つのプログラミング言語間で双方向に変換します。 JavaScript と Python の混合を 2 つの言語のいずれかに変換することも可能です。

OpenStack 全体を JavaScript に変換する前に: Jiphy はコード ベースの完全な変換を目的としたものではありません。むしろ、付属の README テキストによると、その機能は「Python 開発者が JavaScript コードを書く際に必要なコンテキストの切り替えを減らす」ことです。また、その逆も同様です。

 Web 開発ツール: Python を JavaScript に変換する 7 つのツール

Jiphy の最大のマイナス点: Python 関数のサブセットしかサポートしていないことです。これらにはデコレータと例外が含まれますが、クラスやデフォルト引数は含まれません。これは本質的に、Jipy がソース コードとターゲット コード間の「行対行」関係を目指しているためです。そのため、Python 標準ライブラリを JavaScript 構造にマッピングすることはサポートされていません。

Jiphy プロジェクトは 2020 年半ば以降更新されていません。作業が再開されるまで、このツールは純粋に実験的なものであると考えてください。

Js2Py

名前が示すように、 Js2Py は純粋な Python 変換エンジンです。現時点では ES5 コードのみを公式にサポートしています (勇敢な人のために、実験的な ES6 サポートがあります)。

Js2Py は、Python と JavaScript 間のさまざまな相互運用をサポートします。たとえば、 js2py.requireメソッドを使用して、既存の Node.js モジュールを Python コードにインポートできます。 JavaScript 側の変数は Python 側で評価できます。Python オブジェクトは JavaScript コードでも使用できます。

 Web 開発ツール: Python を JavaScript に変換する 7 つのツール

Js2Py は、Python から JavaScript コードを評価するための (これも実験的な) 仮想マシンも提供します。ただし、これは生産的な用途には推奨されません。

RapydScript

RapydScriptの作成者は、JavaScript アプリケーションを「Python に非常に近い言語で、他の同等のフレームワークに伴うオーバーヘッドなしで」作成すると約束しています。このプロジェクトは、代替言語 (この場合は Python の亜種) で書かれたコードを受け取り、どこでも変更せずに実行できる JavaScript を生成するという点でCoffeeScriptに似ています。

RapydScript は両方の長所を提供し、Python のクリーンな構文と、匿名関数、DOM 操作、jQuery や Node.js などの JavaScript ライブラリを使用する機能などの JavaScript 機能を組み合わせます。

RapydScrypt のもう 1 つの便利な機能は、(可能な場合) Python と JavaScript の両方の操作命名法を提供することです。たとえば、jQuery で使用される$記号は RapydScript でも機能し、配列は.push (JavaScript) メソッドと.append (Python) メソッドの両方をサポートできます。ただし、このプロジェクトは 2021 年 5 月以降更新されていないため、実験的であると考える必要があります。

 Web 開発ツール: Python を JavaScript に変換する 7 つのツール

PyScript

 Web 開発ツール: Python を JavaScript に変換する 7 つのツール

ブラウザーで Python を直接実行することは、PyScript の重要な機能です。このツールは、Brython と同じテクノロジの一部を使用します。Pyodide、WebAssembly に移植された Python ランタイム環境で、ブラウザを Web スクリプト言語としての Python 環境に最適化します。

PyScript により、JavaScript 環境と Python 環境の間の双方向通信が可能になります。たとえば、Python スクリプトは DOM を操作し、JavaScript コードを呼び出し、返された結果を操作できます。ただし、Python アプリケーションはブラウザを出力デバイスとして使用することもできます。 Python コマンドprint()使用すると、出力を Web ページに直接書き込むことができます。

PyScript は、PyPI Package Index を通じて入手可能なパッケージを操作する方法も提供します。この点に関しては、すべてが正常に機能するわけではありません。たとえば、PyScript は、HTTP リクエスト用のrequestsライブラリや他の Python ツールとはまだ機能しません。少なくともこのツールは、これらのタスクを実行するための JavaScript のfetchメソッドをサポートしています。

トランスクリプト

Transcryptという名前を聞いてTypeScriptを思い浮かべたとしても、それは間違いではありません。 Transcrypt は同じ基本的な考え方に従っており、Python を JavaScript にトランスパイルします。このツールは、ランバッドや複数のクラス間継承などの構成要素を含め、元の Python コードの構造とイディオムを可能な限り保持します。

 Web 開発ツール: Python を JavaScript に変換する 7 つのツール

さらに、トランスパイルされたコードに対して、元の Python をポイントするソース マップを作成することもできます。これにより、開発者はデバッグ目的で (生成された JavaScript の代わりに) このコードを使用できるようになります。ドキュメントによると、Transcrypt は CPython の抽象構文ツリー モジュールを使用してこれらのタスクを実行します。このモジュールは、Python が独自のコードを解析する方法へのプログラムによるアクセスを提供します。

Transcrypt の最大の利点の 1 つは、ドキュメント オブジェクト モデルへの自動アクセスです。たとえば、Python でdocument.getElementByIdにアクセスしようとすると、JavaScript で変換されたコードdocument.getElementByIdが使用されます。 DOM 操作にフレームワークを使用したい開発者向けに、Transcrypt、React、およびマテリアル UI ライブラリを使用して JavaScript アプリケーションを作成するためのステップバイステップのチュートリアルをオンラインで利用できます

関連プロジェクトとして依然として秘密にされているのがNumscryptです。これにより、数学および統計ライブラリ NumPy が JavaScript に移植されます。これまでのところ、Numscrypt は、最も一般的に使用されている機能ではあるが、NumPy の機能のサブセットのみを提供しています。ただし、Numscryptは2021年以降更新されていません。 (FM)

この投稿は、米国の姉妹誌 Infoworld の記事に基づいています。