【初心者向け】新興勢力! Flet ( Flutter )を使った Python クロスプラットフォームアプリ の 開発環境に挑戦!

記事の概要

この記事では、PythonのFletライブラリを使って、クロスプラットフォームで動作するアプリの開発環境の構築手順と簡単なサンプルアプリの開発&ビルド手順を紹介します。

この記事を参考に、クロスプラットフォームアプリ開発のスタートとなれば幸いです。


今回の記事の対象者

この記事は次のような方に向けています:

  • Pythonで簡単にクロスプラットフォームなアプリケーションを開発したい方
  • サーバー(VPSやクラウド環境)でリッチなUIを持つWebアプリを公開したい方
  • 生成AIアシスタントに興味がある方

はじめに

普段は、Python使ってWebアプリや簡単なツールの開発を行っていますが、慣れているPythonで手軽にネイティブアプリが作ってみたくなりました。調べていたら、PythonでFlutterのアプリが開発出来るFletというライブラリを発見し、コミュニティも活発に活動しているので俄然興味が湧きました。

Flet事態はまだ発展途上ですが、現在のPythonのスキルを使ってクロスプラットフォームのアプリが開発出来るのは、とても魅力的なので今回はこれを使ってみようと思います。

Fletで作ることが出来るクロスプラットフォームアプリは、Web、macOS、iOS、Windows、Androidと多彩です。また、用意されている部品の種類も多岐にわたっています。

Fletについての詳細は、公式サイトをご覧下さい。

また、最近流行の生成系AIが新しいライブラリにどれだけ対応できるのか?と言うのも興味があったので、Fletのアプリ開発にAIが力を発揮してくれるのか試してみました。今回の生成AIは、JetBrains社製のIDEで利用出来るAI AssistantとAIローカルコード支援を使っています。


目次


今回のコンセプト

まずは、本記事で構築する開発環境やアプリのコンセプトを紹介していきます。

開発環境

  • Fletアプリ開発のすべての操作をPyCharmで実施出来るようにする
  • ソースコードはすべてのプラットフォームで共通とする
  • Webアプリ向けの設定は、クラウドやVPSにデプロイ出来る様にDockerコンテナを利用する
  • Jetbrains社が提供する生成AIの機能をつかってコーディングの効率化出来る様にする
    • AI Assistant コメントの追加、アプリケーションの提案(サーバーサイドAI)
    • AIコード補完機能(ローカルAI)

アプリ

  • オープンな天気予報APIを使用して、特定の都市の天気情報を表示するアプリとする。ユーザーが都市名を入力すると、その都市の現在の天気情報が表示する。
  • アプリは、Webブラウザ、macOS、Androidでの動作を目指します
    • Webアプリケーション(Docker Container)
    • macOSネイティブアプリケーション
    • Androidネイティブアプリケーション(Android Studio Emulator)
  • 今回は、iOSとWindowsは実施していませんので、ご了承ください。

開発ツール・ライブラリ・端末

必要なツール、ライブラリ、端末は以下の通りです。

開発ツール

以下、開発ツールとその公式サイトの一覧です。今回利用する開発ツールが多いので、公式サイトを参照して事前に導入を実施しておくと後々作業が楽になります。

ツール名用途
PyCharm Professional版開発全般
PoetryPythonパッケージ管理
Docker DesktopWebアプリ開発
Android StudioAndroidアプリ開発
XcodemacOSアプリ開発
Flutter SDKネイティブアプリビルド(Android, macOS)
HomeBrewmacOS用パッケージ管理(rbenv用)
rbenvRuby仮想環境管理(Ruby用)
Ruby(3.1.6)Rubyライブラリ管理(cocoapods用)
cocoapodsmacOSアプリ開発

ライブラリ

以下は、Fletアプリを構成する主要なソフトウェアとその解説です。導入は、記事本編の中で解説します。

ライブラリ説明
Python 3.12汎用プログラミングのための高水準プログラミング言語。
Flet 0.23.2PythonでインタラクティブなWeb、デスクトップ、モバイルアプリを構築するためのフレームワーク。
requests 2.32.3人間のために作られた、シンプルで優雅なPythonのHTTPライブラリ。
python-dotenv 1.0.1.envファイルから環境変数を読み込んで環境変数に設定するためのライブラリ。

