バックエンドチェックリスト
本章ではTQS-S/W認証のバックエンド領域に対する詳細チェックリストを定義します。バックエンドチェックリストは開発環境、Javaコードコンベンション、Spring Boot、データベース、ビルド、ファイルアップロードの6つの領域で構成されます。各項目の分類は必須(O)、推奨(R)、任意(S)に区分され、検証方法を併せて明示します。
32.2.1. 開発環境
開発環境チェックリストはプロジェクトチームがTQS規格で定義した標準開発環境を正しく構成しているか検証します。
| 番号 | 項目 | 分類 | 検証方法 |
|---|---|---|---|
| 1 | VSCodeを標準IDEとして使用する | O | 設定ファイル確認 |
| 2 | .vscode/settings.jsonをプロジェクトに含めて共有する | O | ファイル存在確認 |
| 3 | .vscode/extensions.jsonに必須拡張機能を定義する | O | ファイル存在および内容確認 |
| 4 | .editorconfigファイルをプロジェクトルートに含める | O | ファイル存在確認 |
| 5 | Java 21をランタイムとして使用する | O | pom.xmlのjava.version確認 |
| 6 | Node.js LTSバージョンを使用する | O | .nvmrcファイル確認 |
開発環境項目はプロジェクトの基本インフラを構成する要素です。全てのチームメンバーが同一の開発環境で作業できるよう、設定ファイルをバージョン管理システムに含めなければなりません。
32.2.2. Javaコードコンベンション
Javaコードコンベンションチェックリストはソースコードの一貫性と可読性を検証します。
| 番号 | 項目 | 分類 | 検証方法 |
|---|---|---|---|
| 7 | Google Java Formatをspotless-maven-pluginで適用する | O | mvn spotless:check実行結果確認 |
| 8 | フォーマッタ違反件数が0件である | O | ビルドログ確認 |
| 9 | クラス名にPascalCaseを使用する | O | コードレビュー |
| 10 | メソッド名と変数名にcamelCaseを使用する | O | コードレビュー |
| 11 | 定数名にUPPER_SNAKE_CASEを使用する | O | コードレビュー |
| 12 | パッケージ名に小文字のみ使用する | O | コードレビュー |
| 13 | 機能別パッケージ構造を適用する(レイヤー別パッケージ構造は未使用) | O | ディレクトリ構造確認 |
| 14 | マジックナンバーを使用せず定数として定義する | R | コードレビュー |
| 15 | 変更されない変数にfinalキーワードを使用する | R | コードレビュー |
| 16 | メソッドあたりの行数を30行以下に保つ | R | コードレビュー |
| 17 | 不要なコメントを記述しない(自明なコードを優先) | R | コードレビュー |
コードコンベンションはプロジェクトの保守性に直接的に影響を及ぼします。Google Java Formatはビルドプロセスに統合して自動で検証しなければなりません。
32.2.3. Spring Boot
Spring Bootチェックリストはフレームワークの正しい使用と標準設定の適用状況を検証します。
| 番号 | 項目 | 分類 | 検証方法 |
|---|---|---|---|
| 18 | Spring Boot 3.xバージョンを使用する | O | pom.xmlのspring-boot-starter-parentバージョン確認 |
| 19 | プロファイル別設定ファイルを分離する(local / dev / staging / prod) | O | application-{profile}.ymlファイル存在確認 |
| 20 | @ConfigurationPropertiesを使用して設定をタイプセーフに管理する | R | コードレビュー |
| 21 | @RestControllerAdviceを使用してグローバル例外処理を実装する | O | コード確認 |
| 22 | エラーコードをEnumで定義して管理する | O | コード確認 |
| 23 | SLF4Jを使用してロギングする(System.out.println未使用) | O | コード検索(System.out検索結果0件) |
| 24 | ログレベルを環境別に適切に設定する | O | 設定ファイル確認 |
| 25 | @Transactionalのスコープをサービスレイヤーに限定する | R | コードレビュー |
| 26 | コントローラにビジネスロジックを含めない | O | コードレビュー |
Spring Bootの設定と構造はプロジェクトの安定性と運用利便性に核心的な影響を及ぼします。プロファイル分離とグローバル例外処理は必ず適用しなければなりません。
32.2.4. データベース
データベースチェックリストはデータアクセス層の標準実装とスキーマ管理体系を検証します。
| 番号 | 項目 | 分類 | 検証方法 |
|---|---|---|---|
| 27 | PostgreSQLをデータベースとして使用する | O | application.ymlデータソース設定確認 |
| 28 | jOOQをデータアクセス層として使用する(JPA / Hibernate未使用) | O | pom.xml依存関係確認 |
| 29 | Flywayを使用してデータベースマイグレーションを管理する | O | pom.xml依存関係およびマイグレーションファイル確認 |
| 30 | jOOQ codegenをMavenビルドに連動する | O | pom.xmlのjooq-codegen-mavenプラグイン確認 |
| 31 | HikariCPコネクションプールを設定する | O | application.ymlのHikariCP設定確認 |
| 32 | テーブル名、カラム名にsnake_caseを使用する | O | DDLファイル確認 |
| 33 | Flywayマイグレーションファイルのネーミング規則を遵守する(V{バージョン}__{説明}.sql) | O | マイグレーションファイル名確認 |
| 34 | インデックスのネーミング規則を遵守する(idx_{テーブル}_{カラム}) | R | DDLファイル確認 |
データベース領域はTQS規格の核心技術スタックであるPostgreSQL + jOOQ + Flywayの正しい適用を検証します。JPAまたはHibernateを使用している場合、必須項目未充足と判定します。
32.2.5. ビルド
ビルドチェックリストはMavenビルド構成の標準遵守と品質ツール連動状況を検証します。
| 番号 | 項目 | 分類 | 検証方法 |
|---|---|---|---|
| 35 | pom.xmlがTQS標準構造に従う | O | ファイル構造確認 |
| 36 | maven-compiler-pluginにJava 21設定を明示する | O | pom.xmlプラグイン設定確認 |
| 37 | JaCoCoプラグインを設定してカバレッジを測定する | O | pom.xmlのjacoco-maven-plugin確認 |
| 38 | JaCoCoラインカバレッジ基準を80%以上に設定する | O | JaCoCoレポート確認 |
| 39 | JaCoCoブランチカバレッジ基準を70%以上に設定する | O | JaCoCoレポート確認 |
| 40 | OWASP Dependency-Checkプラグインを設定する | R | pom.xmlプラグイン確認 |
| 41 | OWASPスキャン結果でCVSS 7以上の脆弱性が0件である | R | スキャンレポート確認 |
| 42 | maven-surefire-pluginを設定してテストをビルドに統合する | O | pom.xmlプラグイン確認 |
ビルド構成はプロジェクトの品質ゲートの役割を果たします。JaCoCoカバレッジ基準とOWASP依存関係スキャンはコード品質とセキュリティを自動的に検証する核心ツールです。
32.2.6. ファイルアップロード
ファイルアップロードチェックリストはファイルアップロード機能のセキュリティとストレージ管理体系を検証します。
| 番号 | 項目 | 分類 | 検証方法 |
|---|---|---|---|
| 43 | アップロードファイルの拡張子をホワイトリスト方式で検証する | R | コードレビュー |
| 44 | アップロードファイルのMIMEタイプをサーバー側で検証する | R | コードレビュー |
| 45 | アップロードファイルサイズを制限する | R | 設定ファイル確認 |
| 46 | ストレージディレクトリ構造がTQS標準を遵守する | R | 設定ファイルおよびディレクトリ構造確認 |
| 47 | アップロードされたファイル名をUUID等に変換して保存する | R | コードレビュー |
ファイルアップロードはセキュリティ脆弱性が発生しやすい領域です。拡張子とMIMEタイプの両方を検証する二重検証方式を適用することを推奨します。
32.2.7. 項目要約
バックエンドチェックリストの全項目数と分類別分布は以下のとおりです。
| 領域 | 必須(O) | 推奨(R) | 任意(S) | 合計 |
|---|---|---|---|---|
| 開発環境 | 6 | 0 | 0 | 6 |
| Javaコードコンベンション | 7 | 4 | 0 | 11 |
| Spring Boot | 7 | 2 | 0 | 9 |
| データベース | 7 | 1 | 0 | 8 |
| ビルド | 6 | 2 | 0 | 8 |
| ファイルアップロード | 0 | 5 | 0 | 5 |
| 合計 | 33 | 14 | 0 | 47 |
バックエンドチェックリストは合計47項目で構成されます。必須項目33個を全て充足しなければ基本認証を取得できず、推奨項目14個の充足率に応じて優秀または最優秀認証等級が決定されます。