3 ポイント 投稿者 GN⁺ 2024-08-17 | 1件のコメント | WhatsAppで共有
  • 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件のコメント

 
GN⁺ 2024-08-17
Hacker News のコメント
  • 使用例が気になるなら、Dallas 犯罪統計 Panel ダッシュボードをここで見られる: https://crimede-coder.com/graphs/Dallas_Dashboard
    起動には1分ほどかかり、複数の Python ライブラリのインストールと外部の 5MB データセットの読み込みが含まれる。いったん表示されるとかなり反応がよく、iPhone でもうまく動作する
    一緒に仕事をしている多くの業者は Tableau の無料版を使い、データを手動で更新している。無料版ではデータストアへの直接接続が許可されていないため。これは無料の代替手段で、GitHub Actions で圧縮 CSV ファイルを作り、環境側で取り込むようにしている

    • メモリ使用量がかなり高そう。ブラウザのタスクマネージャー基準でこのタブが 657MB を使っているが、他のほとんどのタブは 25〜70MB 程度
    • 「起動に1分ほどかかる」とあったが、2023年秋の iPad Pro 13インチで、NYC 地域のブロードバンド網と WiFi から開いてみたところ、リンクをクリックしてからスピナーが消え、フィルターが有効になるまで約 8秒 かかった
      iPad の Safari 内で Panel アプリを動かせるだけの Python をブートストラップするには、8秒よりずっと長くかかると思っていた。Shift リロードは約6秒かかった
    • ボトルネックが何だったのか気になる。国内のブロードバンド網では約 20秒 かかった
    • かなりいい感じ。犯罪統計ダッシュボードに興味がある人向けに NYPD のものも残しておく: https://compstat.nypdonline.org/
    • サイトがいい。「多くの業者が Tableau の無料版を使ってデータを手動更新している」なら、なぜ React や Angular のようなものを使わないのか気になる
      データ分析のために Python が必要で、サーバー費用のためにサーバー側で動かしたくない、という問題なのかもしれないとも思う
  • ホームページを見ても混乱したし、ドキュメントを読んだ後でも、これが正確に何なのかよく分からない
    直接少し触ってみると、Web サイトに入れると “Hello World” を表示できた。type="py" のスクリプトを探し、Pyodide 経由で Python から JavaScript へトランスパイルするスクリプトのように見える
    ただ、ホームページのデモは REPL で、タイトルは「プラットフォーム」となっているので、まだ混乱している

    • 「Python を JavaScript にトランスパイルする」というより、PyScript は Python コードを直接実行するものに見える。WebAssembly にコンパイルされた Python インタプリタを使い、Pyodide の CPython または MicroPython を使用する
    • 「プラットフォーム」のような曖昧で定義のぼやけた用語を使うのが嫌い。単に Pyodide で Python 用スクリプトタグ内のコードを評価するフレームワークと言えばいいだけ
    • ドキュメントやソースコードを実際に読んだわけではないが、js パッケージは実際の window オブジェクトにマッピングされ、何らかの Proxy オブジェクト経由で DOM メソッドを呼び出す API なのだと思う
    • ターミナル関連の情報はここで見つけた: https://docs.pyscript.net/2024.8.2/user-guide/terminal/
      ブラウザコンソールで Python を実行できることを期待していた
  • これは Pyodide とどう違うのか? https://pyodide.org/en/stable/

    • Pyodide は CPython を WebAssembly プラットフォームに移植したもの。PyScript は Pyodide を使ってブラウザで Python アプリケーションを開発できるようにするフレームワーク。エレベーターピッチとしては「Pyodide によるスクリプトタグ内の Python」くらい
    • これは Pyodide を使う。実際にはトランスパイラでないとしても、Python から JS へ行くトランスパイラに近い感覚で、Python でブラウザアプリを作るためのもの。なので Pyodide + ブラウザ API と見なせる
    • Pyodide は ランタイム
      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/

    • 多くの Python プロジェクトが Rust 化されるにつれ、Python をどこでも使うことが必要以上に難しくなっている
  • 実際のユースケースを見つけにくい。機械学習モデルを動かしたいなら ONNX でビルドできる: https://onnxruntime.ai/docs/tutorials/web/
    JS/TS の代わりにブラウザベースのアプリを作るのに、これが効率的なのか気になる

    • JS/TS に触れたくない人もいるかもしれない
    • プログラミング言語は デプロイ環境から分離されるべき
  • Firefox でスクリプトを書いてブラウザを操作できるとよさそう。GET のタイミング、すべての GET の後、JavaScript の評価前後のように、望むどの段階でも評価を行う形
    こういうことができて、Python のすべての機能にもホストからアクセスできるツールがあるのか気になる

  • これは Brython と同じコンセプトでは? BRowser pYTHON: https://brython.info/
    https://github.com/brython-dev/brython

  • 少し宣伝すると、PyScript を使って、もう少し 意見の強いリアクティブなフロントエンドフレームワークを作った。Vue.js から少し着想を得ている: https://puepy.dev

  • 以前これで Markdown レンダラーを作った。とても単純なソースコードはここで見られる: https://pyscript.com/@stuartmaxwell/markdown-previewer-v2/la...
    アプリはモバイルではあまりうまく動かないかもしれないが、デスクトップでは問題ないはず。Django で書いていたブログアプリケーションでこのコードを使った

  • どんな WASM 設定でも、結局 CORS のせいで多くの API を呼び出したりサイトをスクレイピングしたりできないという大きな制約が非常に厄介
    もちろん CORS は XSS のようなものを防ぐうえで重要だが、CORS を取り除くプロキシを立てる以外の方法があるとよい。そうすると、住宅用 IP ではなく、ブロックされる可能性がより高い IP が残ることになる

    • この問題は、COOP と COEP によって クロスオリジン分離が有効になっている場合にだけ該当するのだろうか?