LightCode 概要と特徴
LightCode は WebView2 を基盤とした開発フレームワークであり、HTML5 を利用してユーザーインターフェースを構築し、それを軽量な EXE ファイルとして配布することを可能にします。従来の Python における GUI 開発は、見た目の美しさや開発効率の面で課題がありましたが、LightCode を利用することで Web 技術の柔軟性と Python の機能性を組み合わせることができます。
本ツールの特徴は、HTML5 で描画された画面から Python のロジックを直接呼び出せる点、および逆に Python から HTML5 へメッセージを送信できる双方向通信にあります。最終的には、これらの要素を単一の EXE ファイルにまとめて配布可能です。
環境設定
プロジェクトの根幹となる設定は project.json ファイルで行います。ここでは使用する Python のバージョンや、ダウンロード時に利用するミラーサーバーを指定できます。
{
"pyVersion": "3.11.8",
"pythonProxy": "",
"pipProxy": ""
}
- pyVersion: 使用する Python のバージョンを指定します。
- pythonProxy: Python インストーラーのダウンロード元ミラー。空欄の場合は既定の阿里云ミラーが使用されます。
- pipProxy: パッケージインストール時の pip ミラー。空欄の場合は既定の阿里云 pip ミラーが使用されます。
プロジェクトの初期化
まず、作業ディレクトリを作成し、プロジェクトを初期化します。以下のコマンドでは C:\Dev\LC_Demo をプロジェクトフォルダとして指定しています。
LightCode.exe -d -w C:\Dev\LC_Demo
Python ランタイムのインストール
次に、プロジェクト内に Python 環境をセットアップします。設定ファイルで指定されたバージョンが自動的にダウンロードおよび展開されます。
LightCode.exe -e -w C:\Dev\LC_Demo
実行後、コンソールにはダウンロードおよびインストールの進行状況が表示され、完了すると成功メッセージが出力されます。
インターフェースとロジックの実装
プロジェクトフォルダ内に index.html を作成し、UI と Python 連携のコードを記述します。以下の例では、黒を基調としたコンソール風の画面を用意し、Python の標準出力をキャプチャして Web 画面に表示する仕組みを実装しています。
<html>
<head>
<style>
html, body {margin: 0; padding: 0; background-color: #1a1a1a; color: #eee}
.msg-info {color: #00ff00}
.msg-error {color: #ff3333}
</style>
</head>
<body>
<div id="consoleOutput"></div>
</body>
<script>
function renderMessage(text, isError) {
var elem = document.createElement(isError ? "div" : "div");
elem.className = isError ? "msg-error" : "msg-info";
elem.innerText = "> " + text;
document.getElementById("consoleOutput").appendChild(elem);
}
Native.captureConsoleOutput(function (output, isStdOut) {
renderMessage(output, !isStdOut);
});
Native.initPython("3.11.8");
Native.runPythonScript(`
import time
def process_task():
for i in range(5):
time.sleep(0.5)
print(f"Task progress: {i+1}/5")
raise RuntimeError("Simulated Critical Error")
process_task()
`);
</script>
</html>
このコードでは、JavaScript 側で renderMessage 関数を定義し、Python スクリプトからの出力を受け取って DOM に追加しています。Python 側では簡易なループ処理を行い、完了後に意図的な例外を発生させてエラーハンドリングの挙動を確認します。
アプリケーションの実行
開発中の動作確認は、以下のコマンドで実行できます。
LightCode.exe -d -w C:\Dev\LC_Demo
起動後、Web 画面内に Python の処理ログが順次表示され、最後に発生した例外メッセージも赤色で表示されることを確認できます。
EXE ファイルへのパッケージング
配布用のファイルを生成する際、リソースディレクトリの扱いを設定する必要があります。project.json にて pkgResDir パラメータを調整します。
{
"pkgResDir": true
}
- true: リソースファイル(.res ディレクトリ)を EXE 内部に圧縮して格納します。ファイルサイズを小さく抑えたい場合に適しています。
- false: リソースファイルを EXE と同じ階層に展開します。リソース容量が大きい場合に推奨されます。
設定完了後、以下のコマンドでパッケージングを実行します。
LightCode.exe -p -w C:\Dev\LC_Demo
この手順により、Python 仮想環境を含むすべての依存関係が単一の EXE ファイルに統合されます。本構成の場合、完成したファイルのサイズは約 11MB 程度に収まります。