MENU
Language

Fletとは?Pythonで、ウェブアプリ、デスクトップアプリ、モバイルアプリをサーバーサイドだけのコードで構築できるフレームワーク。Flutterの違いは

Flet(フレット)は、Pythonで、ウェブアプリ、デスクトップアプリ、モバイルアプリをサーバーサイドだけのコードで構築できるフレームワークです。

通常のWeb開発では、フロントエンド(React、Vueなど)とバックエンド(Flask、Djangoなど)を別々に作る必要がありますが、FletではPythonだけでUIもサーバーも一体化して作れます
ReactやFlutter(Dart言語)と似た「コンポーネントベースの開発スタイル」をPythonだけで実現できます。

GoogleのFlutterをベースにしたFletコントロールを使えば、プログラムのUIを構築できます
。Fletは単なるFlutterウィジェットのラッピングにとどまりません。小さなウィジェットを組み合わせ、複雑な部分を簡素化し、UIのベストプラクティスを実装し、適切なデフォルトを適用することで、独自のタッチを加えます。これにより、開発者側で追加のデザイン作業をすることなく、スタイリッシュで洗練されたアプリケーションの外観を実現できます。

引用元:https://flet.dev/docs/
出典:https://flet.dev/
目次

特徴

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

FletにおけるFlutterとPythonの関係

項目内容
FlutterUIレンダリングエンジン(Fletの内部で使用)
Pythonアプリロジックを書く言語(開発者が操作)

つまりFletとは、PythonコードでFlutterベースのUIをサーバー経由で操作できるフレームワークです。

具体的な仕組み

  1. 開発者はPythonでFletの「コントロール」(UI部品)を記述する
    • 例:ボタン、テキスト、リストビューなど
  2. Fletサーバー(内部にFlutterアプリを保持)がそのPythonコードを受け取る
  3. FletサーバーはFlutterエンジンを使って画面をレンダリング(描画)する
  4. クライアント(ブラウザやデスクトップアプリ)に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
使用言語DartPython(今後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のサンプルコードについては、こちらに記載しています。

公式ドキュメント

参考

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

AIアーティスト | エンジニア | ライター | 最新のAI技術やトレンド、注目のモデル解説、そして実践に役立つ豊富なリソースまで、幅広い内容を記事にしています。フォローしてねヾ(^^)ノ

コメント

コメントする

目次