端末

以下、今回の環境を構築する対象の端末スペックです。

項目詳細
ハードウェアApple Silicon M3, RAM 24GB
OSmacOS Sonoma 14.5

本記事で紹介するソフトウェアおよびツールは、筆者の個人的な使用経験に基づくものであり、公式のサポート外の設定や使用方法を含む場合があります。利用に際しては、公式サイトの指示およびガイドラインを参照し、自己責任で行ってください。


開発環境の構築(Webアプリ)

プロジェクトディレクトリ構造

ディレクトリ構造(最終イメージ)を以下に示します。

weather-pj/
├── Dockerfile
├── docker-compose.yml
├── poetry.lock
├── pyproject.toml
├── weather-app
│   ├── README.md
│   ├── .env
│   ├── __init__.py
│   ├── assets
│   │   └── icon.png
│   ├── main.py
│   ├── requirements.txt
│   ├── service
│   │   ├── __init__.py
│   │   └── weather_api.py
│   └── ui.py
└── web-variables.env(dockerへデプロイする際に.envから生成するため実体はない)


Poetryのインストール

Pythonライブラリ管理ツールをインストールします。

Poetryがインストールされていない場合は、以下のコマンドでインストールします。

curl -sSL <https://install.python-poetry.org> | python3 -

Poertyのパスを環境変数に追加します。

export PATH="/Users/xxxxxxx/.local/bin:$PATH"

プロジェクトのセットアップ

新しいプロジェクトディレクトリ(weather-pj)を作成し、Poetryプロジェクトを初期化します。

プロジェクトディレクトリ(weather-pj)で以下のコマンドを実行してPoetryプロジェクトを初期化します。

mkdir weather-pj
cd weather-app
poetry init --no-interaction

–no-interactionフラグを使うことで、対話的なセットアップをスキップできます。

初期化が終了すると、pyproject.tomlファイルが生成されます。

pyproject.toml

[tool.poetry]
name = "weather-app"
version = "0.1.0"
description = ""
authors = ["Your Name <you@example.com>"]
readme = "README.md"

