Fletとは?Pythonだけでアプリを作れるUIフレームワークの特徴・インストール・使い方
Fletは、UIをPythonのコードだけで記述し、Web・デスクトップ・モバイルの3種類に同じコードから出力できるオープンソースのフレームワークです。画面の描画にはFlutterを使いますが、開発者がDartやHTML・CSS・JavaScriptを書く必要はありません。本記事では、Fletの意味とFlutterとの違い、インストールから最小アプリの実行、そして旧バージョンのコードが動かなくなったときの移行ポイントまでを、2026年6月時点の最新版(v0.85系)に合わせて解説します。
目次
まとめ:FletはPython1つでクロスプラットフォームUIを書ける
- FletはPythonだけでWeb・デスクトップ・モバイルのアプリを作れるUIフレームワーク。画面描画はFlutterが担う。
- 導入は
pip install 'flet[all]'、実行はflet run(ホットリロード対応)。動作にはPython 3.10以上が必要。 - アプリの起動は現行版では
ft.run(main)。古い記事にあるft.app(target=main)やft.UserControlはすでに廃止・変更されているため、そのままでは動かない。 - 「1つのコードで複数プラットフォームに出せる」「フロントエンド言語を覚えなくてよい」点が最大の利点。
以下で、意味・違い・導入・最小アプリ・移行の順に具体的なコードとともに見ていきます。
Fletとは何か(意味・Flutterとの違い・対応環境)
Fletの意味とできること
Fletは「Flet=Flutter+let(〜させる)」に由来し、GoogleのUIツールキットFlutterをPythonから扱えるようにしたフレームワークです。ボタンやテキスト入力、表、グラフといったUI部品(コントロール)をPythonのオブジェクトとして組み立てるだけで、ネイティブに近い見た目の画面が作れます。用途はデータ入力フォーム、社内向けダッシュボード、簡単な管理ツールなど、フロントエンド専任者がいなくてもPython開発者だけで完結させたい場面に向きます。
FlutterとFletの違い、どの言語で書くのか
よく検索される「FlutterとFletの違い」は、記述する言語の違いで整理できます。FlutterはDartで書くUIツールキットで、Fletはそのレンダリング機能をPythonから呼び出す仕組みです。つまり開発者が書くのはPythonのみで、内部でFlutterが画面を描きます。同じPython製GUIでも、デスクトップに特化したQtベースの選択肢を比べたい場合は【完全ガイド】PySide6とは何か?Qt for Pythonの概要、特徴、用途を初心者向けに詳しく解説も判断材料になります。
| 観点 | Flet | Flutter |
|---|---|---|
| 記述言語 | Python | Dart |
| 対応先 | Web・デスクトップ・モバイル | Web・デスクトップ・モバイル |
| 描画エンジン | Flutter | Flutter |
| 主な向き先 | Python資産の活用・社内ツール | 本格的なモバイルアプリ |
描画エンジンが同じため見た目の傾向は近く、Pythonの資産(データ処理や機械学習ライブラリ)とそのまま組み合わせられる点がFlet側の強みになります。
対応プラットフォームと日本語表示
Fletは1つのコードから、WebアプリのほかWindows・macOS・LinuxのデスクトップアプリとiOS・Androidのモバイルアプリを生成できます。文字はUnicodeで扱うため、日本語のテキストやラベルも追加設定なしでそのまま表示されます。動作条件はPython 3.10以上です(v0.85系の要件。最低要件は将来のリリースで上がる場合があります)。
Fletのインストールと実行方法
pipでのインストール
FletはPyPIで配布されているため、pipで導入します。全機能を含める場合は次のコマンドを実行します。
pip install 'flet[all]'
プロジェクトごとに独立させたいときは、先にPythonの仮想環境を作ってから入れると依存関係が混ざりません。仮想環境は python -m venv venv で作成し、有効化します。
python -m venv venv
source venv/bin/activate
Windowsの場合の有効化は venv\Scripts\activate です。
flet runでの実行とホットリロード
アプリを起動する専用コマンドが flet run です。ファイルを指定して実行でき、コードを保存すると画面へ即時反映するホットリロードが働くため、開発中の確認が速くなります。
flet run main.py
新規プロジェクトの雛形は flet create プロジェクト名 で作成できます。生成された main.py を編集して flet run するのが標準的な流れです。
バージョン確認とアップデート
Fletは0.2x系から0.85系へと短期間でAPIが変わってきたフレームワークで、2026年6月時点の最新は v0.85 系です。導入済みのバージョンは次のコマンドで確認します。
flet --version
更新は pip install --upgrade flet で行います。バージョン間で記法が変わることがあるため、細かい仕様は公式ドキュメントで最新を確認してください。
最小アプリで学ぶFletの基本
Hello, Flet!(ft.runで起動する)
最小構成のアプリは、ページを受け取る main 関数を定義し、最後に ft.run(main) で起動します。
import flet as ft
def main(page: ft.Page):
page.title = "Hello Flet"
page.add(ft.Text("Hello, Flet!"))
ft.run(main)
page はアプリの表示領域を表すオブジェクトで、page.add() にコントロールを渡すと画面へ並びます。ここでは文字を表示する ft.Text を追加しています。
ボタンとイベント処理
ユーザー操作に反応させるには、コントロールにイベントハンドラーを結びつけます。ボタンをクリックすると文字が変わる例です。
import flet as ft
def main(page: ft.Page):
text = ft.Text("クリック前")
def on_click(e):
text.value = "クリックされました"
page.update()
page.add(text, ft.Button("押す", on_click=on_click))
ft.run(main)
ハンドラー内でコントロールの値を書き換え、page.update() で画面へ反映します。ボタンは現行版では ft.Button で作れます。
デバッグとアプリの終了
Visual Studio CodeなどのエディタでPythonのデバッガを使えば、行にブレークポイントを置いて変数の値を確認しながら実行できます。IDEの機能を整えたい場合はPyCharm 2025.3 の新機能まとめ(統合 IDE・リモート Jupyter・uv 対応など)も参考になります。実行中のアプリを終了するときは、デスクトップ実行ならウィンドウを閉じる、ターミナル実行なら Ctrl+C でプロセスを止めます。
旧バージョンのコードがエラーになるときの移行ポイント
Fletは0.2x系以降の刷新でAPIが段階的に変わり、ネット上に残る古いサンプルはそのままでは動かないことが増えました。ここは他の入門記事が古いままになりがちな部分なので、現行版との差分を押さえておきます。
ft.app(target=main) から ft.run(main) へ
以前はアプリの起動に ft.app(target=main) と書きましたが、現行版のエントリポイントは ft.run(main) です。古いコードを見つけたら、まずこの1行を置き換えると起動できるようになるケースが多いです。
UserControl廃止後のカスタムコントロール
再利用部品を作るために使われていた ft.UserControl は廃止されました。現行版では ft.Container などの既存コントロールを継承して部品化するのが基本で、簡単なものはコントロールを返す関数にまとめる方法もあります。ft.UserControl を継承した古いコードは、継承元を既存コントロールへ変更する必要があります。
よくあるエラーとGitでのコード管理
「unknown control」のようなエラーは、そのバージョンに存在しない、または名称が変わったコントロールを指定したときに出ます。バージョンを確認し、公式ドキュメントで現行の名称に合わせて直します。試行錯誤で変更が増えるので、git init でリポジトリ化し、動いた時点でコミットを残しておくと元に戻しやすくなります。基本操作はGitコマンド一覧|用途別早見表とよく使う基本コマンドの使い方を解説にまとめています。
よくある質問(FAQ)
FletとFlutterの違いは何ですか?
記述する言語が違います。FlutterはDartで書くUIツールキット、FletはそのFlutterをPythonから使えるようにした仕組みです。Fletでは開発者はPythonだけを書き、描画をFlutterが担います。
Fletはどの言語で書きますか?
Pythonです。内部ではFlutter(Dart)が動きますが、開発者が書くのはPythonのみで、Python 3.10以上が必要です。
Fletを学ぶメリットは何ですか?
1つのPythonコードからWeb・デスクトップ・モバイルへ出力でき、HTML・CSS・JavaScriptといったフロントエンドの言語を別途覚えなくてよい点です。Pythonのデータ処理や機械学習の資産を、そのまま画面付きのツールにできます。
Fletのインストールと実行のコマンドは何ですか?
導入は pip install 'flet[all]'、起動は flet run main.py です。新規プロジェクトの雛形は flet create プロジェクト名 で作成します。
古いFletのコード(ft.app)が動かないのはなぜですか?
0.7x以降の刷新で起動方法が ft.run(main) に変わり、ft.UserControl も廃止されたためです。古いチュートリアルのコードは、起動行の置き換えとカスタムコントロールの書き換えが必要です。