강의

멘토링

커뮤니티

BEST
Programming

/

Back-end

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

仮想のスタートアップ開発チームが段階的にクリーンコードとSpring開発原則に従って、迅速で安定かつ柔軟、そして保守性の高い開発を行う過程を実際の業務遂行と類似した方式で経験できるようにする講座シリーズである「クリーンSpring」の第1回目講座です。ドメインモデルパターンとヘキサゴナルアーキテクチャを活用して、ドメイン中心の初期開発段階で必要な技術と開発戦略を習得できます。

  • tobyilee
실습 중심
백엔드이해하기
클린코드
Java
Spring
Spring Boot
JPA
hexagonal-architecture

学習した受講者のレビュー

受講後に得られること

  • ドメインモデルを中心とした設計と開発戦略

  • ドメイン駆動設計(DDD)のさまざまなパターンと実践法

  • ヘキサゴナルアーキテクチャの特徴と効果、簡単にこれを適用する方法

  • 多様なテスト技法とアーキテクチャテストツールの使用法

  • AIを活用してJPAエンティティを簡潔なドメインモデルにする方法

  • 最新スプリングウェブ例外処理の技法とテストツールの使用法

  • アグリゲートを用いたモジュール構成

トビーと一チームなる
スプリングサービスを完成させます。

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

皆さんはトビーと一チームになり、一つのサービスを一緒に完成していきます。企画から実装、リファクタリングまで、各過程ごとに何を考慮し、どんな決定を下すべきかトビーとともに現実的な観点から悩んで判断していきます。このプロセスを通して、あなたはどの技術が「いつそしてなぜ必要なのか」、「なぜこのような構造を設計したのか」という文脈を理解する力を養います。

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

336073_1

持続可能なコードの選択
クリーンスプリング

クリーンスプリングは、「クリーンコード」の原則をスプリング開発に適用する実践戦略です。単に見やすいコードではなく、チームの生産性と長期的なコード品質を一緒に引き上げることが目標です。ケント・ベックが語った「機能的でクリーンなコード」は、その重要な哲学をよく示しています。

保守性と生産性はお互いを前提とします。変更しやすいコードがメンテナンスを容易にし、素早く変えることができなければ生産性も上がります。この構造を作るためにはリファクタリングが必須であり、その前提はテストコードです。

このレッスンでは、機能を追加したり構造を整理したりするたびに、直接リファクタリングしてテストを作成するプロセスを繰り返し表示します。

これらの実践はまもなくクリーンスプリング戦略であり、あなたはこれによって変化に強いコードを生み出す事故の力を育てます。

(クリーンスプリング詳細な話はインフコン2024発表映像でご覧いただけます。👉 )

トビーのクリーンスプリングシリーズ、第一

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

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

講義では、最新のSpring、Web、JPA技術をもとにドメインモデルとヘキサゴナルアーキテクチャを実際に適用してみて、プロジェクト構造の把握、モジュール分離、コラボレーション方式、テスト戦略といった実務初期のコア悩みを一緒に解決していきます。このプロセスでは、ドメインモデルをリファクタリングして発展させる流れを体験することができます。

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

Part1.メンバー機能を中心に、ドメインモデルとアーキテクチャのスケルトンを構築し、コアロジック設計、構造化、テストコードベースの開発方法を実践します。 *本講義

Part2.複雑な要件をカバーし、モデルをリデザインし、実践に必要な深い設計、さまざまなリファクタリング技術、テストサポートツールを適用します。

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

学習内容

ドメインモデルを中心とした開発戦略

ドメインの概念と関係を正確に反映するには、それを抽象化したドメインモデルが必要です。ドメイン主導設計(DDD)は、ドメイン専門家と開発チームが一緒にモデルを確立し発展させ、複雑な問題を効果的に解決するアプローチです。

講義では、複雑なドメインではなくても、DDDの重要な原則とパターンを実際のサービス開発に適用します。また、ドメインモデルをコードに自然に溶かし、継続的な統合を通じて発展させる方法も一緒に練習します。

コミュニケーションのためのドメインモデル文書の作成方法

ドメインモデル中心の開発が効果的になるためには、すべての開発チームのメンバーがドメインの専門家と一緒にモデルを作成してコミュニケーションできる必要があります。

そのためには、文書、コード、会議など、あらゆるコミュニケーションで単一の語彙システム、つまりユニバーサル言語(Ubiquitous Language)を一貫して使用することが重要です。

レッスンでは、この普遍的な言語とドメインモデルをマークダウン文書としてプロジェクトに書き込む方法を紹介し、コードの変更とともにモデルがどのように進化していくのかをまとめていきます。

ヘキサゴナルアーキテクチャの事実と誤解

