Step4: プログラミング2
このStepでは、Pythonでのデータベース操作・FastAPI・SQLModel・REST API・静的解析・自動テストを学び、その中で扱う品質担保の仕組みを制作物である sns-camp-api に組み込みます。
| 💡 ポイント |
|---|
| Step 3 と同様、プログラミングに苦手意識がある場合や、すでに多言語を含めてプログラミング経験がある場合はスキップしても構いません。スキップした場合は、後半の「非機能要件の実装」(Step 10〜12)にその分の時間を充てて、より多くの施策実装に取り組んでいただけます。ただし、静的解析と自動テストは CI/CD パイプラインで扱う場面が多く、DevOps エンジニアに強く求められる素養です。プログラミング部分をスキップする場合でも、「Pythonで静的解析をしよう」「Pythonで自動テストをしよう」の章とその考え方は確認しておくことを推奨します。 |
1. 講座の履修
Python講座 の以下の章を実施してください。すでに同等の知識がある場合は、講座の履修はスキップしても構いません。
2. 課題の実施
2.1 目的・背景
Python の DB 操作から REST API までを学び、それらが制作物(sns-camp-api)でどのように実装されているかを読み解けるようにします。あわせて、DevOps の文脈で欠かせない「品質担保の仕組み」として、静的解析と自動テストを sns-camp-api に組み込みます。これは後続の CI/CD パイプライン Step でそのままパイプラインに載せる基盤にもなります。
2.2 実施要件
対象のサンプルアプリケーション
Step 1・Step 2 で構築した sns-camp-api を継続して使用してください。本Stepでは sns-camp-api への組み込みを必須とし、sns-camp-front は余裕があれば任意で対応してください。
静的解析(sns-camp-api 必須)
sns-camp-api に、講座で扱った Flake8(コードスタイルチェック)・Black(自動フォーマット)・mypy(型チェック)の 3 つを導入し、コード全体で違反ゼロの状態にしてください。
自動テスト(sns-camp-api 必須)
sns-camp-api の主要なエンドポイントに対する自動テストを pytest で追加し、すべてのテストがパスする状態にしてください。少なくともヘルスチェックエンドポイントと、DBを使うエンドポイントのうち代表的なもの1つ以上をカバーしてください。
sns-camp-front への適用(任意)
余裕があれば、sns-camp-front にも同様に静的解析と自動テストを組み込んでください。時間が足りない場合はスキップしても構いません。
API 仕様書の作成(任意)
インフラエンジニアは Web アプリを自分で開発するまでは求められないことが多い一方、Web アプリの構造を理解することは求められます。この機会に、sns-camp-api のコードを読み解き、主要エンドポイントの API 仕様書を自分で書き起こしてみてください。
対象は代表的なエンドポイント(例: ヘルスチェック、認証、投稿の CRUD、タイムライン、いいね、フォロー)で構いません。フォーマットは Markdown 表など任意で、以下のようなテンプレートを参考にできます。
### <メソッド> <パス>
- 認証: 必要 / 不要
- リクエスト: (リクエストボディの説明)
- レスポンス: (レスポンスボディの説明)
- エラー: (代表的なエラーケース)
2.3 判定基準
動作確認
以下のコマンドをローカル環境で実行し、いずれも成功する(違反ゼロ、テスト全パス)ことを確認してください(対象フォルダは sns-camp-api の実装フォルダに置き換えてください)。
Flake8:
flake8 app/
期待する出力: 違反がなければ何も出力されない
Black:
black --check app/
期待する出力:
All done! ✨ 🍰 ✨
N files would be left unchanged.
mypy:
mypy app/
期待する出力:
Success: no issues found in N source files
pytest:
pytest
期待する出力:
============================= test session starts ==============================
...
============================== N passed in X.XXs ==============================
2.4 課題提出
下記内容を提出フォームより提出してください(提出はプレミアムプランでご利用いただけます)。
| 項目 | 内容 |
|---|---|
| 概要 | sns-camp-api に組み込んだ静的解析(Flake8・Black・mypy)と自動テスト(pytest)の構成を簡潔に記載する |
| 実装コード | 設定ファイルおよび追加したテストコード、または反映した GitHub リポジトリの URL を記載する |
| 動作確認 | 静的解析コマンド・自動テストコマンドを実行した結果を、コマンドと出力がわかる形で記載する |
| API 仕様書(任意) | 対応した場合は、書き起こした API 仕様書を記載する |
| まとめ | 実装中に苦労したこと、工夫したこと、学んだことを記載する |