トビーのクリーン・スプリング - ドメインモデルパターンとヘキサゴナルアーキテクチャ Part 2

「トビーのクリーンスプリング」は、スプラン(Splearn)というオンライン教育サービスを開発・運営する架空のスタートアップ開発チームが、段階的にクリーンコードとSpring開発原則に従い、迅速かつ安定しており、柔軟でメンテナンス性の高い開発を行う過程を、実際の業務進行に近い形で体験できる講座です。

難易度 初級

受講期間 無制限

Java
Java
Spring
Spring
Spring Boot
Spring Boot
JPA
JPA
Refactoring
Refactoring
Java
Java
Spring
Spring
Spring Boot
Spring Boot
JPA
JPA
Refactoring
Refactoring

受講後に得られること

  • アプリケーションコンポーネントでヘキサゴナルアーキテクチャの内部を構成する方法

  • 複雑なドメインロジックをドメインモデルパターンで安全に実装し、進化させる戦略

  • 設計のトレードオフを検討し、リファクタリングを通じて既存の設計を改善する実践的な経験

  • ランダムデータを使用したテストフィクスチャの開発と効率的なテスト作成方法

  • ArchUnitでコンポーネント間の依存関係ルールを検証する方法

  • DIPを利用して双方向依存関係の問題を解決する設計手法

AIにコードを任せる時代、
開発者に必要な判断力と設計力 developers need

AIにそのまま開発を任せると、最も平均的なSpringのコード、さらにはアンチパターンが混ざったコードが出力されやすくなります。

AIがコードを作成したとしても、最終的なレビューと責任は開発者の役割です。何が最善であるかトレードオフを決定することも、AIのハーネスとなるドメインモデル設計ドキュメント・開発ガイド・アーキテクチャテストを作成することも開発者にかかっています。

結局、AIを制御する力はアーキテクチャ、ドメインモデル、
そして保守性の高いコードを設計する実力から生まれます。




スキルの向上 1. 開発者の判断力

トビーと一つのチームになっ
スプリングサービスを作ります。

<トビーのクリーンスプリング>は、架空のオンライン教育サービス「スプラン(Splearn)」を共に開発しながら、企画から設計、実装、リファクタリングまでの全過程を実践のように経験する講義です。

皆さん、トビーと一つのチームになって、一つのサービスを完成させていきます。各段階で何を考慮し、どのような決定を下すべきか、開発歴31年の開発者の思考プロセスをそばで追いかけます。この過程を通じて、ある技術が「いつ、なぜ必要なのか」、「なぜこの構造で設計したのか」という文脈を理解する力を養うことができます。

<トビーのクリーンスプリング> ロードマップ
クリーンコードとスプリング開発原則を習得するシリーズ講義です。ドメインモデリングからMSA、観測性まで、スプリングアプリケーションの成長過程を7つの講義に込めました。 (
ロードマップを見る>>)


スキルアップ 2. コード設計力

持続可能なコードのための
クリーンスプリング

このすべての過程において、私たちが中心に据えている原則がクリーンスプリングです。

クリーンスプリングは「クリーンコード」の原則をスプリング開発に適用する実践的な戦略です。単に見栄えの良いコードではなく、チームの生産性と長期的なコード品質を共に向上させることが目標です。ケント・ベックが述べた「動作するきれいなコード(Clean Code That Works)」が、その核心的な哲学をよく表しています。

保守性と生産性は互いを前提としています。変更しやすいコードであってこそ保守が容易になり、素早く変更できてこそ生産性が向上します。この構造を作るにはリファクタリングが不可欠であり、その前提となるのがテストコードです。

そしてこの基準が身に付けば、AIに何をどのように指示すべきかもようやく明確になります。

トビーのクリーンスプリング、最初のテーマ

ドメインモデルと
ヘキサゴナルアーキテクチャ

クリーンスプリング開発の始まりは、サービスが解決しようとする問題(ドメイン)を深く理解することです。そして、それをコードに反映し、機能が拡張されても安定的に発展させられるように設計する核心的な戦略が、ドメインモデルパターンとヘキサゴナルアーキテクチャ(hexagonal-architecture)です。

