Skip to content

Commit f0674e0

Browse files
Add root README.md
I've added a README.md file to the project root that outlines the project's overview, structure, technology stack, and links to key documents. The goal is to make it easier for new participants to grasp the overall picture of the project.
1 parent d462b60 commit f0674e0

File tree

7 files changed

+708
-285
lines changed

7 files changed

+708
-285
lines changed

README.md

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
# Flet Multiplatform Project Hub
2+
3+
## 概要
4+
5+
このリポジトリは、Fletフレームワークを使用したマルチプラットフォーム対応アプリケーションの開発基盤を提供するプロジェクトハブです。単一のコードベースからデスクトップ、ウェブ、モバイルアプリケーションを効率的に構築し、強力なPythonバックエンドAPI(FastAPIを利用)と連携させることを目的としています。
6+
7+
このプロジェクトは、開発者が迅速に高品質なマルチプラットフォームアプリケーションを立ち上げ、保守・拡張していく上での共通的な課題(開発環境の統一、UIとバックエンドの連携、CI/CDの整備など)を解決するためのテンプレート、ツール、ガイドラインを提供します。
8+
9+
## 主な特徴
10+
11+
- **マルチプラットフォームGUI**: [Flet](https://flet.dev/) を使用し、Pythonのみでインタラクティブなフロントエンドを構築。Windows, macOS, Linux, Web, (将来的にはiOS/Android) に対応。
12+
- **強力なバックエンドAPI**: [FastAPI](https://fastapi.tiangolo.com/) を採用し、高性能でモダンな非同期APIを提供。
13+
- **開発支援ツール**: コーディング、テスト、デプロイメントを支援する各種ツールを同梱。
14+
- **CI/CDパイプライン**: GitHub Actionsを使用した継続的インテグレーションとデプロイメントのワークフローを定義済み。
15+
16+
## プロジェクト構造
17+
18+
このリポジトリは、複数のコンポーネントとドキュメントから構成されています。
19+
20+
- `flet-multiplatform-app/`:
21+
主要なFlet GUIアプリケーションとFastAPIバックエンドAPIのソースコード、詳細なドキュメントが含まれています。このアプリケーションのセットアップ、開発、テストに関する詳細は、`flet-multiplatform-app/README.md` を参照してください。
22+
- `tools/`:
23+
開発効率を向上させるための各種スクリプトや補助ツール群が格納されています。詳細は `tools/README.md` を参照してください。
24+
- `.github/workflows/`:
25+
CI (継続的インテグレーション) および CD (継続的デプロイメント) のためのGitHub Actionsワークフロー定義ファイルが格納されています。
26+
- 各種 `.md` ガイドファイル (ルートディレクトリ):
27+
リポジトリ全体に関わる横断的なガイドや、特定のプラットフォームへのデプロイメント手順などを記載したマークダウンファイル群です。
28+
29+
## 技術スタック
30+
31+
本プロジェクトで主に使用されている技術は以下の通りです。
32+
33+
- **プログラミング言語**: Python 3.13+
34+
- **GUIフレームワーク**: Flet
35+
- **バックエンドAPIフレームワーク**: FastAPI
36+
- **非同期処理**: Uvicorn (ASGIサーバー), asyncio
37+
- **データベース (バックエンドAPI)**: SQLAlchemy (ORM), Alembic (マイグレーション) - (主に `flet-multiplatform-app` 内で使用)
38+
- **型チェック**: Pydantic (データバリデーションと設定管理)
39+
- **テスト**: Pytest, Pytest-Cov
40+
- **コードフォーマット・リンター**: Black, isort, Flake8, MyPy
41+
42+
(依存関係の詳細は各サブプロジェクトの `pyproject.toml``requirements.txt` を参照してください。)
43+
44+
## はじめに (Getting Started)
45+
46+
1. **リポジトリのクローン:**
47+
```bash
48+
git clone https://github.com/your-username/your-repository-name.git
49+
cd your-repository-name
50+
```
51+
(上記URLは実際のリポジトリURLに置き換えてください)
52+
53+
2. **メインアプリケーションのセットアップと起動:**
54+
主要なFletアプリケーション (`flet-multiplatform-app`) のセットアップ方法、開発環境の構築、アプリケーションの起動手順については、以下のドキュメントを参照してください。
55+
* `flet-multiplatform-app/README.md`
56+
* `flet-multiplatform-app/docs/getting_started.md` (日本語版は `GETTING_STARTED_JA.md`)
57+
58+
## ドキュメンテーション
59+
60+
このプロジェクトには、開発と運用を支援するための複数のドキュメントが用意されています。
61+
62+
- **アプリケーション開発ドキュメント (`flet-multiplatform-app/docs/`)**:
63+
* `DEVELOPER_GUIDE.md`: 開発環境のセットアップ、コーディング規約、コントリビューション方法など。
64+
* `API_REFERENCE.md`: バックエンドAPIのエンドポイント仕様。
65+
* `DESIGN_GUIDELINES.md`: UI/UXデザインに関する指針。
66+
* `TUTORIAL.md`: アプリケーション機能開発のチュートリアル。
67+
- **デプロイメントガイド**:
68+
* `android-flet-deployment-guide.md`: AndroidプラットフォームへのFletアプリケーションデプロイガイド。
69+
* `ios-flet-deployment-guide.md`: iOSプラットフォームへのFletアプリケーションデプロイガイド。
70+
* `web-flet-deployment-guide.md`: WebプラットフォームへのFletアプリケーションデプロイガイド。
71+
- **CI/CD & リリース**:
72+
* `cicd-release-guide.md`: CI/CDパイプラインの概要とリリース手順。
73+
- **その他主要ガイド**:
74+
* `architecture-design-guide.md`: プロジェクト全体のアーキテクチャ設計思想。
75+
* `security-checklist.md`: セキュリティに関するチェックリスト。
76+
* `testing-qa-guide.md`: テスト戦略と品質保証に関するガイド。
77+
78+
各ドキュメントは、それぞれの `.md` ファイルを参照してください。
79+
80+
## 貢献方法 (Contributing)
81+
82+
このプロジェクトへの貢献に興味がある方は、`flet-multiplatform-app/docs/DEVELOPER_GUIDE.md` に記載されている開発ワークフロー、コーディング規約、プルリクエストの手順などを参照してください。
83+
84+
バグ報告や機能提案は、GitHubのIssuesを通じて行うことを推奨します。
85+
86+
## ライセンス
87+
88+
このプロジェクトは MIT License の下で公開されています。詳細については、リポジトリ内の `LICENSE` ファイルを参照してください。もし `LICENSE` ファイルが存在しない場合は、プロジェクトオーナーにライセンス情報を確認してください。

flet-multiplatform-app/README.md

Lines changed: 114 additions & 124 deletions
Original file line numberDiff line numberDiff line change
@@ -9,51 +9,105 @@
99

1010
```text
1111
flet-multiplatform-app
12-
├── src/ # アプリケーションのソースコード
13-
│ ├── backend/ # バックエンド
12+
├── pyproject.toml # Pythonプロジェクト定義、依存関係 (PEP 621)
13+
├── pytest.ini # Pytest設定
14+
├── src/ # ソースコード
15+
│ ├── __init__.py
16+
│ ├── app.py # Flet UIの構造やカスタムコントロールを定義
17+
│ ├── flet_app.py # Flet UIアプリケーションのメインエントリーポイント
18+
│ ├── main.py # FastAPIアプリケーションのエントリーポイント (src.backend.mainとは別)
19+
│ ├── assets/ # 画像、フォントなどの静的アセット
20+
│ ├── backend/ # バックエンドAPI (FastAPI)
1421
│ │ ├── __init__.py
15-
│ │ ├── main.py # アプリケーションのエントリーポイント
16-
│ │ ├── app.py # FastAPIアプリケーション
17-
│ │ ├── api/ # APIルーター
18-
│ │ ├── core/ # コア機能
19-
│ │ ├── models/ # データベースモデル
20-
│ │ ├── schemas/ # Pydanticスキーマ
21-
│ │ ├── services/ # ビジネスロジック
22-
│ │ ├── tests/ # バックエンドテスト
23-
│ │ ├── utils/ # ユーティリティ
24-
│ │ └── config/ # 設定ファイル
25-
│ └── frontend/ # フロントエンド
26-
│ ├── main.py # フロントエンドのエントリーポイント
27-
│ ├── components/ # UIコンポーネント
28-
│ ├── pages/ # ページコンポーネント
29-
│ └── utils/ # ユーティリティ
30-
├── scripts/ # スクリプト
22+
│ │ ├── app.py # FastAPIアプリケーションインスタンスの定義
23+
│ │ ├── main.py # バックエンドAPIの起動スクリプト
24+
│ │ ├── alembic/ # Alembicデータベースマイグレーション用ディレクトリ
25+
│ │ │ ├── versions/ # マイグレーションスクリプト
26+
│ │ │ └── env.py # Alembic実行環境設定
27+
│ │ ├── alembic.ini # Alembic設定ファイル (こちらが主に使われる)
28+
│ │ ├── api/ # APIルーター定義
29+
│ │ ├── core/ # 設定読み込み、共通ロジックなど
30+
│ │ ├── db/ # データベースセッション、エンジン設定
31+
│ │ ├── models/ # SQLAlchemyデータベースモデル
32+
│ │ ├── schemas/ # Pydanticデータスキーマ
33+
│ │ └── tests/ # バックエンド固有のテスト
34+
│ ├── components/ # Flet UIコンポーネント (共通部品など)
35+
│ ├── config/ # アプリケーション全体の設定
36+
│ ├── services/ # ビジネスロジック層
37+
│ └── utils/ # 汎用ユーティリティ関数
38+
├── scripts/ # 各種スクリプト (テスト実行用など)
3139
│ ├── test.sh # テスト実行スクリプト (Linux/macOS)
3240
│ └── test.bat # テスト実行スクリプト (Windows)
33-
├── tests/ # 統合テスト
34-
│ ├── __init__.py
35-
│ ├── conftest.py
36-
│ └── test_*.py
37-
├── .env # 環境変数
38-
├── .gitignore
39-
├── pyproject.toml # 依存関係とプロジェクト設定
40-
├── pytest.ini # pytest設定
41-
└── README.md
41+
├── tests/ # プロジェクト全体のテスト (統合テストなど)
42+
│ ├── conftest.py # Pytest設定ファイル
43+
│ └── ...
44+
└── ... # .gitignore, .env.example などその他の設定ファイル
4245
```
46+
(上記は主要なファイルとディレクトリの構造です。詳細なファイルは省略されている場合があります。)
47+
48+
## 必要システム構成
49+
- Python 3.13 以上
50+
- Git
51+
52+
## セットアップ
53+
54+
1. **リポジトリのクローン:**
55+
```bash
56+
git clone <your-repository-url>
57+
cd flet-multiplatform-app
58+
```
59+
60+
2. **仮想環境の作成と有効化:**
61+
```bash
62+
python -m venv .venv
63+
# Windows: .\.venv\Scripts\activate
64+
# macOS/Linux: source .venv/bin/activate
65+
```
66+
67+
3. **依存関係のインストール:**
68+
開発に必要な全ての依存関係(本体、テストツール、リンター等)をインストールするには、プロジェクトルート (`flet-multiplatform-app`) で以下を実行します:
69+
```bash
70+
pip install -e .[dev]
71+
```
72+
アプリケーションの実行のみに必要な基本的な依存関係をインストールする場合は、以下を実行します:
73+
```bash
74+
pip install .
75+
```
76+
77+
4. **環境変数の設定:**
78+
`.env.example` ファイルを参考に `.env` ファイルを作成し、必要な環境変数を設定してください。
79+
80+
## アプリケーションの起動
81+
82+
開発時には、Flet UIアプリケーションとバックエンドAPIサーバーを個別に起動します。
83+
84+
1. **Flet UIアプリケーション:**
85+
(`flet-multiplatform-app` ディレクトリから実行)
86+
```bash
87+
flet run src/flet_app.py
88+
```
89+
90+
2. **バックエンドAPIサーバー:**
91+
(`flet-multiplatform-app` ディレクトリから実行)
92+
```bash
93+
python -m uvicorn src.backend.main:app --reload --port 8001
94+
```
95+
(APIサーバーのポートはFletアプリと衝突しないように8001などを推奨)
4396

4497
## ドキュメンテーション
4598

4699
### オンラインドキュメント
47100

48101
プロジェクトのドキュメントは [MkDocs](https://www.mkdocs.org/) を使用してビルド・公開できます。
102+
ドキュメント関連の依存関係は `pyproject.toml``[project.optional-dependencies.docs]` (仮の名称、必要に応じて追加) に定義するか、専用の `requirements-docs.txt` を使用します。
49103

50-
#### ドキュメントのビルド
104+
#### ドキュメントのビルド (例: `requirements-docs.txt` を使用する場合)
51105

52106
1. ドキュメント用の依存関係をインストールします:
53-
54-
```bash
55-
pip install -r requirements-docs.txt
56-
```
107+
```bash
108+
pip install -r requirements-docs.txt
109+
```
110+
(または `pip install .[docs]` もし `pyproject.toml``docs` グループが定義されていれば)
57111

58112
2. ドキュメントをビルドします:
59113

@@ -81,15 +135,26 @@ mkdocs serve
81135

82136
### テストの実行方法
83137

84-
1. テストに必要な依存関係をインストールします:
85-
86-
```bash
87-
pip install -r requirements-test.txt
88-
```
138+
1. テストに必要な依存関係をインストールします(開発セットアップ `pip install -e .[dev]` に含まれています):
139+
```bash
140+
# pip install -e .[dev] を実行していれば、通常は追加のインストールは不要です。
141+
# requirements-test.txt は pyproject.toml の [dev] グループと内容を確認し、統一を検討してください。
142+
# もし requirements-test.txt が独自の依存関係を持つ場合:
143+
# pip install -r requirements-test.txt
144+
```
89145

90146
2. テストを実行します:
91147

92-
**Windows の場合:**
148+
**pytestコマンドを直接使用する場合 (推奨):**
149+
`pyproject.toml``pytest` の設定が定義されています。プロジェクトルートで以下を実行します:
150+
```bash
151+
pytest
152+
```
153+
詳細なオプション (カバレッジレポート生成など) は `pyproject.toml``tool.pytest.ini_options.addopts` を参照してください。
154+
155+
**スクリプトを使用する場合:**
156+
157+
**Windows の場合:**
93158

94159
```batch
95160
scripts\test.bat
@@ -109,105 +174,30 @@ chmod +x scripts/test.sh
109174

110175
#### カバレッジレポートの生成
111176

177+
pytestの実行時にHTMLカバレッジレポートが `htmlcov/` ディレクトリに自動生成されます (`pyproject.toml` の設定による)。
112178
```bash
113-
# テストを実行してカバレッジレポートを生成
114-
pytest --cov=src --cov-report=term-missing --cov-report=html
115-
116-
# カバレッジレポートを表示(ブラウザで開く)
117-
start htmlcov/index.html # Windows
118-
open htmlcov/index.html # macOS
179+
# pytest 実行後
180+
# Windows: start htmlcov/index.html
181+
# macOS/Linux: open htmlcov/index.html
119182
```
183+
ターミナルでのサマリーも表示されます。
120184

121185
#### カバレッジの目標
122186

123187
このプロジェクトでは、以下のカバレッジ目標を設定しています:
124-
125188
- **最小要件**: 70%以上(CIで強制)
126189
- **推奨**: 80%以上
127190
- **理想**: 90%以上
128191

129-
これらの目標は、コードの品質と保守性を確保するために設定されています。テストカバレッジは継続的インテグレーション(CI)プロセスで自動的に計測されます
192+
カバレッジを改善するには、テストされていないコード行を特定し(`htmlcov`レポートで詳細を確認できます)、それらに対するテストケースを追加してください
130193

131-
#### カバレッジを改善するには
194+
## その他のドキュメント
132195

133-
1. テストされていないファイルを特定:
134-
```bash
135-
coverage report --show-missing
136-
```
137-
138-
2. 特定のファイルのカバレッジを確認:
139-
```bash
140-
coverage html --include="path/to/file.py"
141-
```
196+
- **[開発者ガイド](./docs/DEVELOPER_GUIDE.md)**: より詳細な開発環境のセットアップ、コーディング規約、コントリビューション方法など。
197+
- **[デザインガイドライン](./docs/design_guidelines.md)**: UI/UX デザインに関するガイドライン。
198+
- **[Swagger UI (API Docs)]**: バックエンドAPIサーバー起動後、`/docs` エンドポイント (例: `http://localhost:8001/docs`) にてAPIドキュメントが利用可能です。
199+
- **[Redoc (API Docs)]**: バックエンドAPIサーバー起動後、`/redoc` エンドPOINT (例: `http://localhost:8001/redoc`) にて代替のAPIドキュメントが利用可能です。
142200

143-
3. カバレッジが低いファイルに対してテストを追加してください。
144-
145-
## ドキュメント
146-
147-
- [開発者ガイド](./docs/DEVELOPER_GUIDE.md) - 開発環境のセットアップやコントリビューション方法など
148-
- [デザインガイドライン](./docs/design_guidelines.md) - UI/UX デザインのガイドライン
149-
150-
## プロジェクト構成
151-
152-
```
153-
flet-multiplatform-app
154-
├── src/ # アプリケーションのソースコード
155-
│ ├── backend/ # バックエンド
156-
│ │ ├── __init__.py
157-
│ │ ├── main.py # アプリケーションのエントリーポイント
158-
│ │ ├── app.py # FastAPIアプリケーション
159-
│ │ ├── api/ # APIルーター
160-
│ │ ├── core/ # コア機能
161-
│ │ ├── models/ # データベースモデル
162-
│ │ ├── schemas/ # Pydanticスキーマ
163-
│ │ ├── services/ # ビジネスロジック
164-
│ │ ├── tests/ # バックエンドテスト
165-
│ │ ├── utils/ # ユーティリティ
166-
│ │ └── config/ # 設定ファイル
167-
│ └── frontend/ # フロントエンド
168-
│ ├── main.py # フロントエンドのエントリーポイント
169-
│ ├── components/ # UIコンポーネント
170-
│ ├── pages/ # ページコンポーネント
171-
│ └── utils/ # ユーティリティ
172-
├── scripts/ # スクリプト
173-
│ ├── test.sh # テスト実行スクリプト (Linux/macOS)
174-
│ └── test.bat # テスト実行スクリプト (Windows)
175-
├── tests/ # 統合テスト
176-
│ ├── __init__.py
177-
│ ├── conftest.py
178-
│ └── test_*.py
179-
├── .env # 環境変数
180-
├── .gitignore
181-
├── pyproject.toml # 依存関係とプロジェクト設定
182-
├── pytest.ini # pytest設定
183-
└── README.md
184-
├── docs # ドキュメント
185-
│ ├── DEVELOPER_GUIDE.md # 開発者向けガイド
186-
│ └── design_guidelines.md # デザインガイドライン
187-
├── requirements.txt # 依存関係
188-
├── pyproject.toml # プロジェクト設定
189-
└── README.md # プロジェクトの概要
190-
```
191-
192-
## 使用方法
193-
194-
1. **依存関係のインストール**
195-
プロジェクトのルートディレクトリで以下のコマンドを実行して、必要なパッケージをインストールします。
196-
```
197-
pip install -r requirements.txt
198-
```
199-
200-
2. **アプリケーションの起動**
201-
`src/main.py`を実行してアプリケーションを起動します。
202-
```
203-
python src/main.py
204-
```
205-
206-
3. **テストの実行**
207-
テストを実行するには、以下のコマンドを使用します。
208-
```
209-
pytest tests/
210-
```
211201

212202
## 貢献
213203

0 commit comments

Comments
 (0)