ヘキサゴナルアーキテクチャはよく誤解されますが、Springの基本原則に従う開発者であれば、すでにその価値をある程度活用している可能性があります。

レッスンでは、ヘキサゴナルアーキテクチャの重要な概念、階層、インターフェイスの構成方法を調べ、アーキテクチャが提供する利点を効果的に得る方法を学びます。

簡単な原則だけを守ってもドメインロジックに集中することができます。

階層間依存関係ルールの適用

ヘキサゴナールアーキテクチャとドメインモデルパターンを一緒に適用すると、凝集度が高くメンテナンス性に優れた構造を作ることができます。ただし、これらの構造の価値を適切に活用するには、階層アーキテクチャの依存関係規則をよく守る必要があります。

講義では、各階層の責任に応じて機能をどのように配置するか、コード構成をどのようにすべきかを中心に、階層設計でよく見逃しやすい部分を深く扱います。

アグリガートを用いたモジュール構造設計

ドメイン主導設計で導入されたアグリゲートは、データ変更の単位を設計し、変更の一貫性を維持します。

アグリゲート内で満たさなければならない不変式をどのように見つけて扱うか、アグリゲートルートをどのように使用するのか、それをサポートするSpring Dataプロジェクトのリポジトリパターンはどのように使用するのかを見て、アグリゲートパターンを適用します。

アグリゲットとヘキサゴナールアーキテクチャを組み合わせて詳細モジュールを設定する方法も説明します。

JPAエンティティによるきちんとしたドメインオブジェクトの作成

JPA技術の特徴と目的を見て、JPAエンティティをドメインオブジェクトを効果的にする技術として活用する方法を紹介します。

過度のJPAアノテーションがドメインロジックと混在している問題を解決するための標準的なアプローチもお知らせします。この時、AI技術を活用してみます。

JPAエンティティをドメインと区別して使用する特別なケースについても話します。

アーキテクチャテストとコード検証、テスト戦略

作成したアプリケーションコードが外部に提供する機能が正しく作成されていることを確認するテストコードを作成します。テストでは直接確認が難しいが、運用環境で問題になる可能性がある、静的分析ツールを活用したコード検証方式も併せて適用し、コードの安定性と一貫性を高める方法を習得します。

こんな方に
おすすめです

学習対象は
誰でしょう?

  • WebとDBを使うSpring技術での実務開発がどう進むか知りたい方

  • クリーンコード原則を適用して保守性に優れ生産性の高いシステム開発をご希望の方

  • サービス開発をリードする中級以上の開発者に成長したいジュニア開発者

  • 最新アーキテクチャと開発技法を学び、多大な期待を胸に働き始める新人、ジュニア開発者をリードしたいシニア開発者

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

  • Java 言語

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

  • ウェブAPIとJPAを使用するスプリングアプリケーション開発経験

こんにちは
です。

15,490

受講生

963

受講レビュー

410

回答

5.0

講座評価

8

講座

호주에 살고 있는 소프트웨어 개발자입니다. 30년간 다양한 분야의 시스템과 서비스를 개발해본 경험이 있습니다. 

스프링 프레임워크와 관련 기술을 좋아하고 JVM 기반 언어를 주로 사용합니다.

한국스프링사용자모임(KSUG)을 설립하고 활동했고, 토비의 스프링이라는 책을 쓰기도 했습니다.

개발과 관련된 다양한 주제에 관해 이야기하는 것을 좋아합니다. 

 

 

カリキュラム

全体

43件 ∙ (14時間 31分)

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

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

受講レビュー

全体

238件

5.0