講義では、最新のスプリング、ウェブ、JPA技術をベースに、ドメインモデルとヘキサゴナルアーキテクチャを実際に適用しながら、プロジェクト構造の構築、モジュールの分離、協業方法、テスト戦略といった実務初期の核心的な悩みを共に解決していきます。この過程で、ドメインモデルをリファクタリングしながら発展させていく流れを経験することができます。

<ドメインモデルとヘキサゴナルアーキテクチャ>はpart1、2の2つの講義で構成されます。


Part1. 会員機能を中心に、ドメインモデルとアーキテクチャの骨組みを構築しながら、コアロジックの設計、構造化、テストコードベースの開発手法を実習します。 (Part1. を見る >)

Part2. 複雑な要求事項を扱いながらモデルをリデザインし、実務に必要な深みのある設計と多様なリファクタリング技法、テスト支援ツールを適用します。 ✔️ 本講義


ドメインモデルとヘキサゴナルアーキテクチャ part2

学習内容

Part 1のフィードバックと設計のリファクタリング

Part 1を受講された方々のフィードバックや質問をもとに、既存の設計を再検討します。設計のトレードオフの正確な意味を確認し、ドメイン値オブジェクトとアプリケーションDTOを分離する設計変更を、マーチン・ファウラー流の安全で漸進的なリファクタリングで遂行しますテストが常に成功する状態を維持しながらリファクタリングを進める方法を身につけることができます。

コミュニケーションの意図を明らかにするヘキサゴナルポート設計

ポートは、アプリケーションが外部の世界とどのような意図を持って相互作用するかを捉えたものです。一つの巨大なサービスインターフェースにすべてのメソッドを詰め込む代わりに、インターフェース分離の原則(ISP)に従い、コミュニケーションの意図単位でポートを構成する方法を、会員認証ポートの開発を通じて実習します。ポートのテストをインターフェース基準で作成し、リファクタリングを行っても壊れないように作る方法、そしてチームの設計慣例を開発ガイド文書として明文化する方法もあわせて扱います。

アプリケーションコンポーネント - ヘキサゴナルの内部構成

ヘキサゴナルアーキテクチャは、内部をどのように構成すべきかについては答えを提示しません。この講義では、UMLコンポーネントの概念を取り入れ、一つのアグリゲートとそれを取り巻くアプリケーションサービスをアプリケーションコンポーネントという独立して交換可能なモジュール単位で設計する戦略を提案します。アグリゲート間の直接参照と識別子参照、変更単位の制限、コンポーネント間の単方向依存関係といった実践的な原則を確立し、講師・講義・受講・カリキュラムの4つのコンポーネントを順に完成させます。

テストの改善とアーキテクチャの検証

アーキテクチャの原則は、人の注意に頼るのではなく、テストコードで強制しなければなりません。 カスタムステレオタイプの合成アノテーションでアーキテクチャの意図をコードに明示し、ArchUnitを使用してスライス間の循環依存の禁止、他のアグリゲートの状態変更の遮断といったチームのアーキテクチャルールを、ビルド時に自動検証する方法を学びます。また、Instancioを活用したランダムテストデータ、テストフィクスチャとベースクラスを利用して、テストコードの品質と作成効率を同時に向上させる技法を実習します。

複雑なドメインの集約設計とTDD

講義(Course)のライフサイクル(下書き-検修-公開-保管)を状態遷移としてモデリングし、受講(Enrollment)における複合ナチュラルIDと例外・Optionalの使用基準を整理します。最後のカリキュラムコンポーネントでは、ユビキタス言語の発見が集約の境界問題を解決していく過程を経験し、セクションやレッスンの追加・移動・削除といった複雑なコレクションベースのドメインロジックをTDDで開発します。さらに、@OrderColumnと@EntityGraphで集約を効果的に永続化し、Hibernate統計で実行クエリ数までテストで検証することでN+1問題を解決します。

DIPを利用したコンポーネント依存関係の問題解決

コンポーネントが増えると、循環参照の誘惑が訪れます。インターフェースに依存するだけでは不十分であり、インターフェースの所有権まで逆転させてこそ、真の依存関係逆転(DIP)であるということを、コースとカリキュラム間の双方向依存の問題を解決しながら確認します。ヘキサゴナルアーキテクチャのrequiredポートが、まさにDIPの適用例であるという事実も併せて理解することになります。

こんな方に
おすすめです

学習対象は
誰でしょう?

  • クリーン・スプリング Part 1を学習し、残りのドメインの実際の実装まで完成させてみたい方

  • ドメインモデルパターンとヘキサゴナルアーキテクチャを実務レベルの複雑なドメインに適用する方法が気になる方

  • アプリケーションが大きくなるにつれ、内部構造をどのように分け、整理すべきか途方に暮れている開発者

  • テストの作成によって開発が遅くなっていると感じ、テストを迅速かつ効果的に作成する方法を探している方

  • ドキュメントとして存在するだけで崩れてしまうアーキテクチャルールを、コードで検証し守り抜きたい開発者

  • AIコーディングエージェントが作成したコードを理解し、レビューできる設計能力を身につけたい開発者

前提知識、
必要でしょうか?

  • Java言語 - JDK21

  • スプリング基本原理の理解

  • Spring Bootを利用したWeb APIとJPAを使用するアプリケーションの開発経験

こんにちは
tobyileeです。

インフラン認証

16,212

受講生

1,109

受講レビュー

427

回答

5.0

講座評価

9

講座

オーストラリアに住んでいるソフトウェア開発者です。30年間、さまざまな分野のシステムやサービスを開発してきた経験があります。

スプリングフレームワークと関連技術を好み、主にJVMベースの言語を使用しています。

韓国スプリングユーザーグループ(KSUG)を設立して活動し、『トビーのスプリング』という本を執筆したりもしました。

開発に関連する様々なトピックについて話すのが好きです。

ユーザーコミュニティ(KSUG)を設立して活動し、『トビーのスプリング』という本を執筆したりもしました。開発に関する様々なテーマについて話すのが好きです。

ユーザーコミュニティ(KSUG)を設立して活動し、『トビーのスプリング』という本を執筆したりもしました。開発に関する様々なテーマについて話すのが好きです。

もっと見る

カリキュラム

全体

48件 ∙ (12時間 58分)

講座資料(こうぎしりょう):

授業資料
講座掲載日: 
最終更新日: 

受講レビュー

全体

2件

5.0

2件の受講レビュー

  • geminikims님의 프로필 이미지
    geminikims

    受講レビュー 3

    平均評価 5.0

    5

    33% 受講後に作成

    AIがコードを書いてくれる時代でも、本当に必要な講義です! 実装とリファクタリング、テストコードに対するトビーさんの視点や、トビーさんがどのような方式で開発について考えを展開していくのか、その思考のプロセスを覗き見ることができる講義なので、購入して損はない内容です! 特に最後の授業である講義のまとめ部分は、現代に対するトビーさんのインサイトまで込められており、まだ人間がもっと勉強し、もっと学習し、もっと訓練しなければならないということを実感させられました。 単に講義のメインテーマを超えて、年次を問わず開発者ならおすすめしたいです!

    • zin님의 프로필 이미지
      zin

      受講レビュー 3

      平均評価 5.0

      5

      100% 受講後に作成

      AI時代において、クリーンスプリングはAIにどのようなハーネス(制約や枠組み)を提供すべきかを示すガイドラインになるでしょう。 ドメインモデルのドキュメント、開発ガイド、そしてアーキテクチャテストなど、開発者がAIを信頼して開発できる環境を提供しなければならないからです。そういう意味で、今回のクリーンスプリング1 Part2は、自分自身や開発チームが期待する方向で開発を進められるよう助けになるのではないかと思います。 今回の講義も面白いです。 😊 多くの開発者の方々に受講していただきたいです!

      tobyileeの他の講座

      知識共有者の他の講座を見てみましょう!

      似ている講座

      同じ分野の他の講座を見てみましょう!

      期間限定セール

      ¥9,016

      30%

      ¥12,880