Skip to content

ktkiyoshi/pkmn-api-python

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

プロジェクト構造の詳細解説

ルートディレクトリ

設定・依存関係ファイル

├── pyproject.toml          # プロジェクト設定・依存関係管理(uv使用)
├── uv.lock                 # 依存関係のロックファイル
├── .python-version         # Pythonバージョン指定
├── docker-compose.yml      # Docker Compose設定(API + MySQL)
├── Dockerfile              # APIコンテナのビルド設定
└── README.md               # プロジェクト説明書

ディレクトリ

├── app/                    # メインアプリケーションディレクトリ
├── tests/                  # テストファイル
├── init/                   # データベース初期化スクリプト
├── .venv/                  # Python仮想環境
└── .vscode/                # VSCode設定

アプリケーションディレクトリ(app/)

エントリーポイント

├── main.py                 # FastAPIアプリケーションの起動ファイル

コア設定(core/)

├── core/
│   ├── __init__.py         # パッケージ初期化
│   ├── config.py           # アプリケーション設定管理
│   └── database.py         # データベース接続設定

役割: アプリケーションの基盤設定

  • config.py: 環境変数から設定を読み込み、データベースURLを生成
  • database.py: SQLAlchemyエンジンとセッション管理

API層(api/)

├── api/
│   ├── __init__.py         # パッケージ初期化
│   ├── deps.py             # 依存関係注入(データベースセッション等)
│   └── v1/                 # API v1
│       ├── __init__.py     # パッケージ初期化
│       ├── api.py          # v1のルーター統合
│       └── endpoints/      # エンドポイント定義
│           ├── __init__.py # パッケージ初期化
│           └── pokedex.py  # ポケモン図鑑API

役割: APIエンドポイントの管理

  • deps.py: FastAPIの依存関係(DBセッション等)
  • v1/api.py: 各エンドポイントの統合
  • endpoints/: 個別のAPIエンドポイント

データ層

モデル層(models/)

├── models/
│   ├── __init__.py         # モデルのエクスポート
│   ├── pokedex.py          # ポケモン図鑑モデル
│   ├── name.py             # 名前モデル
│   ├── type.py             # タイプモデル
│   ├── ability.py          # 特性モデル
│   ├── move.py             # 技モデル
│   └── forme_type.py       # フォルムタイプモデル

役割: SQLAlchemy ORMモデル(データベーステーブル定義)

スキーマ層(schemas/)

├── schemas/
│   ├── pokedex.py          # ポケモン図鑑スキーマ
│   ├── name.py             # 名前スキーマ
│   ├── type.py             # タイプスキーマ
│   ├── ability.py          # 特性スキーマ
│   ├── move.py             # 技スキーマ
│   └── forme_type.py       # フォルムタイプスキーマ

役割: Pydanticスキーマ(APIリクエスト/レスポンスの型定義)

データベース初期化(init/)

├── init/
│   └── _pkmn_20250808.sql  # データベース初期化SQL

役割: MySQLコンテナ起動時に実行される初期データ

テスト(tests/)

├── tests/
│   └── test_main.py        # メインアプリケーションのテスト

アーキテクチャの流れ

1. リクエスト処理フロー

HTTP Request → main.py → api/v1/api.py → endpoints/pokedex.py → models/pokedex.py → MySQL

2. レスポンス処理フロー

MySQL → models/pokedex.py → schemas/pokedex.py → endpoints/pokedex.py → HTTP Response

3. 設定管理フロー

.env → core/config.py → core/database.py → models/*.py

各層の責任

  • core/: アプリケーション設定とデータベース接続
  • api/: HTTPリクエスト/レスポンスの処理
  • models/: データベーステーブルの定義
  • schemas/: APIの入出力データの型定義
  • endpoints/: 具体的なAPIエンドポイントの実装

この構造により、責任の分離が明確で、保守性と拡張性が高いアプリケーションになっています。

├── pyproject.toml          # プロジェクト設定・依存関係管理(uv使用)
├── uv.lock                 # 依存関係のロックファイル
├── .python-version         # Pythonバージョン指定
├── docker-compose.yml      # Docker Compose設定(API + MySQL)
├── Dockerfile              # APIコンテナのビルド設定
└── README.md               # プロジェクト説明書
├── app/                    # メインアプリケーションディレクトリ
├── tests/                  # テストファイル
├── init/                   # データベース初期化スクリプト
├── .venv/                  # Python仮想環境
└── .vscode/                # VSCode設定
├── main.py                 # FastAPIアプリケーションの起動ファイル
├── core/
│   ├── __init__.py         # パッケージ初期化
│   ├── config.py           # アプリケーション設定管理
│   └── database.py         # データベース接続設定
├── api/
│   ├── __init__.py         # パッケージ初期化
│   ├── deps.py             # 依存関係注入(データベースセッション等)
│   └── v1/                 # API v1
│       ├── __init__.py     # パッケージ初期化
│       ├── api.py          # v1のルーター統合
│       └── endpoints/      # エンドポイント定義
│           ├── __init__.py # パッケージ初期化
│           └── pokedex.py  # ポケモン図鑑API
├── models/
│   ├── __init__.py         # モデルのエクスポート
│   ├── pokedex.py          # ポケモン図鑑モデル
│   ├── name.py             # 名前モデル
│   ├── type.py             # タイプモデル
│   ├── ability.py          # 特性モデル
│   ├── move.py             # 技モデル
│   └── forme_type.py       # フォルムタイプモデル
├── schemas/
│   ├── pokedex.py          # ポケモン図鑑スキーマ
│   ├── name.py             # 名前スキーマ
│   ├── type.py             # タイプスキーマ
│   ├── ability.py          # 特性スキーマ
│   ├── move.py             # 技スキーマ
│   └── forme_type.py       # フォルムタイプスキーマ
├── init/
│   └── _pkmn_20250808.sql  # データベース初期化SQL
├── tests/
│   └── test_main.py        # メインアプリケーションのテスト
HTTP Request → main.py → api/v1/api.py → endpoints/pokedex.py → models/pokedex.py → MySQL
MySQL → models/pokedex.py → schemas/pokedex.py → endpoints/pokedex.py → HTTP Response
.env → core/config.py → core/database.py → models/*.py

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors