応用課題
この章では、Python講座で学んだ内容を応用した課題に取り組みます。
1. 課題の概要
この講座で学んだ内容をもとに、ホテルの予約管理REST API を作成します。
ホテルの予約情報を登録・取得・更新・削除できるAPIを、Python(FastAPI + SQLModel)で実装します。
2. 事前準備
2.1 前提となる講座
この章では、以下の知識を前提としています。自信がない場合は先に関連講座を実施してみましょう。
| 講座名 | 必要な知識 |
|---|---|
| Git入門 | リポジトリ作成、コミット、Pushなど、Gitの基本操作 |
| データベースとは | データベースの基本概念、テーブルやレコードの理解 |
| SQL基本文法 | SELECT・INSERT・UPDATE・DELETEなど、SQLの基本操作 |
| Webアプリケーションの基本 | HTTPリクエスト・レスポンスやWebアプリケーションの基本構造 |
| テストの考え方 | 単体テスト・カバレッジなど、テストの基本概念 |
2.2 必要なツール
この章では、以下のツールを使用します。まだインストールしていない場合は、リンク先の手順に沿って準備をお願いします。
| ツール名 | 関連箇所 | 理由 |
|---|---|---|
| Visual Studio Code | Visual Studio Codeのインストール | 応用課題のコードを記述するエディタとして使用する |
| Python | Pythonのインストール | REST APIの実装・実行環境として使用する |
| MySQL | MySQLのインストール | REST APIから接続するデータベースとして使用する |
| Git | Git/GitHubのセットアップ | ソースコードのバージョン管理に使用する |
2.3 必要なアカウント
この章では、以下のアカウントを使用します。まだ用意していない場合は、リンク先の手順に沿って準備をお願いします。
| アカウント名 | 関連箇所 | 理由 |
|---|---|---|
| GitHubアカウント | Git/GitHubのセットアップ | 応用課題のソースコードのホスティング先として使用する |
3. 必須要件
3.1 REST API
- FastAPIを使用してREST APIを作成すること
- 以下の5つのエンドポイントを実装すること
- 一覧取得:
GET /reservations— 予約の一覧を取得する - 詳細取得:
GET /reservations/{id}— 指定したIDの予約を取得する - 作成:
POST /reservations— 新しい予約を作成する - 更新:
PUT /reservations/{id}— 指定したIDの予約を更新する - 削除:
DELETE /reservations/{id}— 指定したIDの予約を削除する
- 一覧取得:
- リクエスト・レスポンスにPydanticモデル(またはSQLModel)を使用すること
- 不正なリクエスト(存在しないIDへのアクセス等)に対して、適切なHTTPステータスコードを返すこと
3.2 データベース
- SQLModelを使用してデータベースにデータを永続化すること
- 予約テーブル(
reservations)には以下の項目を含むこと
| カラム名 | 型 | 説明 |
|---|---|---|
id |
INTEGER | 主キー(自動採番) |
guest_name |
VARCHAR | 予約者名 |
check_in |
DATETIME | チェックイン日時 |
check_out |
DATETIME | チェックアウト日時 |
num_guests |
INTEGER | 宿泊人数 |
status |
VARCHAR | 予約ステータス(pending / confirmed / cancelled) |
created_at |
DATETIME | 作成日時 |
updated_at |
DATETIME | 更新日時 |
3.3 静的解析
- flake8とmypyの設定ファイルを用意し、静的解析が通る状態にすること
3.4 自動テスト
- pytestを使用してAPIの自動テストを作成すること
- 最低限、予約の作成と取得のテストが含まれていること
4. 提出形式
以下の2項目をまとめて提出してください。
4.1 GitHubリポジトリ
実装したコードをアップロードしたGitHubリポジトリのURLを記載してください。
4.2 まとめ
実装中に苦労したこと、工夫したこと、学んだことを記載してください。