inflearn logo
知識共有
inflearn logo

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

仮想のスタートアップ開発チームが、クリーンコードとSpringの開発原則に従い、段階的に迅速かつ安定、柔軟でメンテナンス性の高い開発を行う過程を、実務に近い形式で体験できる講義シリーズ「クリーンSpring」の第1弾です。ドメインモデルパターンとヘキサゴナルアーキテクチャを活用し、ドメイン中心の初期開発段階で必要な技術と開発戦略を習得することができます。

難易度 初級

受講期間 無制限

Java
Java
Spring
Spring
Spring Boot
Spring Boot
JPA
JPA
hexagonal-architecture
hexagonal-architecture
Java
Java
Spring
Spring
Spring Boot
Spring Boot
JPA
JPA
hexagonal-architecture
hexagonal-architecture

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

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

5.0

5.0

공부

100% 受講後に作成

単に機能だけがうまく動作するコードを越えて、保守しやすく構造的にも綺麗なコードを書きたかった方なら、この講義が大いに役立つと思います。Springを活用した開発経験がある程度ある開発者であっても、ドメイン中心の設計を実際にどう適用すべきか途方に暮れることが多いのですが、この講義はそのような悩みを一つ一つ取り上げながら解決できるよう上手く案内してくれています。 特にドメインモデルが何なのか、なぜ重要なのか、そしてそれをどのように現実的なコード構造に織り込むことができるのかを理論と実習を並行して説明してくれる方式がとても印象深かったです。最初は多少難しく感じるかもしれませんが、トビーさんの伝達力が落ち着いていて親切なので、最後まで付いて行きながら概念を体得することができました。また実務にすぐ適用可能な例題と実際のリファクタリング過程を一緒に見せてくれるため、学習の没入度と実用性を両方兼ね備えた講義だと思います。 「私もこれからクリーンな設計をやってみたい」という考えをしたことがある開発者なら、この講義を通してより具体的な方向を掴むことができるでしょう。機能的な実装を越えてドメインとビジネス中心にアプリケーションを見つめる視点を持ちたい方々に心から推薦いたします。

5.0

mon0mon

100% 受講後に作成

ジュニア開発者として、ヘキサゴナルアーキテクチャについて非常に基礎的なレベルの知識のみで開発に適用していたところ、この講義に出会いました。 受講を通じて、これまで正しく理解していなかった、あるいは誤って認識していた概念を明確に整理することができました。 特にジュニア開発者が混乱しやすい点や、普段何気なく見過ごしがちな内容を、深く丁寧にご説明いただき、大変助かりました。 開発をしていると、「最近はこうするらしい」「それが良いらしい」といった流れにただ従ってしまうことが多いのですが、 この講義では、そのようなトレンドを超えて、なぜそうすべきなのか、どのような基準でそのように設計されたのかを指摘してくださり、非常に印象的でした。 RFC標準のような公式文書を基に概念の根拠を説明し、それをSpringにどのように効率的に適用できるかも併せて教えてくださった点が特に記憶に残っています。 また、講義の途中で予期せぬバグや例外状況が発生した際、それらを解決していく過程を見て、多くのことを学ぶことができました。 エラーメッセージを解釈し、現状を分析して原因を推論するデバッグの過程は、開発において欠かせない重要な部分だと考えます。 個人的には、トビーさんと一緒にペアプログラミングをしているような貴重な経験であり、他の開発者の皆さんにもぜひ一度体験していただきたいと強くお勧めします。😊

5.0

beom2day

98% 受講後に作成

こんにちは。トビーさんのSpring本は持っていますが…講義は初めて受講しているのですが、コードレベルで注意すべき点や気をつけるべき点を細かく教えてくださる点が良いと思います。 もちろん、それ以外の内容も大変役立ちますが、基礎的なこと、例えばなぜ改行をこのようにするのか、意味単位で区切るものなど…「わざわざ?」と説明する必要があるのか、と思うようなことまで説明してくださる点が良かったです。 私は実はこういうことにかなり興味があるんです。だから、その点において私がわざわざ質問しなくても説明してくださる点が良いと思います。そして、コミュニティで受講生たちが投稿している質問も読んでいますが、回答の一つ一つがすべて十分な説明を含んでいて、大変参考になります。ありがとうございます^^ セクション4を受講中ですが、全講義受講後にまたレビューを書きに来ます。ありがとうございます^^ -------------------------全講義受講レビュー この講義を受講する前のベース知識は、クリーンアーキテクチャ、ドメインの概念、テストコード、オブジェクト指向コード、リファクタリングなどで散らばっていました。 ヘキサゴナルアーキテクチャのDDD開発方法に関する講義を見て、散らばっていた知識が集約されていくように感じました。結局…私が持っているベース知識が、テストコードをうまく作成するためだという事実を改めて知ることができました。 初期の設計から、ユニットテスト、アーキテクチャ設計まで、開発過程を詳しく見ることができる点が非常に有益だと思います…隣で開発する姿を直接観察しているような気持ちでした…新しい知識をたくさん学ぶことができましたが、パート2が出るまでに吸収しようと思います。復習しながら生じる疑問は質問を残して自分のものにしてみます。ありがとうございます パート2を楽しみにしています!!!

