Marraqueta — FastAPIマイクロサービス(Marraquetas con palta)

Web

概要

Marraquetaは「Marraquetas con palta」をテーマにした、FastAPIベースのマイクロサービス・テンプレートです。プロジェクトはクリーンアーキテクチャ(サービス層・モデル層・設定層など)に沿って整理され、Pydanticで入力検証を行い、DockerとDocker Composeでコンテナ化された開発・実行環境を提供します。Ruffによる静的解析・整形、Pytestによるテスト、Makefileでの日常的操作の自動化など、実運用を視野に入れたツールチェーンが組み込まれており、学習目的やプロダクトの雛形として有用です。

GitHub

リポジトリの統計情報

  • スター数: 1
  • フォーク数: 0
  • ウォッチャー数: 1
  • コミット数: 3
  • ファイル数: 4
  • メインの言語: Python

主な特徴

  • FastAPIを用いた軽量で高速なWebマイクロサービス設計
  • Pydanticモデルによる堅牢なデータバリデーション
  • クリーンアーキテクチャで責務を分離したコード構成
  • Docker/Docker Compose、Ruff、Pytestなど開発ツールの統合

技術的なポイント

このリポジトリの核は「実用的で拡張しやすいマイクロサービスの骨組み」を示す点にあります。FastAPIを採用しているため、非同期処理対応や自動生成されるOpenAPIドキュメント(/docsなど)をすぐに利用でき、エンドポイントの追加や改修が容易です。データモデルはPydanticで定義され、入力検証・シリアライズ・型ヒントを通じた安全性向上に寄与します。クリーンアーキテクチャの考え方に従い、サービス層(ビジネスロジック)、モデル層(データ定義)、設定層(環境設定や依存注入)の分離が図られているため、ユニットテストや機能追加がしやすく、レイヤー間の依存を最小限にできます。

DockerとDocker Composeが同梱されていることで、開発環境と本番環境の差を縮められます。CI/CDパイプラインに組み込みやすく、ローカルでの動作確認や複数サービスの連携テストをコンテナで再現可能です。Ruffは軽量で高速なリンター/フォーマッターとして機能し、コード品質を自動的に保つ役割を担います。Pytestによるテストフレームワークが準備されているため、ビジネスロジックの回帰テストやユニットテストを容易に整備できます。

Makefileは日常的なタスク(依存関係のインストール、テスト実行、リンティング、Dockerイメージのビルドなど)を簡潔に自動化し、開発者の生産性を高めます。プロジェクト構成が小規模でシンプルなため、リファクタリングや機能追加の導線が分かりやすく、学習コストが低い一方で、実運用に向けては認証、DB接続、マイグレーション、監視、設定管理などの追加実装が想定されます。拡張ポイントとしては、APIバージョニング、依存性注入コンテナの導入、Docker Composeでの外部サービス(PostgresやRedis)の追加、そしてGitHub Actions等を用いた自動化が考えられます。

プロジェクトの構成

主要なファイルとディレクトリ:

  • .gitignore: file
  • README.md: file
  • api: dir
  • docker-compose.yml: file

まとめ

軽量で実用的なFastAPIテンプレート。学習とプロトタイピングに最適。

リポジトリ情報:

READMEの抜粋:

Marraqueta

FastAPI microservice with clean architecture, Pydantic models, Docker support, and comprehensive tooling.

Features

  • FastAPI web framework
  • Pydantic for data validation
  • Clean architecture (services, models, config layers)
  • Docker and Docker Compose support
  • Ruff for linting and formatting
  • Pytest for testing
  • Makefile for common operations

Project Structure

marraqueta/
├── app/
│   ├── main.py              # FastAPI app with routes
│   ├── config/
│   │   └── s...