🐍

静的ホスティングサービスでPythonを使う裏技

に公開

まえがき

PythonをWeb環境で動かす場合、通常はVPSを借りるか、Python対応のレンタルサーバを借りる必要があります。
しかし、今回紹介するやり方を使えば、静的HTML・javascriptさえ動けばpythonのコードを実行できるようになるため、格安なホスティングサービスを使うことができます。
静的HTMLであれば無料のサーバもありますので、練習用や個人用のサイトには十分だったりします。

やり方

pyscriptというライブラリを使用します。
以下のようなコードを作成します。
注意点として、py-configタグの中は改行してはいけないので、エディタの自動フォーマットによっては、勝手に改行しないように切るなり整形ルールをカスタマイズする必要があります。

フォルダ構成
.
├── index.html
└──  main.py

html

HTMLでcore.cssとcore.jsをロードします。

index.html
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width,initial-scale=1" />
    <title>test</title>
    <link
      rel="stylesheet"
      href="https://pyscript.net/releases/2025.3.1/core.css"
    />
    <script
      type="module"
      src="https://pyscript.net/releases/2025.3.1/core.js"
    ></script>
  </head>
  <body>
    <py-config>
      [[fetch]] 
      files = ["./main.py"]
    </py-config>
    <py-script src="./main.py"> </py-script>
  </body>
</html>

python

python側は普通に書けます。
displayという関数をインポートするとブラウザに文字列を表示できます。

main.py
from pyscript import display


def calc(x, y):
    return x + y


display("hello world")
display(calc(3, 5))

実行

簡易サーバを立ち上げて確認します。

python -m http.server 8000 

こんな風に結果が表示されます。

おわりに

pyscriptを使うと簡単にpythonを実行できることが分かりました。
動作速度はjavascriptだけで書いたほうが速いようなので商用プロダクトには使えないと思いますが、環境構築が不要なため、ちょっとしたテストや学習用には良さそうですね。

また、静的HTML扱いになるため、Cloudflontなどに無料で公開出来る点も魅力です。

株式会社ONE WEDGE

【Serverlessで世の中をもっと楽しく】 ONE WEDGEはServerlessシステム開発を中核技術としてWeb系システム開発、AWS/GCPを利用した業務システム・サービス開発、PWAを用いたモバイル開発、Alexaスキル開発など、元気と技術力を武器にお客様に真摯に向き合う価値創造企業です。
https://onewedge.co.jp

Discussion