👁

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 仕様書を記載する
まとめ 実装中に苦労したこと、工夫したこと、学んだことを記載する

設計・構築課題の伴走はプレミアムプランでご利用いただけます。

プランのアップグレード

3. メンタリング報告

以下の内容をメンタリングで報告してください(メンタリングはプレミアムプランでご利用いただけます)。

3.1 講座の振り返り

以下の要素それぞれについて、3つの観点で報告してください。

対象の要素

  • Pythonでのデータベース操作
  • FastAPI
  • SQLModel
  • REST API
  • 静的解析
  • 自動テスト

報告観点

  • 概要
  • 何ができるのか?
  • 導入するメリット

3.2 提出課題の説明

提出した実装をもとに、以下の内容を報告してください。

  • Flake8・Black・mypy と pytest の設定・構成内容
  • どのようなルール・テスト観点で組み立てたのか
  • 実装中に工夫したこと・苦労したこと

この教材は役に立ちましたか?

いいねをたくさんいただけると、制作者の励みになり、より多くのセクションが作れるようになります。

感想を一言(任意)

いただいたコメントは次の制作のヒントになります。ぜひお気軽にご投稿ください。

このコメントは他の受講生には公開されません。DevOps Camp運営が、教材改善のために確認します。

0 / 2000