受講後に得られること

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

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

  • ヘキサゴナルアーキテクチャの特徴と効果、そして簡単かつシンプルに適用する方法

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

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

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

  • 集約を利用したモジュール構成

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

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

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

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

336073_1

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

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

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

この講義では、機能を追加したり構造を整理したりするたびに、直接リファクタリングしてテストを作成する過程を反復的にお見せします。

このような実践こそがクリーン・スプリング戦略であり、これを通じて皆さんは変化に強いコードを生み出す思考の力を養うことになります。

(クリーン・スプリングに関する詳しい内容は、インフコン2024の発表動画でご覧いただけます。👉 )

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

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

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

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

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

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

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

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

学習内容

ドメインモデルを核に据える開発戦略

ドメインの概念と関係を正確に反映させるためには、これらを抽象化したドメインモデルが必要です。ドメイン駆動設計(DDD)は、ドメインエキスパートと開発チームが共にモデルを確立・発展させ、複雑な問題を効果的に解決するアプローチです。

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

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

ドメインモデル中心の開発を効果的に行うためには、すべての開発チームメンバーがドメインエキスパートと共にモデルを作り、コミュニケーションを図れる必要があります。

そのためには、ドキュメント、コード、会議など、あらゆるコミュニケーションにおいて単一の語彙体系、すなわちユビキタス言語(Ubiquitous Language)を一貫して使用することが重要です。

講義では、このユビキタス言語とドメインモデルをMarkdownドキュメントとしてプロジェクトに記録する方法を紹介し、コードの変更とともにモデルがどのように発展していくかも併せて見ていきます。

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

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

講義では、ヘキサゴナルアーキテクチャの核となる概念や階層構造、インターフェースの構成方法を確認し、それを通じてアーキテクチャが提供する利点を効果的に得る方法を学びます。

簡単な原則を守るだけでもドメインロジックに集中することができ、特に環境に依存しないテストを構成する方法を実習を通じて適用してみます。

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

ヘキサゴナルアーキテクチャとドメインモデルパターンを併せて適用することで、凝集度が高く保守性に優れた構造を作ることができます。しかし、このような構造の価値を正しく活用するためには、レイヤードアーキテクチャの依存関係の規則をしっかりと守らなければなりません。

講義では、各レイヤーの責任に応じて機能をどのように配置するか、コード構成をどのようにすべきかを中心に、レイヤー構造の設計で見落としがちな部分を深く掘り下げます。

애그리거트를 이용한 모듈 구조 설계

ドメイン駆動設計で紹介されたアグリゲート(Aggregate)は、データ変更の単位を設計することで、変更の一貫性を維持できるようにしてくれます。

アグリゲート内で満たすべき不変条件をどのように発見し扱うのか、アグリゲート・ルートをどのように使用すべきか、そしてこれらをサポートするSpring Dataプロジェクトのリポジトリパターンをどのように使用すべきかを確認し、アグリゲートパターンを適用してみます。

アグリゲートとヘキサゴナルアーキテクチャを併用して、詳細モジュールを構成する方法についても説明します。

JPAエンティティでクリーンなドメインオブジェクトを作成

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

過度なJPAアノテーションがドメインロジックと混在している問題を解決できる標準的なアプローチ方法もお教えします。その際、AI技術を活用してみることもあります。

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

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

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

こんな方に
おすすめです

学習対象は
誰でしょう?

  • WebとDBを使用するSpring技術を用いた実務開発がどのように進められるか知りたい方

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

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

  • 最新のアーキテクチャや開発手法を学び、大きな期待を持って仕事を始める新入社員やジュニア開発者をリードしたいシニア開発者

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

  • Java言語

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

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

こんにちは
tobyileeです。

15,895

受講生

1,044

受講レビュー

421

回答

5.0

講座評価

8

講座

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

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

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

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

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

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

もっと見る

カリキュラム

全体

43件 ∙ (14時間 31分)

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

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

受講レビュー

全体

267件

5.0

267件の受講レビュー

  • maskunflower23707님의 프로필 이미지
    maskunflower23707

    受講レビュー 4

    平均評価 5.0

    5

    79% 受講後に作成

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

    • tobyilee
      知識共有者

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

  • 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
      知識共有者

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

  • sooragenius6352님의 프로필 이미지
    sooragenius6352

    受講レビュー 3

    平均評価 5.0

    5

    98% 受講後に作成

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

    tobyileeの他の講座

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

    似ている講座

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

    ¥15,384