Flet(フレット)は、Pythonで、ウェブアプリ、デスクトップアプリ、モバイルアプリをサーバーサイドだけのコードで構築できるフレームワークです。
通常のWeb開発では、フロントエンド(React、Vueなど)とバックエンド(Flask、Djangoなど)を別々に作る必要がありますが、FletではPythonだけでUIもサーバーも一体化して作れます。
ReactやFlutter(Dart言語)と似た「コンポーネントベースの開発スタイル」をPythonだけで実現できます。
GoogleのFlutterをベースにしたFletコントロールを使えば、プログラムのUIを構築できます
引用元:https://flet.dev/docs/
。Fletは単なるFlutterウィジェットのラッピングにとどまりません。小さなウィジェットを組み合わせ、複雑な部分を簡素化し、UIのベストプラクティスを実装し、適切なデフォルトを適用することで、独自のタッチを加えます。これにより、開発者側で追加のデザイン作業をすることなく、スタイリッシュで洗練されたアプリケーションの外観を実現できます。

特徴
- PythonだけでUI開発:HTMLやJavaScriptを書かずに、PythonコードのみでボタンやテキストフィールドなどのUI部品を定義できます。
- クロスプラットフォーム対応:
- Webアプリ
- デスクトップアプリ(Windows、macOS、Linux)
- モバイルアプリ(Android、iOS ※現在ベータ)
- リアルタイム更新:
サーバーとクライアント間でWebSocket通信を使い、リアルタイムにUIが更新されます。 - シンプルな開発体験:
Flaskのような軽量なサーバー型フレームワークと組み合わせ可能。 - オープンソース:GitHubで公開されています(Apache-2.0ライセンス)。

FletにおけるFlutterとPythonの関係
項目 | 内容 |
---|---|
Flutter | UIレンダリングエンジン(Fletの内部で使用) |
Python | アプリロジックを書く言語(開発者が操作) |
つまりFletとは、PythonコードでFlutterベースのUIをサーバー経由で操作できるフレームワークです。
具体的な仕組み
- 開発者はPythonでFletの「コントロール」(UI部品)を記述する
- 例:ボタン、テキスト、リストビューなど
- Fletサーバー(内部にFlutterアプリを保持)がそのPythonコードを受け取る
- FletサーバーはFlutterエンジンを使って画面をレンダリング(描画)する
- クライアント(ブラウザやデスクトップアプリ)にWebSocketでUI情報をリアルタイム配信
図にすると:
[ Python (Fletコード) ]
↓
[ Flet Server (状態管理・ロジック実行) ]
↓ WebSocket通信
[ Flutter Client (UIレンダリング) ]
↓
[ ユーザーの画面に表示 ]
Flet公式による記述(抜粋)
公式サイトには次のように書かれています:
Flet UI is built with Flutter, so your app looks professional and can be delivered to any platform. Flet simplifies Flutter model by combining smaller “widgets” into ready-to-use “controls” with imperative programming model.
引用元:https://flet.dev/
つまり、
- Flutterで動くリッチなUIを
- Pythonのシンプルなコードで
- 命令型(imperative)で直接制御できる
というのがFletの特徴です。
Flutter単体 vs Flet の違い
比較項目 | Flutter単体 | Flet |
---|---|---|
使用言語 | Dart | Python(今後Go、C#も予定) |
UI操作対象 | コンポーネント指向 細かいFlutterウィジェット | コンポーネント指向 まとめられたFletコントロール |
実行場所 | 端末で直接実行 | サーバー上でFlutterが動き、WebSocket経由で表示更新 |
アプリ構成 | ネイティブアプリ型(スタンドアロン) | サーバー・クライアント型(クラウド志向) |
開発者負担 | 高め(柔軟だが細かい) | 低め(デザインやレイアウトが自動化) |
オフライン対応 | 可能(端末だけで完結) | 基本不可(サーバー常時稼働必要) |
以下、もう少し詳しく解説します。
使用言語
Flutter単体
- 開発言語はDart(ダート)。
- Googleが開発した高速・安全・モダンな言語。
- Flutterを使うには、Dartの習得がほぼ必須。
Flet
- 開発言語はPython(現状)、今後GoやC#なども予定(公式発表)。
- Dart不要で、より習得しやすいPythonだけでFlutter UIが使える。
- 将来的に多言語対応することで、幅広い開発者層をカバー予定。
ポイント:FletならDart未経験者でもモダンなUIが作れる。
UI操作対象
Flutter単体
- すべてのUI部品をFlutterウィジェット単位で操作。
- 細かい制御(レイアウト、アニメーション、状態管理)まで自分でやる必要がある。
- 柔軟性は非常に高いが、コード量が増えやすい。
- Flutterでは、すべてのUI要素は「Widget(ウィジェット)」というコンポーネント単位で作られます。
Flet
- 小さなFlutterウィジェットをFletコントロールにまとめて提供。
- レイアウトやイベント処理もシンプルに書けるよう最適化。
- デフォルト設定が洗練されており、デザイン作業が大幅に省略可能。
- FletではFlutterの小さなウィジェット群を、より使いやすくまとめた「Control(コントロール)」というコンポーネント単位でUIを組み立てます。
ポイント:FletではFlutterの小さなウィジェット群を、より使いやすくまとめた「Control(コントロール)」というコンポーネント単位でUIを組み立てるため、Flutterよりレイアウト・スタイル設計がしやすい。
実行場所
Flutter単体
- 端末(スマホ・PC・Webブラウザ)に直接アプリをインストール・実行。
- つまり、Flutterエンジン(Skia)がローカルで動く。
- ネイティブアプリに近い超高速描画性能が特徴。
Flet
- Fletサーバー側でFlutterが動作し、
- クライアント(ブラウザなど)とはWebSocketでリアルタイム通信して画面を更新。
- クライアント側は「表示」と「イベント送信」だけ担当する超軽量アーキテクチャ。
ポイント:Fletはサーバー必須。Flutter単体はオフラインでもOK。
アプリ構成
Flutter単体
- 1台の端末上にアプリ全体(UI・ロジック)が直接載る。
- iOS/Android/Web/Windows/Mac/Linuxそれぞれにビルドできる(マルチターゲット)。
- ネット接続なしでも動作するスタンドアロン型。
Flet
- サーバーとクライアントに役割分担される構成。
- サーバー:アプリの状態管理、UI更新の指示
- クライアント:UI表示とユーザー操作イベントの受け取り
- クラウドアプリに向いている(例:社内ツール、管理ダッシュボード)
ポイント:Fletは「サーバー⇔クライアント」方式なので、スケールさせやすいが常時接続が必要。
主な用途例
- ダッシュボード
- ツール系アプリ
- 簡易CMS
- 業務用小規模アプリ
- プロトタイピング
- IoT制御パネル など
関連
Fletのサンプルコードについては、こちらに記載しています。
公式ドキュメント
- Flet, Inc.(米国)
- 公式情報:
- Flet公式サイト
https://flet.dev/ - GitHubリポジトリ:Flet GitHub
ライセンス:Apache-2.0 license
https://github.com/flet-dev/flet - 公式ドキュメント(英語)
https://flet.dev/docs/
- Flet公式サイト
参考
- Flutter公式サイト「Flutterとは」
コメント