Pythonでデスクトップアプリを作ろうとしたとき、こんな悩みはありませんか?
- TkinterやPyQtのデザインが古臭くてやる気が出ない…
- Windows 10や11で、モダンなEdge(Chromium)エンジンを活かしたアプリを作りたい
- 既存のWebサイトやStreamlitの画面を、独立した「アプリ」として配布したい
その解決策が「pywebview」です。
この記事では、pywebviewの特徴から、StreamlitやElectronとの決定的な違い、そして実際の導入方法から実行画面まで徹底解説します。
1. pywebviewとは?「ネイティブ」と「Web」のいいとこ取り
pywebviewは、Pythonで作ったロジックや既存のWebページを、OS標準のブラウザエンジン(WebView)を使った専用ウィンドウで表示するライブラリです。
最大の魅力は、「どちらの運用スタイルでもアプリ化できる」という点にあります。
- スタイルA:Webサイト・ラッパー型すでに公開しているWebサイトやStreamlitのURLを読み込み、ブラウザの枠を消して「一つの独立したソフト」のように見せる。
- スタイルB:ローカルアプリ型PC内のHTML/CSSファイルを読み込み、インターネット不要の軽量なデスクトップツールとして動かす。
2. Windows環境における強み
Windows 10/11では、標準のMicrosoft Edge WebView2(Chromiumベース)を使用します。
これにより、Google Chromeと同じ最新のレンダリング性能を、追加のブラウザ同梱なしで利用でき、配布サイズを劇的に小さくできます。もちろん、作成したアプリはMacやLinuxでも動くクロスプラットフォーム対応です。
3. StreamlitやElectronとの違いは?
「PythonでUI」といえば Streamlit が人気ですが、pywebviewとは役割が異なります。
| 特徴 | pywebview | Streamlit | Electron |
| 形態 | 専用ウィンドウ(アプリ化) | ブラウザの1タブ | 専用ウィンドウ |
| 仕組み | OS標準エンジンを「借りる」 | サーバーを立てる | ブラウザを「同梱」する |
| 配布(.exe化) | 非常に得意(軽量) | 少し工夫が必要 | 得意だが巨大 |
| 柔軟性 | WebサイトもローカルもOK | Webアプリ専用 | デスクトップ専用 |
「Streamlitで作った便利なツールを、ブラウザではなく単体のアプリとして配布したい」 という場合、pywebviewが最高の「窓」になってくれます。
4. pywebviewの導入方法
インストールには pip install pywebview を使います。
ターミナルやコマンドプロンプトで以下のコマンドを実行してください。
pip install pywebviewこれだけで、最新のEdgeエンジンを活かしたモダンなデスクトップアプリ開発の準備が整います。
5. 【実践】アプリ作成コード例
パターンA:Webサイトをアプリ化する
既存のURL(例:Streamlitサイトなど)を専用のウィンドウで開きます。
import webview
# 特定のURLを「窓」の中に表示
webview.create_window('My App', 'https://example.com')
webview.start()
パターンB:PythonとJSを連携させる(ローカルアプリ)
UIのボタン操作でPythonの関数を実行し、結果を画面に返す構成です。
import webview
# Python側の処理
class Api:
def get_info(self):
return "これはPythonから返されたデータです"
api = Api()
html = """
<body style="font-family: 'Segoe UI', sans-serif; text-align: center; padding: 50px; background: #f0f2f5;">
<h1>Python × JS 連携デモ</h1>
<button onclick="run()">Pythonを呼び出す</button>
<p id="out" style="margin-top:20px; color:#0078d4; font-weight:bold;"></p>
<script>
async function run() {
const res = await pywebview.api.get_info();
document.getElementById('out').innerText = res;
}
</script>
</body>
"""
webview.create_window('API Demo', html=html, js_api=api)
webview.start()
6. まとめ
pywebviewは、「手軽さ」と「デザイン性」を両立したいエンジニアにとっての最適解です。
- インストールは
pip install pywebviewで完了。 - Windowsの最新エンジン (WebView2) で高速・軽量動作。
- Webサイトのアプリ化も、ローカルツールの開発も自由自在。
「Web制作のスキル」と「Pythonの便利さ」を掛け合わせて、あなただけのデスクトップアプリを作ってみませんか?

コメント