9
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Python で Flet を使ったマルチプラットフォームアプリ開発(uv を使ってデスクトップアプリ・Webアプリの簡単なお試し)

Last updated at Posted at 2026-01-11

はじめに

以下の「Flet」を軽く試してみた話です。

●Build multi-platform apps in Python | Flet
 https://flet.dev/

2026-01-11_22-39-55.jpg

2026-01-11_22-40-02.jpg

Flet は Python を使ったマルチプラットフォームアプリ開発が行えるようです。

公式の Introduction の冒頭を見ると、以下の記載がありました。

2026-01-12_01-07-32.jpg

ざっくり日本語で書くと「Fletは Python で Web、デスクトップ、モバイルアプリを構築できるフレームワークで、Flutter をベースにした Fletコントロールを使用するもの」で、「Flet は Flutterウィジェットの単なるラッパーではなく独自の工夫も加えている」というもののようです。

さっそく公式の「Get Started」を試す

さっそく、公式ページのトップにある「Get Started」ボタンを押した先のページの内容を試します。

●Introduction - Flet
 https://docs.flet.dev/

サンプルコード・手順は以下となるようです。

2026-01-11_22-42-31.jpg

上記の手順では pip を使った手順になっていますが、uv を使って進めてみます。

uv を使って試す

uv を使った以下のコマンド 2つを実行します。

uv init

コマンド実行後に、main.py などが作成されます。続けて、以下のコマンドを実行します。

uv add "flet[all]"

上記のコマンドにより仮想環境が作成されて、その中で flet が使える状態になります。ここで、先ほど作成された main.py を以下の内容に書きかえます。

import flet as ft

def main(page: ft.Page):
    page.title = "Flet counter example"
    page.vertical_alignment = ft.MainAxisAlignment.CENTER

    input = ft.TextField(value="0", text_align=ft.TextAlign.RIGHT, width=100)

    def minus_click(e):
        input.value = str(int(input.value) - 1)

    def plus_click(e):
        input.value = str(int(input.value) + 1)

    page.add(
        ft.Row(
            alignment=ft.MainAxisAlignment.CENTER,
            controls=[
                ft.IconButton(ft.Icons.REMOVE, on_click=minus_click),
                input,
                ft.IconButton(ft.Icons.ADD, on_click=plus_click),
            ],
        )
    )

ft.run(main)

デスクトップアプリを試す

最後に、以下のコマンドを実行することでデスクトップアプリを起動できます。

uv run main.py

上記のコマンドは、以下とすることでホットリロードが有効になったりするようです(開発時は以下を使うほうが良さそうです)。

uv run flet run main.py

自分は Mac で試していたのですが、上記のそれぞれのコマンド実行後には、以下のデスクトップアプリが立ち上がりました。

2026-01-12_00-42-46.jpg

Webアプリを試す

Webアプリのほうも試してみます。

uv run flet run --web main.py

以下は、ブラウザで表示された Webアプリと、その手前に置いたターミナルの画面です。

2026-01-12_00-54-45.jpg

ブラウザでも、先ほどのデスクトップアプリと同じものが実行できました。

スマホでのテスト

スマホアプリとして動かす場合、スマホにネイティブアプリとしてインストールするのはひと手間かかりそうですが、テスト用にはそれよりも簡単に動かせる方法があるようでした。

具体的には以下になるのですが、別途試せればと思います。

●Testing Flet app on iOS | Flet
 https://flet.dev/docs/getting-started/testing-on-ios/

2026-01-12_01-02-36.jpg

●Testing Flet app on Android | Flet
 https://flet.dev/docs/getting-started/testing-on-android/

2026-01-12_01-02-47.jpg

9
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?