[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"

必要なライブラリの追加

アプリ開発に必要なライブラリをPoetryを使って追加します。

今回は、flet、requests、python-dotenvを使うので、以下のコマンドを実行します。

poetry add flet requests python-dotenv

ライブラリの追加が完了するとpoetry.lockファイルが生成されます。

pyproject.tomlファイルに依存関係が追加されます。

poetry.lockには、追加されたライブラリのバージョン管理情報が追加されます。

pyproject.toml

[tool.poetry]
name = "weather-app"
version = "0.1.0"
description = ""
authors = ["Your Name <you@example.com>"]
readme = "README.md"

[tool.poetry.dependencies]
python = "^3.12"
flet = "^0.23.2"
requests = "^2.32.3"
python-dotenv = "^1.0.1"


[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"

poetry.lock

生成されたpoetry.lockファイルの一部(Fletライブラリ)を以下に抜粋します。かなり詳細な管理情報が記載されています。このファイルを用いることで、どの環境でも厳密に同じライブラリ構成で環境を再現することが出来ます。

[[package]]
name = "flet"
version = "0.23.2"
description = "Flet for Python - easily build interactive multi-platform apps in Python"
optional = false
python-versions = "<4.0,>=3.8"
files = [
    {file = "flet-0.23.2-py3-none-any.whl", hash = "sha256:2ed5f80df75b5bc123c84ea84ff79d30a15dd6ac985e4a9c06ace1702b251865"},
    .....
    {file = "flet-0.23.2.tar.gz", hash = "sha256:fd4c6de79797f70b2e62f27e4386d3ed399b900d3598d7a0336d7b1d17c7ee96"},
]

[package.dependencies]
cookiecutter = ">=2.6.0,<3.0.0"
fastapi = ">=0,<1"
flet-runtime = "0.23.2"
packaging = ">=23.1,<24.0"
qrcode = ">=7.4.2,<8.0.0"
uvicorn = {version = ">=0,<1", extras = ["standard"]}
watchdog = ">=4.0.0,<5.0.0"

[[package]]
name = "flet-core"
version = "0.23.2"
description = "Flet core library"
optional = false
python-versions = "<4.0,>=3.8"
files = [
    {file = "flet_core-0.23.2-py3-none-any.whl", hash = "sha256:fc3e2afbd48372bc768121b229768d9e10b404d358fc15a859a6dd060e70de43"},
    {file = "flet_core-0.23.2.tar.gz", hash = "sha256:6a4c713ba7b4cfe820227b41ce72094a5c7b1dddfdf0860110213977a181459b"},
]

Dockerコンテナの設定

Dockerfile

Pythonアプリケーションを実行するためのDockerイメージを作成するためのDockerfileを用意します。Fletアプリのソースコードディレクトリ(weather-app)は、予め先に記載しておきます。

# ベースイメージとしてPythonを使用
FROM python:3.12-slim

# Poetryをインストール
RUN pip install poetry

# Poetryの設定で仮想環境を無効化
RUN poetry config virtualenvs.create false

# 作業ディレクトリを設定
WORKDIR /app

# 必要なファイルをコピー
COPY pyproject.toml poetry.lock ./
COPY weather-app/ weather-app/

# 依存関係のインストール
RUN poetry install --no-root

docker-compose.yml

Docker Composeの設定ファイルを作成します。Fletアプリのソースコードディレクトリおよびファイル名は、予め最終型(weather-app/main.py)を記載しておきます。

services:
  weather-app:
    build: .
    ports:
      - "8501:8501"
    volumes:
      - .:/app
    command: poetry run flet run --web --port 8501 weather-app/main.py

ディレクトリ構造(プロジェクト作成後)

ここまでのステップで作成したディレクトリとファイルは以下のようになります。

weather-pj/
├── Dockerfile
├── docker-compose.yml
├── poetry.lock
├── pyproject.toml

最小限のFletアプリ追加

動作確認するため最小限の新しいFletアプリを作成します。以下のコマンドを実行すると「weather-app」ディレクトリが作成され、アプリに必要な最低限のファイルが生成されます。

poetry run flet create weather-app

ディレクトリ構造(Flerアプリ追加後)

ここまでのステップで作成したディレクトリ構造は以下のようになります。

weather-pj/
├── Dockerfile
├── docker-compose.yml
├── poetry.lock
├── pyproject.toml
└── weather-app
    ├── README.md
    ├── __init__.py
    ├── assets
    │   └── icon.png
    ├── main.py
    └── requirements.txt

生成されたmain.py

import flet as ft

def main(page: ft.Page):
    page.add(ft.SafeArea(ft.Text("Hello, Flet!")))

ft.app(main)

Fletアプリの実行確認(ローカル環境)

まずは、Webブラウザで動作確認するため、以下の様に変更します。

プロジェクトディレクトリで以下のコマンドを実行してFletアプリを起動します。

poetry run flet run --web --port 8501 weather-app/main.py

上記コマンドを実行すると、Webブラウザが自動で起動します。

最小限のFletアプリの起動画面

動作を確認したら、コマンドラインで「control」+「c」でFletアプリを終了させてください。

Fletアプリの動作確認(Dockerコンテナ)

PyCharmでこのプロジェクトを開き、Docker Composeを使用したデバッグと開発環境の設定を行います。以下の手順で設定します。

  1. PyCharmを起動し、weather-pjディレクトリをプロジェクトとして開きます。
  2. Settings -> Project: weather-app -> Python Interpreter を選択します。
  3. Add Interpreter をクリックし、Docker Compose を選択します。
  4. サービス名として weather-app を選択し、インタプリタパスとして システムインタプリタpython を指定します。

これで、PoetryとDocker Composeを使った開発環境がPyCharmでも利用できるようになります。

docker-compose.ymlを起動し、Fletアプリを起動します。

以下のURLにアクセスして、Fletアプリが正常に起動していることを確認してください。

http://localhost:8501


サンプルアプリ(天気情報)の開発

アプリの概要

オープンな天気予報APIを使用して、特定の都市の天気情報を表示するアプリです。

ユーザーが都市名を入力すると、その都市の現在の天気情報が表示されるようにします。


サンプルアプリの要件と設計

1. アーキテクチャ

  • フロントエンド: Fletを使用してUIを構築。
  • バックエンド: オープンな天気予報API(例: OpenWeatherMap)を利用して天気情報を取得。

2. ユーザーインターフェース設計

  1. 入力フォーム
    • 都市名入力フィールド
    • 検索ボタン
  2. 天気情報表示エリア
    • 都市名表示
    • 現在の温度
    • 天気状態(晴れ、曇り、雨など)
    • 風速
    • エラーメッセージ表示エリア(必要時)

3. フローチャート

  1. ユーザーが都市名を入力
  2. ユーザーが「検索」ボタンをクリック
  3. 天気予報APIから天気情報を取得
  4. 成功: 天気情報を表示
  5. 失敗: エラーメッセージを表示

4. コード構成

  • main.py: アプリのエントリーポイント
  • ui.py: ユーザーインターフェースの定義
  • weather_api.py: 天気予報APIとの通信を担当

5. 天気予報APIの利用

OpenWeatherMapのAPIを使用する場合、APIキーが必要です。無料で登録できるので、APIキーを取得して使用します。


サンプルアプリのソースコード

まずは、Open WeatherのAPIを呼び出すコードを作成します。

weather-app/weather_api.py

import requests
import os
from dotenv import load_dotenv

load_dotenv()

API_KEY = os.getenv("API_KEY")
BASE_URL = "<https://api.openweathermap.org/data/2.5/weather>"

def get_weather(city):
    params = {
        "q": city,
        "appid": API_KEY,
        "units": "metric",
        "lang": "ja",
    }
    response = requests.get(BASE_URL, params=params)
    if response.status_code == 200:
        data = response.json()
        weather = {
            "city": data["name"],
            "temperature": data["main"]["temp"],
            "description": data["weather"][0]["description"],
            "wind_speed": data["wind"]["speed"],
            "code": response.status_code,
            "url": params["appid"],
        }
        return weather
    else:
        return None

次に、ユーザインタフェースを作成します。入力エリア、ボタンイベント、ボタン、ページ更新の順番で処理を定義します。

weather-app/ui.py

import flet as ft
from service.weather_api import get_weather

def create_ui(page: ft.Page):
    city_input = ft.TextField(label="都市名")
    result_text = ft.Text()

    def on_search_click(e):
        city = city_input.value
        weather = get_weather(city)
        if weather is not None:
            result_text.value = f"都市: {weather['city']}\\n温度: {weather['temperature']}°C\\n天気: {weather['description']}\\n風速: {weather['wind_speed']} m/s\\nCODE: {weather['code']}"
        else:
            result_text.value = "都市の天気情報を取得できませんでした。"
        page.update()

    search_button = ft.TextButton(text="検索", on_click=on_search_click)

    page.add(city_input, search_button, result_text)

最後に、main関数にcreate_ui()を呼び出すコードを追加します。初期の「Hello, Flet!!」のコードは削除します。

weather-app/main.py

import flet as ft
from ui import create_ui

def main(page: ft.Page):
    create_ui(page)

ft.app(target=main)

環境変数

APIキーを含む環境変数を.envファイルに定義します。your_penweathermap_api_keyを自身で取得したAPI_KEYに変更してください。

weather-app/.env

API_KEY=your_openweathermap_api_key

Dockerfile

サンプルアプリを実行するためのDockerイメージを作成するためにDockerfileを編集します。サンプルアプリのリソースと環境変数ファイルのコピーを行います。

なお、.envファイルはネイティブアプリでは問題なく読み込めましたが、Dockerコンテナでは読込が出来ませんでした。

原因は、環境変数に関する仕様の違いです。以下、調査した仕様です。

  • dockerコンテナでは.envファイルはdocker-compose.ymlと同じディレクトリ配置する仕様
  • Fletがネイティブアプリをパッケージする際にはパッケージするディレクトリに配置する仕様

よって、.envファイルを原本として、Dockerコンテナで動作させる場合のみ、.envファイルをapp-variables.envファイルにコピーして環境変数が読み込めるようにしています。(もしかすると、もっと良い方法があるかもしれません)

# ベースイメージとしてPythonを使用
FROM python:3.12-slim

# Poetryをインストール
RUN pip install poetry

# Poetryの設定で仮想環境を無効化
RUN poetry config virtualenvs.create false

# 作業ディレクトリを設定
WORKDIR /app

# 必要なファイルをコピー
COPY pyproject.toml poetry.lock ./
COPY weather-app/assets weather-app/assets
COPY weather-app/service weather-app/service
COPY weather-app/.env app-variables.env
COPY weather-app/*.py weather-app/*.py

# 依存関係のインストール
RUN poetry install --no-root

docker-compose.yml

Docker Composeの設定ファイルを作成します。先ほどのDockerfileに対応した環境変数を読み込むように変更します。

services:
  weather-app:
    build: .
    ports:
      - "8501:8501"
    env_file:
      - web-variables.env
    volumes:
      - .:/app
    command: poetry run flet run --web --port 8501 weather-app/main.py

それでは、アプリのコード作成が終わったので、docker-compose.ymlを起動し、Fletアプリを起動します。以下のURLにアクセスして、Fletアプリが正常に起動していることを確認してください。

http://localhost:8501

初期表示

天気アプリが起動した画面

天気を知りたい都市を入力

天気アプリに見たい都市を入力する

無事に、画面が表示され、「tokyo」の天気情報が取得できていれば完成です!

天気アプリに検索結果が表示される

APIの結果と突合して、同じ結果か試してみます。

以下のcurlコマンドを使って、OpenWeatherMapのAPIを使用して「東京」の天気情報を取得します。

curl "<http://api.openweathermap.org/data/2.5/weather?q=Tokyo&appid=your_openweathermap_api_key&units=metric&lang=ja>"

取得した結果。先ほどの画面に表示されたた情報と一致していました。

画面に表示している以外にも色々な情報が取得できるので、自分でアプリをカスタマイズしてみてください。

{
  "coord": {
    "lon": 139.6917,
    "lat": 35.6895
  },
  "weather": [
    {
      "id": 800,
      "main": "Clear",
      "description": "晴天",
      "icon": "01n"
    }
  ],
  "base": "stations",
  "main": {
    "temp": 31.03,
    "feels_like": 38.03,
    "temp_min": 29.79,
    "temp_max": 32.11,
    "pressure": 1005,
    "humidity": 75,
    "sea_level": 1005,
    "grnd_level": 1000
  },
  "visibility": 10000,
  "wind": {
    "speed": 0.45,
    "deg": 158,
    "gust": 0.45
  },
  "clouds": {
    "all": 4
  },
  "dt": 1721732403,
  "sys": {
    "type": 2,
    "id": 2001249,
    "country": "JP",
    "sunrise": 1721677331,
    "sunset": 1721728374
  },
  "timezone": 32400,
  "id": 1850144,
  "name": "東京都",
  "cod": 200
}

環境の構築(macOS、Android用)

次に、ネイティブアプリ環境の構築を行います。構築に関しては、Flutter公式サイトの手順を参考に、実施することで構築出来ます。

【筆者の経験談】
Webアプリの場合は、導入するツールが少ないのですが、ネイティブアプリを開発する場合はFlutterが使う個々のプラットフォーム向けのビルドツールを導入する必要があるので思ったより大変です。導入手順は、プラットフォーム毎にまとめられているので淡々と実施するだけなのですがこれは初心者にとっては最大のハードルかもしれません。。。ここで挫折せずに是非乗り越えて、アプリ開発までたどり着きましょう!

環境構築の進捗は、flutter doctorの結果を見ながら利用するプラットフォームがグリーンになるまで手順を実施します。構築した環境に不具合がある場合は、出力されたメッセージを見ながら都度対応していきます。

詳細情報を出力する。flutter doctorコマンドの構文は以下となります。

flutter doctor -v

結果的にこんな出力になればOK!

唯一はまったのが、cocoapodのインストールです。Rubyの最新版3.3.4で導入していたのですが、実行時にエラーが出てアプリのビルドが出来ませんでした。Rubyのバージョンを3.1.6(仮想環境で導入できる一番古いバージョン)にすることでエラーが解消しました。原因は特定できていませんが、あまり新しいバージョンは使わない方が良さそうです。

Flutter Docdtorの結果出力画面

それでは、macのネイティブアプリとしてビルドしてみましょう。以下のコマンドを、weather-appディレクトリで実行します。

poetry run flet build macos

正常にビルドされていれば、以下のメッセージが表示されます。

macOSアプリのビルド画面

weather-app/build/macosディレクトリにweather_app.appが生成されていますので、ダブルクリックで実行します。

macOS版の天気アプリが起動した画面

次に、Androidアプリとしてビルドしてみましょう。

poetry run flet build apk

正常にビルドされていれば、以下のメッセージが表示されます。

Android版のビルド画面

weather-app/build/apkディレクトリにapp-release.apkが生成されていますので、エミュレータにコピーして実行します。

今回は、Android Studioのエミュレータ(Pixel Fold)を使用します。

Androidアプリを実行するエミュレータを選択する

エミュレータを起動してメニュー画面が出力されたら、APKファイルをドラッグ&ドロップでエミュレータにコピーします。

コピーが正常に終了すると、アプリリストに「weather-app」が表示されるので、クリックして起動します。

Android版の天気アプリ起動画面

生成AIのお試し結果

AI Assistantによるコメント作成

AI機能の支援を受けてみましょう。まずは、AI Assistant(クラウドサービス)でコメントを追加してみます。以下が、生成AIで追加したコメントです。言語を指定していないので、英語になっていますが、実用的なレベルで出力されていると感じました。

個人的には、コメントを自分で一から作成するのはツライのでこれは日常的に使えると思います。また、出力を日本語で指定することも出来るので、こちらも実務上問題ないかと思います。

weather-app/main.py

import flet as ft
from ui import create_ui

def main(page: ft.Page):
    """
    Main method for creating UI on the given page.

    :param page: The page to create UI on.
    :return: None
    """
    create_ui(page)

ft.app(target=main)

weather-app/ui.py

import flet as ft
from service.weather_api import get_weather

def create_ui(page: ft.Page):
    """
    :param page: The ft.Page object representing the user interface page.
    :return: None

    This method creates a user interface (UI) on the given page using the "page.add" method. The UI consists of three components: a text field for inputting a city name, a text button for triggering a search, and a text component for displaying the weather information.

    The `create_ui` method also defines an inner function `on_search_click` that is called when the search button is clicked. This function retrieves the weather information for the inputted city using the `get_weather` function and updates the `result_text` component accordingly. If the weather information is not available, an error message is displayed.

    Note: The behavior of the `get_weather` function is not specified in this method. It is assumed to be defined and implemented elsewhere.
    """
    city_input = ft.TextField(label="都市名")
    result_text = ft.Text()

    def on_search_click(e):
        city = city_input.value
        weather = get_weather(city)
        if weather is not None:
            result_text.value = f"都市: {weather['city']}\\n温度: {weather['temperature']}°C\\n天気: {weather['description']}\\n風速: {weather['wind_speed']} m/s\\nCODE: {weather['code']}"
        else:
            result_text.value = "都市の天気情報を取得できませんでした。"
        page.update()

    search_button = ft.TextButton(text="検索", on_click=on_search_click)

    page.add(city_input, search_button, result_text)

weather-app/weather_api.py

import requests
import os
from dotenv import load_dotenv

load_dotenv()

API_KEY = os.getenv("API_KEY")
BASE_URL = "<https://api.openweathermap.org/data/2.5/weather>"

def get_weather(city):
    """
    This method retrieves weather information for a given city.

    :param city: The name of the city for which the weather information is requested.
    :return: A dictionary containing weather information for the specified city, including the city name, temperature, description, and wind speed. If an error occurs or the city is not found, None is returned.
    """
    params = {
        "q": city,
        "appid": API_KEY,
        "units": "metric",
        "lang": "ja",
    }
    response = requests.get(BASE_URL, params=params)
    if response.status_code == 200:
        data = response.json()
        weather = {
            "city": data["name"],
            "temperature": data["main"]["temp"],
            "description": data["weather"][0]["description"],
            "wind_speed": data["wind"]["speed"],
            "code": response.status_code,
            "url": params["appid"],
        }
        return weather
    else:
        return None

Fletアプリの提案

Fletライブラリを使ったアプリのコード生成が出来るか質問してみました。結果として、生成は出来ませんでしたが、今後AIのモデルが進化したりカスタマイズ出来ると生成が可能になる可能性がありますので、今後に期待です。。。

質問

PythonのFletライブラリを使った、簡単なサンプルアプリのコードを提示してください。Fletの公式サイトは、https://flet.dev/ です。

回答

申し訳ありませんが、現時点でFletパッケージに関する情報やサンプルコードを提供することができません。FletはPythonの標準ライブラリや広く使用されているパッケージの一部ではないため、具体的な使用例や詳細なドキュメンテーションはそれぞれの公式ページやソースコード内を参照するか、パッケージのメンテナーやコミュニティにお問い合わせください。


AIコード補完機能(ローカル)

APIの呼出時のコーディング補完画面です。resと打つと、後続のコードで最もふさわしい候補が表示されます。(下の画面イメージ参照)候補に問題が無ければTabキーで確定できます。もし違っていれば、コードの入力を進めると候補が変わりますので、適切な候補が提示されたタイミングで確定できます。

生成AIによるコード補完画面

残念ながらFletライブラリなど新しいフレームワークには対応していません。こちらは、今後のAIモデルの更新に期待をしたいです。

ローカルの1ライン生成では有効なコードを都度生成してくれて便利と感じます。通常のコード補完の一歩先を行っている感じです。セキュリティ的にも、クラウドに情報が送信されないので安心ですね。


まとめ

クロスプラットフォームアプリ開発

Fletライブラリは、ベースとなるFlutterの特色を受け継ぎつつ、馴染みやすいPythonを使ったコーディングでクロスプラットフォーム用のアプリケーションが開発出来ることが分かりました。

コーディングの難易度的にはVB.NETのアプリと同じレベル感です。あとはPythonを知識のベースにFletの仕様に集中出来るので、学習する内容も絞り込め効率的です。

環境構築

環境構築の難易度は少し高めなので、最初は苦労するかもしれませんが、一回環境を作ってしまえば、コツはつかめるので頑張ってアプリ開発までたどり着いてもらえれば新しい世界が開けると感じました。是非、途中で挫折せずに頑張ってください!

Fletライブラリの将来性

Fletライブラリで、どこまで本格的なアプリが作れるかは未知数ですが、まずは自分用や社内アプリを作る分には十分な仕様は備えているので、色々なアプリに気軽に挑戦出来ると思います。

将来、Flutterをバリバリと使って開発してみたい人や、いろんなプラットフォームでネイティブアプリケーションを開発したい人にも入門としてちょうど良いのではと思います。

開発端末

端末のスペックは、Fletアプリの開発に加えて、iOSやAndoridのエミュレータを使ってデバッグするようになると、エミュレータ自体で8GBぐらいメモリを消費するので、複数のツールを立ち上げていると容量がが不足する可能性があるかな?という感触です。都度、不要なアプリやツール等を終了してメモリを確保するなどの工夫が必要です。

最後に、この記事がFletの学習や開発環境の構築に役立つことを願っています。

これからもPythonとFletを活用して、より高度なクロスプラットフォームアプリ開発に挑戦してみてください!


SNSでもご購読できます。

コメントを残す

*


reCaptcha の認証期間が終了しました。ページを再読み込みしてください。