何のため?
研究用途に AI/MLアプリケーションを開発する際に、ユーザーが簡単に操作できるGUIが必要になることがある。特に、モデルのパラメータ調整や結果の可視化、プロトタイピング時に
公式ドキュメントと各プロジェクトのGitHubリポジトリを確認し、主要な変更点と導入のためのポイントを調査した結果
とりあえず今回は、 Gradio 使うことにしたけど ![]()
調査対象フレームワーク
以下の8つのフレームワークを比較対象:
正直知らないものがほとんどだったけど・・ ![]()
- Tkinter (標準ライブラリ)
- PyQt / PySide (Qt for Python)
- Kivy
- Dear PyGui
- Streamlit
- Gradio
- CustomTkinter
- PySimpleGUI
結論(先に言う)
- プロトタイプ / MLデモ: Gradio(v6系が安定、Blocks/ChatInterfaceが成熟)
- データ可視化 / ダッシュボード: Streamlit(Community Cloud と GenAI向け機能強化)
- 高速ネイティブUI / プロツール: Dear PyGui(GPUレンダリングで高速プロット)
- クロスプラットフォームなネイティブUI: PySide6(Qt for Python)
- 軽量で標準: Tkinter / CustomTkinter
- 維持方針注意: PySimpleGUI はプロジェクト終了/移行が発表されたため慎重に選定
ポイント
-
Gradio: 2025年時点で活発に開発が続き、
gradio@6.1.0等のリリースが行われている。Hugging Face Spacesとの統合、gr.Blocksとgr.ChatInterfaceの採用事例が増加。 -
Streamlit: 1.x 系が継続して改善。GenAI向けガイドや音声入力などの新ウィジェット追加。Streamlit Community Cloud の機能強化。
うちの研究開発では去年からよく聞く。だからこそ、他のを探したくなったりもする
-
Dear PyGui: GPUベースの高速描画、1M点オーダーのプロットで60fpsを出す実例があり、ドキュメント・デモが充実。
orin とかで使うならこういうのもあり?
- Kivy: 引き続きモバイル対応やSDLの更新(SDL3移行)などメンテナンスが活発。
- CustomTkinter: Tkinterをモダンにする軽量ライブラリとして活発に保守。
-
PySimpleGUI: 公式アナウンスでプロジェクトの縮小/終了とパッケージ配布の変化が報告されている。商用キー周りの注意。
使わないのが無難かも
詳細比較(6観点)
1) 人気度とコミュニティ
- Gradio: 40.9k⭐(GitHub) — 活発、企業/研究で採用増っぽいので、今回はこれにした
- Streamlit: 42.6k⭐ — データサイエンス界隈で圧倒的採用。背中の人も使ってた
- Dear PyGui: 15k⭐ — ゲーム/ツール用途で根強い
- Kivy: 18.8k⭐ — モバイル向け需要
- CustomTkinter: 13k⭐ — デスクトップの手軽さ重視
- PySimpleGUI: ~13.7k⭐(ただしプロジェクトの将来不確定)
- PySide / PyQt: Qt関連で別リポジトリだがプロダクションで堅牢
- Tkinter: 標準ライブラリ(スター数では測れないがユーザベースは広いみたい)
2) 学習曲線と使いやすさ
- Gradio / Streamlit / PySimpleGUI / CustomTkinter が易
- やっぱりサクッと書けるのがいいよね。とはいえ、書かせるようになったら・・どうなん?
- Dear PyGui / Kivy / Tkinter が中〜やや高め
- PySide(PyQt) が高(Qtの学習が必要)
3) パフォーマンス
- Dear PyGui: GPUで高速(大規模プロット向け)
- PySide / PyQt: ネイティブで高性能
- Kivy: 高(OpenGLベース)
- Gradio / Streamlit: Webサーバー型のためUIのレスポンスはネットワーク/ブラウザ依存
- Tkinter / CustomTkinter: 軽量だが描画は旧来の方式
4) クロスプラットフォーム
- ほぼ全て Windows/macOS/Linux 対応
- Kivy は iOS/Android も公式サポート
- Web系(Gradio/Streamlit)はブラウザ経由でプラットフォーム非依存
5) デザインとモダンさ
- Gradio / Streamlit / PySide / CustomTkinter / Dear PyGui が現代的
- Tkinter は
ttkで改善されたが古風な外観が残る
6) AI/MLとの相性
- Gradio: ベスト。関数をラップしてすぐにモデルデモを公開可能。Hugging Face 連携が強力。
- Streamlit: データ処理・可視化に強く、GenAI関連のテンプレやコンポーネントが増加。
- Dear PyGui: 高速可視化や大容量データのリアルタイム表示に向く。
- PySide/Tkinter: 手動で統合可能
速習サンプル(Gradio と Streamlit の最小例)
Gradio(Blocks を使ったチャット風デモ)
import gradio as gr
def reply(message, history=[]):
history = history + [("user", message)]
# ここでモデル呼び出し
history.append(("bot", f"Echo: {message}"))
return history, history
with gr.Blocks() as demo:
chat = gr.Chatbot()
txt = gr.Textbox(placeholder="メッセージを入力")
txt.submit(reply, [txt, chat], [chat, chat])
demo.launch()
Streamlit(最小ダッシュボード)
import streamlit as st
import numpy as np
import pandas as pd
st.title("簡単ダッシュボード")
val = st.slider("閾値", 0, 100, 50)
st.write("閾値の2乗:", val*val)
# DataFrame 表示
st.dataframe(pd.DataFrame(np.random.randn(10, 3), columns=list("ABC")))
導入のポイント
- Gradio/Streamlit は
pip install gradio/pip install streamlitで簡単に始められる。Gradio は Python 3.10 以上を要求する点に注意。- とはいえ、自分は最新派なので、あんまり気にしてない
- とはいえ、自分は最新派なので、あんまり気にしてない
- ネットワーク共有が必要な場合は
gr.Interface(...).launch(share=True)のような共有オプションが便利。 - ネイティブ配布(exe/app)を考える場合は PyInstaller 等のビルド手順が必要。
- PySimpleGUI は公式アナウンスを確認し、商用キーや配布方法に注意する。
テストと検証
- 本稿のデータは各公式ドキュメントと GitHub リポジトリの 2025年12月時点のページを参照している。
- 最新バージョンやリリースノートは各プロジェクトの
Releasesを確認してね
あとがき
個人的にはプロトタイプやMLモデル公開の観点では Gradio が使いやすく、社内PoCや共有には最適だと感じた。
Streamlit はダッシュボード用途で外せない選択肢。High-performance な可視化が必要なら Dear PyGui を検討してください。
とはいえ、 Vibe Coding でやるなら、Python/Typescript で柔軟にやってしまうってのもありだし、実際直近まで StreamLit でやってたやつをサクッと書き換えたりもした。
ただ、本当の研究者はまだ Vibe Coding 環境もってなかったりもするので、そういう場合には、選択肢として必要なのかな、なんて。応答待ってるより、サクサク書いて結果見たいってのはあるし
参考リンク
- Gradio: https://gradio.app/docs/ | GitHub https://github.com/gradio-app/gradio
- Streamlit: https://docs.streamlit.io/ | GitHub https://github.com/streamlit/streamlit
- Dear PyGui: https://dearpygui.readthedocs.io/ | GitHub https://github.com/hoffstadt/DearPyGui
- Kivy: https://kivy.org/doc/stable/ | GitHub https://github.com/kivy/kivy
- CustomTkinter: https://customtkinter.tomschimansky.com/ | GitHub https://github.com/TomSchimansky/CustomTkinter
- PySimpleGUI: https://github.com/PySimpleGUI/PySimpleGUI (プロジェクト状況に注意)
- Qt for Python (PySide6): https://doc.qt.io/qtforpython/ | GitHub https://github.com/qt/qtforpython