📖

PythonでWebアプリ作れるやつのまとめ(7選)

2023/01/26に公開約3,200字

概要

最近、pythonでUI部分も含めたWebアプリ作成ツールがいろいろ出てきているので、知っている限りでまとめてみようと思います。

各ツールの紹介

Pynecone

https://github.com/pynecone-io/pynecone

  • 2022年12月にリリースされた比較的新しめのツール
  • 先発のStreamlitやDashと異なり、汎用的なアプリが作れることを目指している
  • UIの作り方がReactっぽい、コンポーネント指向、propsやstateという概念がある
  • CSSでスタイルを指定できる
  • O/Rマッパーが用意されて、データベースとのやりとりも記述できる
  • クラウドにデプロイする機能ができる予定

DALL-Eを使った画像生成アプリのサンプル

dalle

Flet

https://github.com/flet-dev/flet

  • FlutterをUIに使用しているツール
  • Flutterを使用しているのでWebアプリだけでなくモバイルアプリやデスクトップアプリも作れる
  • GithubやGoogleを使った認証機能がビルドインされている
  • Fly.ioにホストできる

Fletで作られたTrelloクローン

trelli

Streamlit

https://github.com/streamlit/streamlit

  • 今回紹介する中で一番最初に出たやつ
  • グラフ描画や表の扱いに強い
  • Streamlitで作成したコードをクラウド上にデプロイできるサービスがある
  • ギャラリーが豊富
  • pandasデータからインタラクティブにグラフを作成するstreamlit-aggridも便利そう

Streamlitデモ動画

stremlit_overview

Dash

https://github.com/plotly/dash

  • データビジュアライゼーションに特化したツール
  • Plotly.js、React、Flaskを使用
  • 法人向けにDashエンタープライズというクラウドサービスでアプリの作成や管理が簡単にできる

データビジュアライゼーションのデモ

data_visualization1

Panel

https://github.com/holoviz/panel

  • データビジュアライゼーションに特化したツール
  • ベースとなるWebフレームワークを切り替えられる(Tornade/Flask/Django/FastAPI)
  • スタンドアロンアプリも作成可能
  • Jupyterに組み込める

データビジュアライゼーションのデモ

data_visualization2

NiceGUI

https://github.com/zauberzeug/nicegui

  • メッシュなどの3Dデータを扱うことができる
  • JSのコードを埋め込める
  • 既存のFastAPIにNiceGUIでUIを表示するエンドポイントを組み込める
  • カスタムのVueコンポーネントを組み込むことができる

NiceGUIのUIイメージ

gui

Gradio

https://github.com/gradio-app/gradio

  • 機械学習やデータサイエンスのデモ構築を目的としたUI作成ツール
  • 最近流行りのstable-diffution-webuiがこれを使用している
  • UIにはSvelteを使用
  • JSのコードを組み込める
  • CSSでスタイルを設定できる

画像を使ったデモ

image_demo

まとめ

いろいろ調べてみて、以下のような感じで分類できるかなと思いました。

  • 汎用アプリ系
    • Pynecone(コンポーネント指向、Reactっぽい)
    • Flet(モバイルもいける)
  • 機械学習/データサイエンスのデモ作る系
    • Stremlit(長く使われている、クラウドサービスもある)
    • Gradio(機械学習のタスク毎のデモが用意されていて分かりやすい、SD-Webuiのプラグイン作るならこれ)
    • NiceGUI(3Dとか、既存のFastAPIやVueコンポーネントを組み込める)
  • データビジュアライゼーション系
    • Dash
    • Panel

Discussion

ログインするとコメントできます