Anaconda、Pythonアプリをブラウザで実行できるOSSフレームワーク「PyScript」を発表:WebAssembly、Emscripten、Pyodideによるブラウザスタックが基盤
Anacondaは、Pythonと標準HTMLを組み合わせ、ブラウザで動作するリッチなPythonアプリを作成できるOSSフレームワーク「PyScript」を開発していることを明らかにした。
Pythonディストリビューションの「Anaconda」を手掛けるAnacondaは2022年4月30日(米国時間)、Pythonと標準HTMLを組み合わせ、ブラウザで動作するリッチなPythonアプリを作成できるオープンソースソフトウェア(OSS)のフレームワーク「PyScript」を開発していることを明らかにした。
PyScriptとは?
PyScriptは、一貫したスタイルルールがあり、表現力が豊かで、習得しやすい一流のプログラミング言語をユーザーに提供することを目的としている。AnacondaはPyScriptの特徴として下記を挙げている。
- ブラウザで動くPython
サーバ側の設定に依存することなく、ドロップインコンテンツ、外部ファイルのホスティング、アプリのホスティングを可能にする。外部ファイルのホスティングは、「Pyodide」プロジェクト(後述)によって実現されている - Pythonエコシステム
Pythonの多くの一般的なパッケージとサイエンススタック(「numpy」「pandas」「scikit-learn」など)を実行できる - PythonとJavaScriptの連携
PythonとJavaScriptそれぞれのオブジェクトと名前空間が双方向にやりとりできる - 環境管理
「ページコードを実行するために、どんなパッケージやファイルを含めるか」をユーザーが定義できる - ビジュアルアプリ開発
ボタン、コンテナ、テキストボックスなどのGUIコンポーネントがすぐに利用できる - 柔軟なフレームワーク
新しいプラガブルで拡張可能なコンポーネントを直接Pythonで作成し、共有するために利用できる
こうした特徴を持つPyScriptについてAnacondaは「豊富でアクセスしやすいPythonライブラリのエコシステムのおかげで、ほんの少し(大幅に、かもしれない)強化されたHTMLだ」と述べている。
コード例
PyScriptでは一連の新しいHTMLタグ(Webコンポーネント)を定義している。例えば、簡単なプログラムを書くには<py-script>タグを使い、タグ自体の中にPythonコードを書けばよい。
<py-script> "Hello World" </py-script>
あるいは、ソースファイルを直接渡すこともできる。
<py-script src="/my_own_file.py"></py-script>
PyScriptはこうしたコードを読み、Pythonインタープリタで実行し、それに応じて出力を処理する。
アプリに必要な追加のモジュールやパッケージをロード(インストール)する必要がある場合は、<py-env>タグを使って環境要件を指定できる。
<py-env> - bokeh - numpy - paths: - /utils.py </py-env>
REPLのようなコンポーネントを追加してインタラクティブな体験を作成するには、<py-repl>タグを使用すればよい。
<py-repl id="my-repl" auto-generate="true"> </py-repl>
PyScriptのデモ
PyScriptはまだ始まったばかりであり、ビジョンと比べて非常に限定的なものにとどまっている。だが、まだ不安定で制限はあるものの、PyScriptが動くことを示すために、Anacondaはデモページを設け、「基本例」「MIMEレンダリング」「JSインタラクション」「可視化&ダッシュボード」という分類で、さまざまなデモを試せるようにしている。
既存プロジェクトの成果の活用
Anacondaは、「今日では、『WebAssembly』(以降、WASM)、『Emscripten』、Pyodideによる進歩など、さまざまな要素によって、ブラウザは非常に強固なスタックとなっている。ブラウザはこれまで、仮想マシンとして考えられていなかったが、優れた仮想マシンになる」との認識を示している。
WASMは、Webブラウザを含むモダンな実行環境での効率的なコード実行とコンパクトなコード表現のために設計された、ポータブルな低レベルフォーマットだ。HTML、CSS、JavaScriptに続く第4のWebブラウザ用言語と位置付けられている。
Emscriptenは、速度、サイズ、WebプラットフォームにフォーカスしたLLVMベースのコンパイラであり、C、C++、またはLLVMを使用するあらゆる言語で書かれた既存のプロジェクトを、ブラウザ、Node.js、WASMランタイムにコンパイルする。
Pyodideは、Pythonのレファレンス実装「CPython」をWASM、Emscriptenに移植したものだ。
Anacondaは、前述したPyScriptの目的から、PyScriptの開発に当たって、新しい技術スタックを作るのではなく、現在のエコシステムが提供する最良の選択肢からスタートしようと考えた。そして基盤となるプラットフォームとしてブラウザを選んだとしている。
ブラウザは、「楽しみながらアプリを作成してリリースできる、信頼性が高くアクセスしやすいフレームワークを提供する出発点だ」と、Anacondaは考えている。
PyScriptの今後の計画
Anacondaは今後、PyScriptを次のようなフレームワークとして開発する計画だ。
- 非常にシンプルで表現力が豊か
- ユーザーにとって親しみやすい
- 拡張性を備える
- ユーザーが新しいウィジェットを作り、他のユーザーと共有できる
- 複数のランタイムをサポートできる
- 複数の言語をサポートできる
- これらは相互に運用できる
- さらに、安全な名前空間を作るように制御できる
- ブラウザとサーバ/ネイティブサイドの両方で動作する
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- Pythonディストリビューション使い分けのポイントを考えてみよう(Windows編)
python.orgで配布されているインストーラー、Anacondaなど、Windows向けに配布されているPython処理系はたくさんある。それらのインストールの仕方や仮想環境の作り方、選択のポイントを紹介する。 - 第4のWebブラウザ用言語「WebAssembly」、誰がどのように使っているのか
ソフトウェアコンサルティング会社のScott Logicが第4のWebブラウザ用言語「WebAssembly」の使用状況について、調査結果を発表した。WebAssemblyアプリケーションの作成に使われている言語やWebAssemblyの使用目的、今後大きな影響を与える分野、改善を要する分野などが明らかになった。 - 第4のWebブラウザ用言語「WebAssembly」、誰がどのように使っているのか
ソフトウェアコンサルティング会社のScott Logicが第4のWebブラウザ用言語「WebAssembly」の使用状況について、調査結果を発表した。WebAssemblyアプリケーションの作成に使われている言語やWebAssemblyの使用目的、今後大きな影響を与える分野、改善を要する分野などが明らかになった。