【PyScript】pyscript.net/latest/pyscript.jsから最新版への移行
日本語の「PyScript使ってみた記事」だけで作ったWebアプリが死んだ
https://pyscript.net/latest/pyscript.jsがクローズした。1週間ほど前にページがなくなり、インポートしていたWebアプリが動かなくなった。
PyScriptはPythonファイルをhtml上で動かすことができるOSSで、pyscript.netに置かれたJSファイルをhtmlに読み込んで使う。
これが古かった。
日本語でPyScriptと調べるとこのファイルが頻繁に使用されている。
最近の「PyScript使ってみた記事」でも使用されているのを発見したが、Latestは2023年末にサポートを停止している。1年待ってくれていたようだ。
2024年12月16日時点、最新バージョンは2024.11.1で、ファイルパスはhttps://pyscript.net/releases/2024.11.1/core.jsである。
PyScriptの公式ドキュメントを読むと、日本語の使ってみた記事とは記法も全然違う。
あっこれ、私が完全に悪いやつ。
日本語の「使ってみた記事」だけ読んで、公式ドキュメント確認しなかったやつ。
OSS使う時に一番やっちゃダメなやつ。
以下に作業内容を戒めと備忘のために書く。親切な誰かが書いてくれた日本語の記事を参照してなんとなくで使っている人はみんな死んでいると思うので、死んだ人は参考にしてほしい。
なお、PyScriptは更新頻度が高いようで、ChatGPTやGitHubCopilotを使っても古いコードが出てくるので注意。
これからPyScriptを使う人は、当たり前だが必ずPyScriptの最新版のドキュメントを読み、PyScriptの公式実装例サイトを参照してほしい。
ちなみに、この公式の例で使用されている関数も必ずしも最新ではないので、ドキュメントに存在するか確認のこと。
※筆者は本業デザイナーでエンジニアでもPythonユーザーでもありません。親切な日本語の記事です。ご注意ください。
移行作業
Webアプリの情報
作成したのは2024年3月。副業ではなく趣味。
(サポート停止してるのに新規アプリに使ってしまっていた。身内とやってる趣味でよかった。)
作っていたWebアプリは簡単な計算をするだけのシンプルなもの。Pythonのライブラリにある乱数が必要でPyScriptを利用した。
使っているPythonのライブラリはnumpyとpandas。
やったこと
https://pyscript.net/latest/pyscript.jsから、Pyscript最新版へ移行。
Pythonコードと設定の置き方を、py-scriptとpy-configからmain.pyとpyscript.tomlへ移行。
エレメントの指定をElement関数からpyscript.documentへ移行。
クリックイベントをpy-clickからwhenへ移行。
Loading画面系がなくなったので、py:readyイベント追加。
詰まったことと学び
①PyScriptのerror.jsのエラーが参考にならないこと。
pandasやらtornadoやらライブラリからサーバまで云々エラーが出るが、どれも直接の関係がなく、使っているpy-xxタグや関数がなくなったことがエラーの原因だった。
公式ドキュメントを最初から読もう。
②AIも最新のPyScriptの記法を知らないこと。
GithubCopilotとChatGPTに聞いたけど古い情報や間違った情報が多く参考にならなかった。
一次情報(最新の公式ドキュメント)を自分で読もう。
③公式の例に記載されている関数がクローズされていたこと。
PandasのExampleでElement関数の代わりにpyweb.pydomが使われていたので使ったらエラーが出た。プルリク見たら移動めっちゃしてた。ドキュメント見たら開発中らしい。
公式の例よりもドキュメントを読もう。
④Discodeの質問部屋でも解決策がわからなかったこと。
pyscript.net/latest/pyscript.jsから移行して的を得ないエラーメッセージに翻弄されている自分と同じようなユーザーがいたが、Discode内で解決していなかった。
開発者曰く最新版に移行してくれないと質問に答えられないとのこと。そりゃそうだ。
ドキュメントを読んでからDiscodeに行こう。
移行作業の一般化
①PyScript最新版のドキュメントを読む。(最重要)
②https://pyscript.net/latest/pyscript.jsからpyscript最新版へ移行。
③pyscript.com/@examplesから似た例を探してミニマムなコードを動かしてみる。古い関数もあるので弾く。
④PyScriptのDiscodeに入る。pyscript-help部屋で同じ問題が起きていないか検索する。
⑤PyScriptのGitHubを見る。Issueやプルリクから問題が解決されているか検索する。
余談
numpyとpandasだけだったので比較的エラーが少なかったと思われる。ライブラリいっぱい読み込んでる人はもっとエラー出るかも。
OSSを利用するときは、必ず最新の公式ドキュメントを自分で読もう!
頑張ったのでアプリも見てください。