99
1010``` text
1111flet-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
521061. ドキュメント用の依存関係をインストールします:
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
581122. ドキュメントをビルドします:
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
901462. テストを実行します:
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
95160scripts\t est.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