238件の受講レビュー

  • zin님의 프로필 이미지
    zin

    受講レビュー 2

    平均評価 5.0

    5

    29% 受講後に作成

    初めてトビーさんと一緒に開発をした時、その時間を他の同僚開発者の方々も一緒に経験できたらと思いました。そこで、<トビーのクリーン・スプリング>というロードマップのアイデアを差し上げました。 そのロードマップの最初の講義が始まって、ワクワクしています! この講義でビジネスを共に悩み、開発に適用し、学び、実務で使ってみる…それぞれのやり方で楽しく受講していただけたら嬉しいです。 私も一生懸命受講して、まだ足りない部分を少しずつ補っていこうと思います。 ご一緒しませんか?🥰

    • tobyilee
      知識共有者

      今回の講義は短い時間でしたが、Zinさんと一緒に開発し勉強した記憶を思い出しながら準備しました。その時作った簡単な例と目的を持ったアーキテクチャ構造とドメインロジックを扱う方法、テストコードをしっかり作成しリファクタリングしたものが、講義として再構成されました。現場で一緒に開発した時も、またその後に講義を企画し準備し公開する全ての瞬間に大変助けてくださり感謝いたします。 お忙しいとは思いますが、講義を再度ご確認いただき、今回はどのような感想だったか、ぜひお聞かせください。お待ちしております。 ありがとうございます。

  • choicore님의 프로필 이미지
    choicore

    受講レビュー 2

    平均評価 5.0

    修正済み

    5

    100% 受講後に作成

    講座がリリースされたというニュースを聞いて、週末に観ようと決心し、先ほど完講しました。 韓国のスプリング大将の業務スタイルとノウハウを間接的に体験できる貴重な時間でした。 難易度は初級に分類されていますが、難易度を別にしても、他の開発者の業務スタイルと思考方式は、どこでも簡単に聞けるものではないと思います。 モデルを設計しながら、持つべき役割、役割のために必要とする状態など、段階的にコードを変えていく過程と、時折人間味(誤字、漏れ)を見せてくださいますが、テストコードで識別できる、本当に数え切れないほど日常で発生しうる部分が、テストコードの価値をさらに示していると感じました。 Fixture, Mock(Stub)などの活用、検証すべき対象、行為、目的の識別など、単位、統合などの区別や、テストに関するノウハウがたくさんあります! junit-platform.properties 最高 MockMvcTester 最高 特に「ヘキサゴナルアーキテクチャの真実と誤解」セクションが印象深かったです。漠然としか知らなかったので、エリック・エヴァンスやアリスター・コバーンなどの創始者がどのように説いたのか、語っていた本質的な部分を的確に指摘してくださり、難しく感じていた部分をうまく整理してくださったようです。 この講座は次の方々に役立つと思います 設計を主導しなければならないシニア開発者の方々 ヘキサゴナルアーキテクチャプロジェクトを勉強し経験したが、深い理解が不足していると感じる方々 ドメインモデルパターン、トランザクションスクリプトパターン、ヘキサゴナルアーキテクチャについてきちんと学びたい方 スプリング大将がどのように開発しているか知りたい方 クリーンスプリング、スプリングとの統合で多くの利点を得た構成方式について学ぶことができました。ありがとうございます。 スプリングなしでは開発しません。スプリングはPOJOだ!!!

    • tobyilee
      知識共有者

      いつも詳細な受講レビューを残してくださるチェヒョンさんですね。パターンと原則だけでなく、現時点のスプリングの最新技術も折に触れてお伝えするよう努めましたが、それを的確に捉えていただき、ありがとうございます。引き続き、優れた開発者としてご活躍されることを期待しております。ありがとうございます。

  • arawn님의 프로필 이미지
    arawn

    受講レビュー 1

    平均評価 5.0

    5

    100% 受講後に作成

    LinkedInに残していた完走感想をInflearnにも移しておきます。 https://www.linkedin.com/posts/arawn_%EA%B8%B0%EB%8B%A4%EB%A6%AC%EB%8D%98-%EC%9D%B4%EC%9D%BC%EB%AF%BC%EB%8B%98%EC%9D%98-%EC%8B%9C%EB%A6%AC%EC%A6%88-%EA%B0%95%EC%9D%98-%EB%A1%9C%EB%93%9C%EB%A7%B5-%ED%86%A0%EB%B9%84%EC%9D%98-%ED%81%B4%EB%A6%B0-%EC%8A%A4%ED%94%84%EB%A7%81%EC%9D%98-%EC%B2%AB-%EC%A3%BC%EC%A0%9C%EC%9D%B8-activity-7352614457123987456-pleA?utm_source=share&utm_medium=member_desktop&rcm=ACoAABvezLwBBEWVnGUkIY_xxm2aE3-sGtVHt0g -- 이일민さんの講義は今回も期待を裏切りませんでした。特有の思慮深くKindな説明はもちろん、ライブコーディングを通じて思考の流れを落ち着いて解きほぐしていく方式が特に良かったです。今どんな考えをしているのか、どんな意図でコードを書いているのかを逐一指摘しながら進行する姿は感嘆を呼び起こすほどでした。講義について行くうちに、まるで講師本人になって思考過程をそのまま体験するような没入感を感じることができ、これを通じてJavaとSpringでアプリケーションを開発する際にドメインモデルパターンとヘキサゴナルアーキテクチャをどのように適用できるかを自然に理解するようになります。 技術的な深さも優れていましたが、今回の講義で特に印象深かった点は、専門家として「技術に対する態度」と「学習方法」を身をもって示すという点でした。 第一に、技術学習に対する正しいアプローチ方式を明確に提示します。ヘキサゴナルアーキテクチャを説明する際は、これを最初に提案したアリスター・コックバーンの原文と核心主張を基盤に内容を展開します。これはあまりにも当然な方式のように見えますが、実際に多くの人が1次資料ではない2次、3次に加工されたコンテンツを通じて技術に接しています。加工された資料は理解を助けるのに有用ですが、原著者の意図が希釈されたり歪曲される危険も存在します。技術の本質を理解するには、可能なら原典資料にアクセスしなければならないという点を改めて振り返らせました。 第二に、自分だけの論理を備えた思考方式の重要性を実感できました。例えば「Entity vs DTO」授業では、プレゼンテーション層でエンティティを使用することがなぜ問題にならないのかについて、自分の見解を一つ一つ論理的に証明して見せてくださいました。開発者なら何らかの技術的決定を下した時、その理由を外部権威に依存せず自分の論理で説明できなければなりません。これは当然ですが実際に実践するのは容易ではない部分ですが、이일민さんはその当然なことをどのように実現できるかを直接示します。 この講義は単純に技術を教えるだけに留まらず、開発者として備えるべき思考方式と態度まで一緒に伝える価値ある経験でした。真剣に開発に向き合おうとする方々に積極的にお勧めします。

    • tobyilee
      知識共有者

      講義を通じてお伝えしたかったことをよくまとめていただきましたね。ありがとうございます。

  • maskunflower23707님의 프로필 이미지
    maskunflower23707

    受講レビュー 2

    平均評価 5.0

    5

    79% 受講後に作成

    混沌と無秩序に満ちた場所で、トビーさんが光あれと言ったところ、光が現れて秩序が正された。 私が多くの悩みを抱えていたドメインモデルパターンとヘキサゴナルアーキテクチャについての正論を見ている気分です。お勧めします。

    • tobyilee
      知識共有者

      いえ、私にはそこまで優れた能力があるわけではありません。 ただ、熱心に勉強し、確認してきたことを、少し混乱されている方や、技術の価値をうまく得られていない方々を見た時に、残念に思ったことを思い出しながら、一生懸命説明しようと努力しました。それでも、私にも間違いがあるかもしれません。 多くの方々がご意見をくださっているので、私もさらに学び、準備して、今後の講義で引き続きお伝えしていきます。

  • sooragenius6352님의 프로필 이미지
    sooragenius6352

    受講レビュー 3

    平均評価 5.0

    5

    98% 受講後に作成

    講義を購入してからすぐに素早く見て受講評を書きたかったのですが、時間が経ってしまい今になって後記を残すことになりました。涙😢 今回の講義も「信頼して聞くトビーさんの講義」という言葉が無駄に出てきたわけではないということを改めて感じることができました!!! 最近多くの開発者がヘキサゴナルアーキテクチャに対する関心が高まり、様々な話が行き交っているのですが、概念に対する誤解もそれだけ多くなっているようです。しかし今回の講義では、そのような誤解を解くためにアーキテクチャの定義から丁寧に指摘してくださり、なぜそのような構造が必要なのかを論理的に説明してくださったので非常に印象深かったです。特に、単純に理論に留まるのではなく実際の事例と共に説明してくださったので理解がはるかによくできました。 また、ドメインモデルに@Entity、@ColumnのようなJPAアノテーションが侵入することについて多くの方が疑問を持ち、時には混乱されるのですが、この講義ではその部分について深い考察を共に分かち合い、それに対する現実的な解決方向を提示してくださった点が本当によかったです。実務でよく直面する悩みについて正面から向き合い、一つずつ指摘していく方式と適切なトレードオフを説明してくださる部分が印象的でした!最高でした。 そして開発をしていると段々複雑度が増え、そうするうちに自分が作ったシステムの流れすら見失ってしまう場合が多いです。ところが講義では、そのような複雑性をどう扱うべきか、複雑度を整理する過程がどれほど重要かを体系的に見せてくださり、それを基盤として開発を続けていくアプローチ方式が本当に印象深かったです。このような部分は他の講義では見ることが難しい、実務的な内容が溶け込んでいました。まるでトビーさんと同じチームになって一緒に実際のプロジェクトを進行している感じがするほど没入感が高かったです。 そして何より良かった点は、正解を性急に提示せず一緒に悩みながら漸進的に改善していく流れでした。この方式は現実の開発環境とあまりにも似ていて、単純に知識を伝達されるのではなく、実務でどのような観点で問題を見るべきかを自然に習得することができました。本当に面白く講義を聞くことができた経験でした。 講義を見ながら過去に開発していたその時代が過ぎ去りながらドーパミンが生まれ、その時が懐かしくなりました。本当に次の講義も期待したいです!本当にとてもとてもとてもとても面白かったです! このような貴重な講義を出してくださって本当にありがとうございます!

    期間限定セール

    ¥66

    29%

    ¥14,969

    tobyileeの他の講座

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

    似ている講座

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