강의

멘토링

커뮤니티

BEST
Programming

/

Back-end

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

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

難易度 初級

受講期間 無制限

  • tobyilee
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、観測性まで、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,731

受講生

1,007

受講レビュー

416

回答

5.0

講座評価

8

講座

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

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

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

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

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

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

カリキュラム

全体

43件 ∙ (14時間 31分)

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

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

受講レビュー

全体

253件

5.0

253件の受講レビュー

  • 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

    受講レビュー 4

    平均評価 5.0

    5

    79% 受講後に作成

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

    • tobyilee
      知識共有者

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

  • sooragenius6352님의 프로필 이미지
    sooragenius6352

    受講レビュー 3

    平均評価 5.0

    5

    98% 受講後に作成

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

    ¥14,840

    tobyileeの他の講座

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

    似ている講座

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