デスクトップGUIフレームワーク(ネイティブ/クロスプラットフォーム)
| 名前 | 主な用途(カテゴリ) | 特徴 |
|---|---|---|
| Tkinter | デスクトップGUI(標準ライブラリ) | Pythonに標準搭載のGUIライブラリ。簡易なデスクトップアプリ作成に便利。ボタンやラベル等基本ウィジェットを提供。学習コストが低く小規模向きだが、外観はやや古典的。 |
| CustomTkinter | デスクトップGUI(Tkinter拡張) | Tkinterをモダンなデザインに拡張したUIライブラリ。ダークモード対応やカスタムテーマにより洗練された外観のウィジェットを提供。既存Tkinterコードをほぼそのままモダン化可能。 |
| ttkbootstrap | デスクトップGUI(Tkinter拡張) | Tkinter/ttk用のテーマ拡張ライブラリ。Bootstrap風のフラットデザインテーマを複数備え、簡単にモダンな見た目にできる。ダーク/ライト含め十数種のテーマを内蔵。 |
| PyQt / PySide | デスクトップGUI(Qtバインディング) | Qt (C++製クロスプラットフォームGUIフレームワーク) のPythonバインディング。PyQtはGPLと商用ライセンス、PySide(Qt for Python)はLGPLで提供。Qtの豊富なUI部品や高性能さをPythonから利用可能。クロスプラットフォームで高度なGUI構築が可能。※PyQtは商用利用時ライセンス注意。 |
| wxPython | デスクトップGUI(wxWidgetsバインディング) | C++製GUIツールキットwxWidgetsのPythonバインディング。Windows/Linux/Macでネイティブに近い外観のGUIを構築可能。オープンソースで実績が長く、汎用的なモダンUI部品を提供。 |
| PyGObject (GTK) | デスクトップGUI(GTKバインディング) | GNOME系のGUIツールキットGTKの公式Pythonバインディング。Gtkボタン等のネイティブウィジェットをPythonから利用可能。Linux中心にWindows/Macも対応。PyGTKの後継で現在はこちらが主流。 |
| Toga | デスクトップGUI(ネイティブラッパー) | BeeWareプロジェクトのクロスプラットフォームGUIフレームワーク。各OSのネイティブウィジェットをPythonから利用し、Windows/Mac/LinuxはGTK、iOS/Androidにも対応。純Pythonで書けば各プラットフォームのネイティブGUIとして動作する。 |
| Kivy | デスクトップGUI(マルチプラットフォーム) | オープンソースのGUIフレームワークで、デスクトップだけでなくモバイルアプリ開発にも適する。OpenGLベースでマルチタッチUIやアニメーションに強く、Windows/Linux/Mac/Android/iOSを単一のコードベースでサポート。マテリアルデザイン対応の拡張(KivyMD)も存在。 |
| DearPyGui | デスクトップGUI(GPU即時モード) | C++製のDear ImGuiをベースにしたPython GUIライブラリ。GPUアクセラレーションによる高速描画が特徴。大量のプロットやリアルタイム更新が必要なツール向けに最適。ImmediateモードUIだが、DearPyGui側でRetainedモード風に扱えるよう工夫されている。 |
| PySimpleGUI | デスクトップGUI(簡易GUI構築) | GUI初心者にも優しいシンプルなAPIで人気を博したライブラリ。既存のスクリプトにGUIを数行で追加できる手軽さが魅力。実態はtkinter、PySide6、wxPython、Remi(Web)等 4種のGUIバックエンドを統一的に扱える ラッパー。※2025年に開発終了が発表され現在は後述のFreeSimpleGUIへ移行推奨。 |
| FreeSimpleGUI | デスクトップGUI(簡易GUI構築) | PySimpleGUIの事実上の後継プロジェクト。完全無料・オープンソースで維持されている。基本仕様はPySimpleGUIと同様で、tkinter/Qt/Remi/wxに対応したポータブルなGUI構築を提供。 |
| Gooey | デスクトップGUI(CLIラッパー) | コンソールのPythonスクリプトにデコレータ一つ付与するだけでGUIダイアログを自動生成できるユニークなライブラリ。argparseの引数定義から各種入力ウィジェット(テキストボックス、ファイル選択等)を生成し、非プログラマでも使いやすいGUIを提供。内部ではwxPythonを利用し、クロスプラットフォーム対応。 |
| Enaml | デスクトップGUI(宣言的UI) | 独自の宣言型記法(PythonのDSL)でGUIを記述できるフレームワーク。Qtをバックエンドに高品質なクロスプラットフォームGUIを構築可能。UIレイアウトとデータモデルのバインディングを自動化し、最小の労力でプロ仕様のインターフェースを作成することを目指す。 |
| Edifice (PyEdifice) | デスクトップGUI(宣言的UI) | Qt(PySide6/PyQt6)をバックエンドとするReactive/宣言的GUIフレームワーク。React.jsに影響を受けて設計されており、関数コンポーネントやフックなどReactライクな書き方でネイティブGUIを構築可能。ホットリロードによる高速開発もサポート。100% Python実装で言語間の壁がなく、HTMLやQMLを用いずPythonだけでUIとロジックを記述できる点が特徴。 |
| PyForms | デスクトップGUI(MVCフレームワーク) | モジュール化や再利用性に重きを置いたGUIアプリ開発フレームワーク。複数の環境に対応し、デスクトップGUI以外にコンソールやWeb上でも同一コードを動作させられる設計(内部的にPyQt/OpenGLやRemiを利用)。MVCパターンで開発可能。開発元の更新は停滞気味だが一部コミュニティで利用あり。 |
デスクトップGUIフレームワーク(Web技術活用・ハイブリッド)
| 名前 | 主な用途(カテゴリ) | 特徴 |
|---|---|---|
| Eel | デスクトップGUI(HTML+Python) | 「Python+ブラウザ」でデスクトップアプリを作る小型ライブラリ。ElectronのようにHTML/JSでGUIを構築し、バックエンド処理をPythonで実装。ローカルに組み込みWebサーバを立てて、Chromeなどのブラウザまたは組み込みChromiumでページを表示。Python側からブラウザを起動するだけでなく、双方向に関数呼び出しも可能。 |
| PyWebview | デスクトップGUI(Webビューラッパー) | Webページをネイティブアプリのウィンドウとして表示する軽量ラッパー。各OSの組み込みWebビュー(WindowsではIE/WebView2、MacではWebKitなど)を利用し、HTML/CSS/JSで作成したUIをPythonアプリ内で表示。Web技術でリッチなUIを実現しつつ、PythonコードからJSとのやりとりも可能。 |
| Pyloid | デスクトップGUI(Webビューラッパー) | Python向けのElectron代替を目指すフレームワーク。内部に軽量のWebレンダリングエンジンを持ち、HTML/JSのフロントエンドとPythonバックエンドを統合。React/Vue/Svelteなど任意のWebフロントエンドと、Flask/FastAPIなど任意のPythonサーバを組み合わせてデスクトップアプリを構築可能。TauriのPython版的な位置付けで、Web技術利用のデスクトップアプリ開発を簡素化する。 |
| Flet | デスクトップ&WebGUI(Flutterラッパー) | Flutter(GoogleのUIフレームワーク)をPythonから操作するクロスプラットフォームUIライブラリ。Pythonだけでモバイル・デスクトップ・Webアプリを構築可能。PythonコードでUI構築するとバックエンドでFlutterが動作し、高性能でリッチなUIを実現。リアルタイムにUI更新が可能で、マルチプラットフォーム対応。Flutterエンジンを用いるため見た目はモダンだが、パッケージサイズはやや大きめ。 |
| Remi | デスクトップ&WebGUI(HTMLレンダリング) | PythonだけでGUIを記述し、それをブラウザ上にレンダリングするライブラリ。GUIはすべてHTML+CSSに変換され、自動起動するWebブラウザ上で表示。ユーザはHTMLを直接書く必要がなく、Pythonのクラスでボタンやテキストボックス等を定義可能。生成されたUIはローカルホスト経由で表示されるため、ネットワーク経由でリモート操作することも容易。 |
| Brython | ブラウザ実行環境(Python→JS) | 「Browser Python」の名が示す通り、JavaScriptの代替を目指したブラウザ上のPython実装。PythonコードをJavaScriptにトランスパイルし、ブラウザでそのまま実行可能にする。軽量だがCPython互換性は限定的で、一部の標準ライブラリが動作。DOM操作もPythonで記述可能。PyScript登場以前から存在する実績あるプロジェクト。 |
Webアプリ向けフレームワーク(バックエンド/フルスタック系)
| 名前 | 主な用途(カテゴリ) | 特徴 |
|---|---|---|
| Flask | Webアプリ(マイクロフレームワーク) | シンプル&軽量なPython製マイクロフレームワーク。最小限のコードでWebアプリを素早く起動できる手軽さが魅力。ルーティング、Jinja2テンプレート、開発用サーバ等を内蔵。拡張も豊富で、小〜中規模WebサイトやAPIサーバーに適する。 |
| Bottle | Webアプリ(マイクロフレームワーク) | 単一ファイルに収まる超軽量フレームワーク。外部依存ゼロで、Python標準ライブラリだけで動作。内蔵の簡易サーバやテンプレート機能を持ち、小規模Webサービスや組み込み用途に最適。WSGIに準拠し大抵の環境で動作。 |
| CherryPy | Webアプリ(マイクロフレームワーク) | オブジェクト指向アプローチのミニマルなWebフレームワーク。組込みWebサーバを持ち、2002年から開発が続く成熟プロジェクト。HTTPリクエスト処理に特化し、データベースやテンプレート機能は敢えて提供せずシンプルさ重視。NetflixやHuluでも一部で採用実績がある堅実なフレームワーク。 |
| Pyramid | Webアプリ(フルスタック/柔軟) | 柔軟で拡張性の高いWebフレームワーク。小規模から大規模まで対応可能で、必要な機能だけを選んで構成できる。マイクロフレームワーク(Flask)とフルスタックフレームワーク(Django)の中間的存在といえる。URLディスパッチ、ビュー、テンプレート、認証等の一般的機能を一通り備えつつ、不要な部分はシンプルに保てる設計。 |
| Tornado | Webアプリ(非同期サーバ) | 非同期I/Oに基づくスケーラブルなWebフレームワーク&サーバ。もともとFacebook社に買収されたFriendFeed社によって開発され、高同期(High-concurrency)なリアルタイムWebサービス向けに最適化。大量の同時接続や長時間の接続を要するアプリ(チャット、ストリーミング等)に向く。WebSocketサポートや自前のイベントループを持ち、高いパフォーマンスを発揮。 |
| Django | Webアプリ(フルスタック) | 非常に人気の高いフルスタックWebフレームワーク。2005年初版公開以来、堅牢性と充実した機能群で広く普及。MTVアーキテクチャに従い、ORMによるDB操作、テンプレートエンジン、認証機能、管理サイトなど大規模開発に必要なものを全て内包。InstagramやPinterest等多数の大型サイトで採用実績あり。規約に沿った開発で生産性が高い反面、自由度は高くない。 |
| FastAPI | Webアプリ(API専用フレームワーク) | モダンで高速なAPIサーバー構築に特化したフレームワーク。高性能非同期サーバー(Uvicorn)上で動作し、非常に高いスループットを誇る。型ヒントから自動的にOpenAPIドキュメントを生成するなど開発者体験も優秀。2018年登場と新しいが急速に普及し、今や月間ダウンロード数900万超。API構築専用のためビューテンプレート等は持たないが、フロントエンドと組み合わせてREST/GraphQLサービスに最適。 |
| Sanic | Webアプリ(API専用フレームワーク) | 「速さ」を追求した非同期Webフレームワーク。Flaskライクな使い勝手でありながら、イベントループベースで高パフォーマンスを実現。大量リクエストを捌く性能に優れ、近年はFastAPIに次ぐ高速フレームワークとして注目。公式にはWebサーバ(HTTPサーバ)としての役割も担い、スタンドアロンで利用可能。 |
Webアプリ向けフレームワーク(フロントエンド/UI構築系)
| 名前 | 主な用途(カテゴリ) | 特徴 |
|---|---|---|
| Reflex (旧名Pynecone) | Webアプリ(フルスタックPython) | フロントエンドとバックエンドを100% Pythonで記述できる新進のフレームワーク。UIコンポーネントから状態管理、デプロイ設定まで全てPythonで定義可能で、ReactやJSの知識不要。裏側ではPythonコードをもとにReactフロントエンド+FastAPIバックエンドが生成される仕組み。60種以上のビルトインUIコンポーネントを備え、外部のReact部品もラップして利用可能。2022年開発開始ながら急速にスターを伸ばしている。 |
| NiceGUI | Webアプリ(フロントエンド簡易構築) | ブラウザをフロントエンドとしてPythonコードから直接UIを記述できるフレームワーク。FastAPI上に構築されており、ボタンや対話式フォーム、3D描画やプロットなど多彩なコンポーネントを簡単に配置可能。裏側のWeb開発の煩雑さを隠蔽し、ロボット制御やIoTダッシュボードなど幅広い用途でPythonに専念してUI開発できる。またElectron的にデスクトップネイティブウィンドウとして起動する機能もあり、Web/デスクトップ両対応のPython GUIとして人気。 |
| Streamlit | Webアプリ(データアプリ/ダッシュボード) | データサイエンスや機械学習モデルのデモ用インタラクティブWebアプリを素早く構築できるライブラリ。Pythonスクリプト内にst.buttonやst.chart等でウィジェットやプロットを記述すれば、即座にブラウザ上にGUIが生成される。複雑なWeb開発知識は不要で、1枚のPythonスクリプトからダッシュボード公開まで完結可能。Community Cloudによる無料ホスティングも提供。データ可視化やプロトタイピングに広く利用される。 |
| Gradio | Webアプリ(データアプリ/MLデモ) | Hugging Face社による、機械学習モデルやAIアプリのデモUI作成に特化したフレームワーク。シンプルなPythonコードでテキスト入力、画像アップロード、モデル推論結果表示などのインタラクティブUIを生成可能。近年急速に開発が進んでおり、BlocksやChatInterfaceなど高度なUIレイアウトも成熟。生成したWebアプリはローカル実行のほか、ワンタッチでHugging Face Spacesにデプロイして共有可能。 |
| Panel | Webアプリ(データアプリ/ダッシュボード) | HoloVizプロジェクトによるオープンソースライブラリで、データ可視化ダッシュボードや複雑なWebアプリを純Pythonで構築するために設計されている。様々なプロットライブラリ(BokehやMatplotlibなど)やウィジェットを統合してダッシュボードを作成可能。Notebook内からインタラクティブGUIを作り、そのままStandaloneサーバーとして公開もできる柔軟性を持つ。 |
| Plotly | Webアプリ(プロットライブラリ) | 高品質な対話型グラフ描画ライブラリ。ブラウザ上にレンダリングされるため、ツールチップ表示やズームなどの操作が可能なグラフをPythonから簡単に生成できる。Plotly社による商用プラットフォームもあるが、ライブラリ自体はオープンソースで、Plotly Expressなど高レベルAPIも提供。WebだけでなくJupyter Notebook上でも広く使われる。 |
| Dash | Webアプリ(データ可視化ダッシュボード) | Plotly社が開発したデータ可視化に特化したWebアプリケーションフレームワーク。Pythonだけでレイアウトやコールバック(イベント処理)を記述でき、裏側でReactを用いた洗練されたダッシュボードを構築。Plotlyグラフの埋め込みはもちろん、各種HTMLコンポーネントやダッシュボード用部品を備える。金融や研究分野でコードから使えるBIツールとして人気。 |
| Bokeh | Webアプリ(プロット/ダッシュボード) | ブラウザ向けのインタラクティブ可視化ライブラリ。簡潔なPythonコードで多彩なグラフィックスを生成でき、数十万点規模のデータやストリーミングデータに対しても高い対話性能を発揮。Bokehサーバーを用いればウィジェットとプロットを組み合わせた対話型ダッシュボードやWebアプリを構築可能。 |
| Shiny for Python | Webアプリ(データ可視化ダッシュボード) | R言語で人気のShinyのPython実装版。リアクティブプログラミングモデルにより、入力ウィジェットと出力プロットを自動連動させられるのが特徴。Starletteベースの非同期Webスタック上に構築されており、大規模なダッシュボードから小規模ツールまで幅広く対応。データサイエンス分野での対話型データ分析アプリに適する。Posit社(RStudio)が開発。 |
| Anvil | Webアプリ(フルスタックGUI構築) | ドラッグ&ドロップのUIエディタとPythonだけでフロントエンド+バックエンドを構築できるプラットフォーム。Webベースの統合開発環境で、サーバサイドPython・クライアントサイドPython(ブラウザ上はSkulpt実行)・DB・ユーザ認証まで一気通貫。オープンソースのAnvil Runtimeも公開され、オンプレミスでAnvilアプリをホスト可能。ノーコードに近い感覚で本格的なWebアプリ開発が可能。 |
| FastHTML | Webアプリ(フロントエンド簡易構築) | 近年登場した、HTML UIを純Pythonで記述するための軽量フレームワーク。要素をPythonのクラス/関数として定義し、HTMX等と連携して動的なWebインターフェースを構築する。従来のテンプレートやJSの代わりに、PythonコードでそのままHTMLが生成されるスタイルが特徴。小規模なWebツールから複雑なアプリまで対応し、生産性向上を狙う。 |
| Mesop | Webアプリ(フロントエンド簡易構築) | 2025年にGoogleがオープンソース公開したPython製UIフレームワーク。宣言的アプローチでWebアプリを素早く構築することを目的とし、デモや内部ツール開発に適する。Google社内でAIシステムのUI構築に使われた実績がある。 |
| JustPy | Webアプリ(コンポーネント指向) | コンポーネントベース・オブジェクト指向の高水準Webフレームワーク。前面のJavaScriptコーディング不要で、PythonだけでUI部品とその動作を定義できる。タグ構造をPythonオブジェクトで表現し、イベントコールバックもPython関数で記述。内部でStarletteを使用しWebSocketでフロントと通信することでリアルタイムUI更新を実現。※開発者が後述のNiceGUIへ関与し始めたため、2023年頃プロジェクトはSunset宣言。 |
| Lona | Webアプリ(フルPython・リアクティブ) | 一切JavaScriptを書かずにレスポンシブWebアプリを構築できるフレームワーク。サーバ・クライアント双方をPythonで記述し、必要に応じ自動でJSの力も借りて動的UIを実現。ビューごとにself-containedなPythonクラスを書くだけで、内部でdiff/patchを生成してブラウザ表示を更新する仕組み。類似のRemiやJustPyと比べ洗練されており、高度なUIもPythonだけで記述可能。 |
| PyWebIO | Webアプリ(スクリプト→Web化) |
ブラウザを「高機能テキストターミナル」化するユニークなライブラリ。input()やput_text()等の関数でブラウザ入出力を行い、対話型シェル感覚でWebアプリを作成可能。HTML/JSの知識不要で、あたかもターミナルスクリプトを書くようにアプリを構築できる。小規模な社内ツールやフォーム作成に向いており、既存Flask等のアプリに組み込むことも可能。 |
| PyScript | ブラウザ実行環境(CPython+HTML) | Anaconda社が2022年に発表した、ブラウザ上でPythonコードをそのまま実行するためのフレームワーク。HTML中に<py-script>タグでPythonを書けるようにし、Pyodide(後述)上で実行。NumPyやPandas等主要ライブラリもブラウザで動作。PythonとHTML/CSSを組み合わせてリッチなWebアプリを構築でき、教育用途からウェブツールまで幅広く活用が期待される。 |
| Pyodide | ブラウザ実行環境(CPython移植) | CPythonインタpreter自体をWebAssemblyにコンパイルしたプロジェクト。ブラウザ上でほぼフル機能のPython環境が動き、micropipを使って多数のPyPIパッケージをインストール・実行可能。Web Worker内で動かすことで、ブラウザ上でPythonによるデータ分析や機械学習推論も可能にする。PyScriptも内部でPyodideを利用。 |