フェーズ 4 – フレームワークとウェブアプリケーション (3~4ヶ月)
Spring Boot, Spring Core, Spring Data JPA
- Spring Core: Dependency Injection (
@Bean,@Autowired), IoC Container. - Spring Boot: Auto-Configuration, Starters (
spring-boot-starter-web,spring-boot-starter-data-jpa),application.yml. - Spring Data JPA: Repositories (
CrudRepository,JpaRepository),@Queryを使用したクエリ、ページネーション。 - 例: タスクアプリでタスクを管理するREST endpointsの作成(CRUD)。
Spring Security (JWT, OAuth2)
- 概念: Authentication、Authorization、Security Filters。
- JWT: トークンの作成と検証、
JwtAuthenticationFilterの使用。 - OAuth2: Resource Serverの設定、プロバイダ(例: Google)との統合。
- 例: JWTとロール(
ADMIN,USER)でタスクのendpointsを保護。
ユニットテストとインテグレーションテスト
- Unit Tests: JUnit 5、Mockito(
@Mock,@InjectMocks)、ビジネスロジックのテスト。 - Integration Tests:
@SpringBootTest,@WebMvcTest, テスト用のH2データベース。 - Testcontainers: DockerコンテナでのPostgreSQLを使用したテスト。
- 例: タスクアプリのサービスとendpointsのテスト。
RESTful APIsとSwaggerによるドキュメンテーション
- REST: HTTPメソッド、ステータスコード、RESTful原則。
- Spring REST:
@RestController,@RequestMapping,@PathVariable。 - Swagger: springdoc-openapiの設定、
@Operationによるアノテーション。 - 例: Swagger UIでタスクアプリのendpointsをドキュメント化。
GraphQLの紹介
- 概念: Queries、Mutations、Schema。
- Spring Boot with GraphQL: spring-boot-starter-graphqlを使用したセットアップ。
- 例: ステータスごとのタスクをリストするGraphQL Queryの作成。
基本的なフロントエンド統合
- Thymeleaf: Spring BootでHTMLページをレンダリングするためのテンプレート。
- 例: タスクの表示と作成のためのシンプルなウェブインターフェースの作成。
ビルドツール: MavenとGradle
- Maven:
pom.xmlの構造、依存関係、プラグイン。 - Gradle:
build.gradleファイル、タスク、依存関係管理。 - 例: MavenとGradleでタスクアプリを設定。
プロジェクトのデプロイ
- プラットフォーム: Railway、Heroku、AWS(Elastic Beanstalk)。
- 手順: JARとしてパッケージ化、GitHub ActionsでCI/CDを設定。
- 例: PostgreSQLを使用してRailwayにタスクアプリをデプロイ。
最終プロジェクト
タスク管理システム
- データベース: Task(タイトル、説明、ステータス)とUserテーブル(1:Nの関係)。
- Java: Spring Boot、Spring Data JPAを使用したREST APIでCRUD。
- セキュリティ: JWT Authentication、ロール(ADMIN, USER)。
- テスト: ユニットテスト(サービス)とインテグレーションテスト(Testcontainersを使用したendpoints)。
- ドキュメンテーション: endpointsの説明付きのSwagger UI。
- オプション: タスクをリストするGraphQL Queryとインタラクション用のThymeleafインターフェースの追加。
- Git: 機能ごとのcommit(例: feature/rest-api, feature/security)。
- 公開: GitHubにREADME(セットアップ、endpoints、デプロイ)とともに公開。