石川さんです。見にきてくれてありがとうございます。PyScript in Action、なんとか読了しました!しばらく放置していましたが、そろそろまとめようかと思います。
概要
この書籍は現時点で出版されている唯一の書籍と思って購入しました。が、よくよく調べてみると他にもあと二冊ほどありそうです。「Learning Library Projects in Python: Create Projects with NumPy, PyScript, Pandas, Beautiful Soup and more」「Build Fun AI Projects that Run on the Web: Volume 1: PyScript, GitHub, and KNN」の二冊です。前者のはKindleでも読めるようですね。
全18章で、438ページ、ボリュームたっぷりでした。
最初にざっと目を通したときの印象は、スカスカだねぇ、です。HTMLやPythonなどのスクリプトが掲載されているのですが、行間が大きめになっていて、全体的には薄い印象で、詰めれば半分くらいの分量で済むのでは、と、思いました。そして、全体を通して、表は少しだけありましたが、図が一つもないというのが致命的です。英語が堪能ではないので、図を見てある程度理解しようと思っていたので、これはちょっと、ショックでしたねぇ。ま、仕方ありません。
PyScript in Actionの目次(勝手に日本語訳にしてみました)
1.PyScriptの導入
2.Pythonの基本
3.Web開発の基本
4.初心者向けのPyscriptの基本
5.開発環境の構築
6.PyScriptのコアコンセプト
7.初めてのPyScriptアプリケーション
8.高度なPyScriptの特徴
9.インタラクティブなWebアプリケーションの設計
10.PyScriptにおけるデバッグとエラーハンドリング
11.パフォーマンス最適化
12.有名なフレームワークとのPyScriptの統合
13.PyScriptアプリケーションのデプロイ
14.PyScriptアプリケーションのテスト
15.実世界のPyScriptアプリケーション
16.PyScriptアプリケーションのセキュリティ
17.ケーススタディ、実世界の例題
注意点
システム関連の書籍にありがちですが、一部情報が古くなっています。スクリプトの記載をそのまま転記しても動かない個所があります。というか、ほとんど動きません!と、いうのは執筆時点でまだまだ成長過程のフレームワークだったからでしょうね。これは執筆者に同情します。
まずは、こちら。
誤:<script defer src=”https://pyscript.net/latest/pyscript.js”></script>
エラーというか警告メッセージがでました「Loading scripts from latest is deprecated and will be removed soon. Please use a specific version instead.」だそうです。(latestからスクリプトをロードするのは非推奨で、そのうち削除されます。代わりに特定のバージョンを指定してください。)
正:<script defer src=”https://pyscript.net/unstable/pyscript.js”></script>
とすることで動作しました。「unstable」に変更しましたが、実際は、その時の最新バージョンの日付を指定するのが推奨されているようです。2025年9月18日時点では、以下の通りです。
推奨:<script type=”module” src=”https://pyscript.net/releases/2025.8.1/core.js”></script>
PyScriptを使うと何ができるのか
現状、インタラクティブなWebアプリケーションは、ほぼ、Javascript(TypeScript)一択だと思っているのですが(Webはそんなに詳しくないので、間違っていたらフォローお願いします!)、PythonでWebアプリケーションを作りたい!を叶えてくれるフレームワークです。そう、Javascriptで色々とやっているところをPythonで記述できるのです!開発についてまわる面倒なセットアップはほぼ不要です。
ただし、後述しますがちょっぴり起動に時間がかかってしまうようですね。
PyScriptの基本技術
PyscriptはWeb Assembly(WASM)+pyodide(EmScripten+CPython)をベースにして、その上で動作するように構築されています。不勉強のため、これらのベースになる技術も、へ~そんなのあるのねぇ、WASMはiPadでPython使おうとしたときに利用している技術として聞いたことあるかなぁ、という認識でした。WASMはWeb上でバイナリの実行可能プログラムを扱う仕組みで、pyodideはCPythonをWASMで使えるバイナリに修正したもの、というイメージでしょうか。すみません、この分野にはたいして明るくないので詳細はご自分でお調べください。
最小構成
HTML(index.htmlファイル)と、Pythonファイルと、TOMLファイル(環境設定用のファイル)があれば、とりあえず動きます。PythonファイルとTOMLファイルはオプションで、index.htmlファイル中に記載することも可能ですが、規模が大きくなった時のことを考慮して、スクリプトは分けて実装するのがよいでしょう。
・HTML(index.html)
<!DOCTYPE html>
<html lang="ja">
<head>
<title>最小構成</title>
<!-- Recommended meta tags -->
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<!-- PyScript CSS -->
<link rel="stylesheet" href="https://pyscript.net/releases/2025.8.1/core.css">
<!-- This script tag bootstraps PyScript -->
<script type="module" src="https://pyscript.net/releases/2025.8.1/core.js"></script>
</head>
<body>
<script type="py" src="./main.py" config="./pyscript.toml" terminal></script>
</body>
</html>
下から三行目の「terminal」があると、Pythonスクリプトで記載した「print()」を出力する領域が出現して、そこに「Hello, World!」が出力されます。「teminal」を利用しないときは、後述する「display()」を利用するのがよさそうです。
・Python(main.py)
print("Hello, World!")
ここにPythonスクリプトを記載します。関数などもここで定義することが可能です。「terminal」を指定しないときは「import display from pyscript」とインポートしてから「display(“Hello World!”)」とすればターミナルを使用せずに同様の結果を得られます。
・環境設定(pyscript.toml)
name = "最小構成"
今回Pyscript.comを訪れて「.toml」を知りました。(過去にも遭遇していたかも知れませんが、すっかり失念しまっていました。)Tom’s Obvious, Minimal Languageの略で、トムさんが作った設定ファイルの最小限のフォーマットだそうです。デフォルトで搭載されていないライブラリなどを定義しておくため等に利用されるようです。
実行環境
上記の3つのファイルは、Pyscript.comへログインして、新規作成すれば初期状態として作られます。そして、Pyscript.comはそのまま実行環境にもなっていて、全世界へ公開されます。ローカルへ保存して、保存したフォルダで「python -m http.server」と実行してブラウザから「localhost:8000」とすれば動作確認できます。もちろん、ご自分の好きなサーバーへでプロしても動作します。

その他
最小構成が分かれば、あとは作りこんでいくだけですね。書籍には、デバッグの仕方やパフォーマンス改善策なども書いてはありますが、それほどPyScriptに特化したことが書いてあるわけではないかな、という印象でした。
まとめ
PyScriptの書籍が無い中で出版されたことは評価に値することだと思います!

