エムオーテックス株式会社が運営するテックブログです。

Python(PyScript)でサクッとできる業務改善

こんにちは。アプリケーションチームの栗田です。

業務改善のため Python でツールを作成することがありますが、誰でもかんたんに、できる限り環境依存なく使ってもらえる方法を模索しています。もちろんサーバー構築も解決策のひとつですが、インフラ費用や管理工数を抑えたいですよね。

自前のサーバーなしで Python を実行する方法はいろいろあると思います。

  • Python をインストールしてローカル実行する
  • Jupyter Notebook(Google Colaboratory)を利用する
  • AWS Lambda / Azure Functions を利用する

ただ、開発経験がない人たちにも使ってもらうことを考えると、もう一捻りしたいところです。

そこで、ブラウザ上で Python が実行できる「PyScript」について調べてみたので、備忘録として残します。

PyScriptとは

2022 年に Anaconda 社から発表された、HTML 内に Python で実装したコードを処理してくれるフレームワークです。

Python はインタプリタ言語なので実行環境が必要でしたが、実行環境そのものをブラウザ上で高速動作する WebAssembly 化することで、ブラウザだけで動作可能にするというものです。WebAssembly 化した実行環境である Pyodide がベースになっています。 そのため、Python 標準でないライブラリ(パッケージ)の利用は、Pyodide の仕様に依存するようです。*1

PyScript は執筆時点でアルファ版となります。
本番ワークロードでの利用は非推奨となりますのでご注意ください。

使い方

めちゃくちゃシンプルで、HTML の head タグ内に以下の情報を記載するだけで利用できます。

<link rel="stylesheet" href="https://pyscript.net/latest/pyscript.css" />
<script defer src="https://pyscript.net/latest/pyscript.js"></script>

公式サイト には「Install」ボタンがありますが、「Just Kidding, you don't need to install anything.(冗談だよ、インストールいらないよ)」と出てきます。おもしろいですね。

公式サイトに デモ(Hello world) がいくつか準備されています。 実際に試していただけるとわかりますが、表示されるまで少し時間がかかります。(公式も課題として認識されています)

デモ画面の「View Code」ボタンをクリックすると、<py-script> 内に Python コードが書けることがわかりますね。

作ってみた

早速、開発あるあるな改善ツールを作ってみました。【コチラ】 から確認できます。
以下のサンプルコードを index.html として保存し、ブラウザ起動(Chrome がオススメ!)でも OK です。見た目を整えるため、Bootstrap を利用しています。

「いやいや、これぐらいコマンドで一発変換できるでしょ」と言われればその通りです!
ここではイメージを掴んでいただければ十分です。日常的に繰り返しやっている細かな作業をこういったツールで効率化できそうではないでしょうか。

<a py-click="convert_filepath('mac')" ...<button py-click="pretty_print_json()" ... のように、py-click で Python の関数を指定すれば実行できます。かんたんですね。
他にも matplotlibnumpy などデータ可視化・分析用のライブラリも使用できます。詳しくは公式サイトに デモ(Matplotlib) があるのでご確認ください。

静的なページなので、AWS S3 などに公開するだけで Web アプリとして利用できるのがいいですね。*2

おわりに

実は今回実装したサンプルコード、そのほとんどを ChatGPT に生成いただきました。

エムオーテックスでは、ChatGPT を活用した独自の AI システム「Smart ばんにゃ」が導入されており、社員全員が気軽に AI チャットを利用することができます。詳細はこちらの記事をご覧ください。note.com

ChatGPT 上で Python を実行できる「Code Interpreter」もありますし、組み合わせることで何か大きな価値の創出につなげることができるかもしれません。

テキストエディタとブラウザさえあれば試せるので、ぜひ手を動かしてみてください!

以上、PyScript に関する記事でした。
ご興味あれば採用サイトのほうもぜひご確認ください
www.motex.co.jp

ここまでお読みいただきありがとうございました。


*1:https://pyodide.org/en/stable/usage/loading-packages.html

*2:外部通信が発生するスクリプトを実装した PyScript ファイルをサーバー上に配置する場合、CORS の設定が必要になることがあります。