Pyodide + Service Worker でブラウザ上でPython ASGIアプリを実行
Simon Willison氏の研究プロジェクトは、ブラウザ内でPyodideとService Workerを使用してPython ASGIアプリケーションを完全に実行し、以前のWeb Workers方式の欠点(JavaScript実行不可)を克服。FastAPIとDatasetteのデモで汎用性を確認し、今後のアップグレードが予定されている。
記事インテリジェンス
要点
- PyodideとService Workerを用いてブラウザ上でPython ASGIアプリを実行
- 従来のWeb Workers方式の問題点(JavaScript実行不可)を解決
- FastAPIとDatasetteのデモで動作確認
- Datasette Liteのアップグレードを計画
重要な理由
このニュースが重要なのは、PyodideとService Workerを用いてブラウザ上でPython ASGIアプリを実行ためです。
技術的影響
モデル選定、推論コスト、プロダクト能力、評価基準に影響する可能性があります。
Simon Willison氏は、PyodideとService Workerを組み合わせることで、ブラウザ上でPython ASGIアプリケーションを完全に実行する研究結果を公開した。このプロジェクトは、Datasette Liteなどのアプリケーションをクライアント側だけで動作させることを目的としており、静的ファイルサーバー以外のバックエンドを不要にする。
Datasette Liteは、Willison氏がPyodide(WebAssembly上のPythonランタイム)を利用して構築した、ブラウザ上で完全に動作するDatasetteのバージョンである。4年前の初版ではWeb Workersを使用し、ナビゲーション操作をインターセプトしてPythonアプリを実行することでHTMLを生成していた。しかし、この方法には重大な欠点があった。Web Workersは<script>タグ内のJavaScriptを実行できないため、Datasetteの一部機能や多数のプラグインが動作しなかったのである。
この制限を克服するため、Willison氏はClaude Opus 4.8(Claude Code for Web経由)を活用し、Service Workerベースの新しいアーキテクチャを設計した。新しいシステムでは、/app/への同一オリジンリクエストがService Workerによってインターセプトされ、Pyodide内でASGIプロトコルを介してPythonアプリケーションが実行される。これにより生成されたHTML内のJavaScriptが正常に実行されるようになり、Datasetteの完全な機能が復元された。
Willison氏は2つのデモを公開し、手法の有効性を確認している。1つは基本的なASGI FastCGIデモ、もう1つはDatasette 1.0a31を実行するデモである。これらのデモは、あらゆるASGIアプリに適用可能な汎用性を示している。
Willison氏は詳細な動作メカニズムをまだ研究中だが、理解が進み次第Datasette Liteをアップグレードする計画である。この進展は、ブラウザ上でPython Webアプリケーションを実行する新たな道を開き、プラグインエコシステムの改善とユーザー体験の向上が期待される。