강의

멘토링

로드맵

Inflearn brand logo image
Programming

/

Back-end

[Java 実務プロジェクト入門編] オブジェクト指向思考力トレーニング - ミニプロジェクト3種実習

小さなプロジェクトから構造を捉える練習まで! Javaのオブジェクト指向設計と実践経験が不足している方のための 実際に作りながら成長するミニプロジェクト実践入門講座。 基本から構造的思考まで、Javaアプリケーションを最初から最後まで実装しながら実力を養いましょう。

  • Kevin
실습 중심
백엔드
Java
IntelliJ IDEA
dip-principle
validations
domains

こんなことが学べます

  • Javaプログラミングに対する自信

  • 退屈だったJavaに対する楽しさ

  • 適切なJavaバックエンド開発者として入門するための開始位置

  • JavaのStream APIの活用法

  • アプリケーションをどこからどのように実装すべきかという方法

  • ユニットテストコードの必要性

  • 単体テストコードをどこからどのように書くべきかという方法

  • 要求仕様書を作成し、要求事項を分析する練習

  • 妥当性検証の重要性と妥当性検証を実施する方法

  • ドメインルールの重要性と、ドメインルールをコードで表現する練習

  • ドメインルールをユニットテストコードで作成する練習

  • JavaのExceptionを活用したバリデーション方法

  • カスタム例外を活用する練習

  • レイヤードアーキテクチャの概念と適用方法

  • ジェネリックの活用方法

  • DIPの概念とDIPが必要な理由、適用事例

  • Google Tasks API の活用方法

こんな方におすすめです

Java文法は学んだが、実際にどこからどのように実装すべきかわからない方

Javaプロジェクト実習経験が不足している方

Springは学んだものの、Javaの基礎が弱くてプロジェクトで挫折した方

📌 受講前 vs 受講後、このように変わります!

🔸 "要求事項をコードに移すのが難しかったです"

→ 機能を分割し、クラスを直接設計できるようになります

🔸 「オブジェクト指向設計が途方に暮れます」

→ OOP思考で構造化されたコード作成が可能になります

🔸 「プロジェクト実習経験が不足していました」

→ 3つのミニプロジェクト完成で実戦感覚が向上します

🔸 "ただ目で見て学んでいただけでした"

→ 分析 → 設計 → 実装 → テスト全過程を直接実行することになります

💡 アプリケーション実装ができない方のための特別な講義



ブートキャンプで1000人近くの学生を教えながら学生たちから聞くことになったよくある話

「概念は理解できるのですが、実装ができません」

「Javaの文法はもう少し分かるようになったけど、Javaで何かを作ってみろと言われると、どこから始めればいいのか分からないです」

「Javaを終えてSpringに移ったのですが、実習に手をつけられません」

「学習資料にあるコードを最初から最後まで入力してみましたが、プロジェクトがとても怖いです」


その時、私が学生たちにしてあげた話は次の通りです。

「目だけで学習しようとせず、指と頭で学習してください」

「コードをタイピングする時は、自分で考えながらタイピングしてください」

「まず基礎を固めてください。その次は応用のために練習に練習を重ねてください」


このように自分で考えながら言語と技術の基礎を固め、応用のための練習に練習を重ねると、「今度は何を作ってみようか?」というワクワク感に包まれている自分を発見することになります。


このようなドキドキ感を味わうための最も良い方法は何でしょうか?

とても小さなサイズのアプリケーションであっても、自分で考え、悩みながら最初から最後まで直接作ってみることです。


[[SPAN_1]]⭐[[/SPAN_2]] [[SPAN_2]]何を作ればいいかわからない方、どうやって作ればいいかわからない方は、この講義を受講してください。[[/SPAN_2]]

皆さんのアプリケーション実装能力だけでなく、プロジェクトに対する恐怖ではなくワクワクするドキドキ感を感じられるようにお手伝いいたします。

ミニプロジェクトJava 1部では、Javaと少しの外部ライブラリ、Google Tasks APIを利用してコンソールで動作するアプリケーションを作ってみます。


「コンソールベースのアプリケーションなんて使い道もないのに何で作るんだ?」と思うかもしれません。^^;

もちろん私もこの言葉に100パーセントではありませんが、十分に共感します。

しかし、コンソールベースのアプリケーションは少し不便ではありますが、Javaの基礎を固めるにおいて非常に重要な役割を果たすと思います。


「まさかコンソールベースのアプリケーションだけ作って終わりじゃないよね?」と思われるなら?

いいえ。ミニプロジェクトJava 2部では、UI(Java FX)も実装してみます。^^;


「Java FXは実務ではあまり使われない技術じゃないの?なのになぜ学ぶの??」と思われるなら?

優秀なJava開発者として長期間実務でうまく生き残るためには、UIを実装してみながらクライアント、サーバーバックエンドを問わず両方の立場を理解することが重要です。

クライアント側の立場を理解できれば、より良いサーバー側アプリケーションを作ることができるのではないでしょうか?^^;

とりあえずやってみると面白いと思います。^^

[[SPAN_1]]⭐[[/SPAN_2]] [[SPAN_2]]講義の進行方式[[/SPAN_2]]

  • 合計3つのミニプロジェクトを実行します:

    1. Stream API九九表アプリケーション

    2. Todoリスト管理アプリ (1): 要件ベースの設計、実装およびテスト

    3. Todoリスト管理アプリ (2): Google Tasks API連携

  • 各プロジェクトは要求仕様書に基づいて
    受講生が自ら設計 → 実装 → テストまでまず試行し、
    Kevinの実装バージョンと比較しながらより良い構造と思考を学ぶ方式です。

📶実装スキルパワーアップ段階ガイド

100% パワーアップ

  • 自分で全機能を実装してから講義と比較します。

    • 「全然分からないけど、どうして見ないでいられるの?」という考えが当然浮かぶでしょうが、インターネットで調べるにしてもChat GPTに聞くにしても、とにかく自分ですべての機能を実装してみます。

  • 最も大きな成長と達成感を感じることができます。


80% パワーアップ

  • できる限り最大限自分で実装してみて、

    詰まった部分は講義内容を参考にして適用してみます。

50% パワーアップ

  • 講義を先に見てコードを真似して入力しながら学習します。


  • その次に空のプロジェクトで再び自分でコーディングしてみます。

0% パワーアップ

  • ただ目で講義を見るだけです。

  • このようにしてはいけないということです。^^;

    • プロジェクトというのは、とても小さなプロジェクトであっても、必ず自分で考えながらコードをタイピングする過程が繰り返され、蓄積されなければなりません。

    • そうしてこそ、その過程で自分のものにする知識が少しずつ積み重なっていくことができます。

[[SPAN_1]]✨[[/SPAN_2]] [[SPAN_2]]この講義で得られるもの[[/SPAN_2]]

  • Javaオブジェクト指向コードに対する感覚

  • 設計 → 実装 → テスト フロー全体の経験

  • 小さくて多様なプロジェクト実習を通じたコードの自信向上

  • Springを学ぶ前に、Javaをしっかりと固められる基盤


  • Javaが面白くなってきた

この講義の後に、以下のような後続シリーズを通じて様々なケースのアプリケーションを実装する練習をしていただけるでしょう。

  • Java 1部オープン

  • Java 2部(近日オープン予定)

  • Java 第3部(近日公開予定)

  • Spring MVC編予定

  • テスト編予定

  • Spring Rest Docs編予定

  • Spring Security編予定

  • Spring WebFlux編予定


- クリーンコード - 著者の言葉を少し引用させていただきます。^^

自転車の乗り方に慣れると自転車が体の一部のように動くようにこの講義を通してアプリケーション実装が皆さんの快適な日常に近づけることを願っています。

こんな内容を学びます

💡Introductionセクションを除いたセクション順序ですので、お間違いのないようお願いいたします。

セクション1:Stream APIを利用した九九アプリケーションの作成

セクション1では、皆さんの頭と指を動かすことができる非常にシンプルなアプリケーションを作ってみます。

「何?九九のプログラムなら簡単すぎるんじゃない?」と思うかもしれません。九九のプログラムはアルゴリズム問題を解く時にも定番として出てくる基礎的な問題の一つですからね。


しかし、きちんと動作する一つのアプリケーションを作るという観点から考える必要があり、JavaのStream APIを利用して実装する必要があるため、九九プログラムが新鮮に感じられるかもしれません。^^


プロジェクト目標

  1. Javaのラムダ式と関数型インターフェースの概念を理解することができる。

  2. Stream APIの特性と基本的な使用方法を理解できる。

  3. コードの可読性の重要性を理解することができる。

  4. メソッド抽出(Extract)を通じて機能別にメソッドのロジックを分離することができる。

  5. クラスを利用して役割分離の概念を理解することができる。


セクション2:ToDoリスト管理アプリケーション制作(1)

セクション2では、やることを管理するアプリケーションを作ってみます。

タスク管理アプリケーションはTodoListという名前でよく知られており、ウェブプログラミングに入門する際に最もよく使われるテーマの一つです。


やることを登録し、登録されたやることを完了処理する簡単な機能だと思うかもしれませんが、この簡単な機能をいざ直接実装してみろと言われると躊躇する方がかなりいると思います。

さらに、アプリケーションのコード品質やコード可読性、単体テストケースまで考慮するとなると、決して甘く見ることはできません。^^;

講義では、単純に実行されるアプリケーションを作ることで終わるのではなく、次のようにかなり重要なことを学ぶことができます。


セクション2で学べること

  1. 作成すべきアプリケーションの大まかな要求事項をクラスとメソッドの枠組みで表現する方法と、このように表現するとどのような利点があるかを理解できます。

  2. 特定の機能を実装するための思考の流れをコードで最初に表現した後に、該当機能を具体的に実装する方法を理解することができます。

  3. 単体テストコードを段階的に完成させる方法を理解することができます。

  4. ドメインルールが適用されたドメインロジックをサービスコードから分離する方法分離するとなぜ良いのかを理解することができます。

  5. ドメイン駆動開発で使用するD.I.P(Dependency Inversion Principle、依存性逆転の原則)設計原則の基本を理解することができます。


プロジェクト目標

  • クラスとメソッドの枠組みを利用してアプリケーションの基本構造を構築していく方法を理解することができる。

  • やることデータを利用して簡単なやること登録ロジックを実装することができる。

  • レイヤードアーキテクチャ(Layered Architecture)を理解できる。

  • JavaのMapをインメモリデータストレージのように使用することができる。

  • 貧弱なドメインモデル(Anemic Domain Model)と豊富なドメインモデル(Rich Domain Model)の違いを理解することができる。

  • D.I.P(Dependency Inversion Principle) 設計原則の基本概念とこの原則を適用する理由を理解することができる。


セクション3:ToDoリスト管理アプリケーション制作(2)

セクション3ではGoogle Tasks API技術を利用して、セクション2で作成したタスク管理アプリケーションのタスクデータを持続可能に管理できるようにアップグレードしてみます。


もちろん最初からGoogle Tasks APIを使ってタスク管理アプリケーションを作ることもできますが、そうするとアプリケーションを実装する間にあまりにも多くの知識を頭の中に詰め込まなければならないため、望ましくないと思いました。


とにかくセクション2でタスク管理アプリケーションをしっかりと作成しておけば、セクション3で次の内容を学習することに集中できます。


セクション2で学べること

  1. Googleが提供するサービス(Google Tasks、Google Drive、Google Calendarなど)を利用するための共通した手順を理解することができます。

  2. Googleが提供するサービスを使用するための認証プロセスを大きな流れで理解することができます。

  3. 特定の技術を学習する目的でテストケースを作成する理由と利点を理解することができます。

  4. テスト過程での前処理、後処理過程が必要な理由を理解でき、テストケースに適用できます。

  5. D.I.P(Dependency Inversion Principle)設計原則が適用されたデータレイヤーでデータアクセス技術を柔軟に変更できるようになります。

  6. 異なるタイプのオブジェクト間でデータをやり取りするためのConverterを適用できます。

  7. Object Factory + Singletonパターンを利用してアプリケーションで使用されるオブジェクトを一箇所で管理する方法を理解することができます。


プロジェクト目標

  • 特定の技術を理解するための学習テストに関する概念を理解することができる。

  • 外部APIサービスの概念を理解することができる。

  • Google Tasks APIサービスを利用してタスクを管理することができる。

  • DIP(Dependency Inversion Principle)を適用してデータレイヤーの技術を柔軟に適用できる。

  • ファクトリーの概念を理解することができ、Factoryを利用してオブジェクトを生成することができる。

  • RFC-3339に明記された日付と時間に関する概念を理解し、Java APIを利用してアプリケーションで使用できる。


ご質問はありますか?

Q. Java 1部の講義を受講するには、Javaだけできれば良いのでしょうか?Javaをどのレベルまで扱えれば良いでしょうか?

Java 1部の講義では合計3つのミニプロジェクトを実装しますが、そのうち2つのプロジェクトは純粋にJavaのみを使用してアプリケーションを実装し、残りの1つのプロジェクトはGoogle Tasks APIという技術を追加で使用してアプリケーションを実装します。

Google Tasks APIの使用経験がない方が多数いらっしゃる可能性があるため、Google Tasks APIの使用方法に関する内容が講義内に一定部分含まれています。


結論を申し上げますと、基本的にJavaの基礎(変数、データタイプ、標準入出力、クラス、インターフェースの概念など)の知識をある程度お持ちであれば、今回の講義を受講していただけます。


ただし、講義の途中途中で学生が初めて接する可能性のある内容(テスト技法、オブジェクト指向設計技法など)が含まれていますが、このような内容は講義を聞きながら学んでいけばよいと思います。

Q. なぜこの講義を受講すべきなのでしょうか?

先ほども少し申し上げましたが、ブートキャンプやコンピュータ学院などでプログラミング言語を学ぶ際に最も途方に暮れる部分は、まさに自分が学習したプログラミング言語を使って目に見える何かをどのように作ればよいのかよく分からないということです。

小さなミニアプリケーションではありますが、学生たち自身が考え、悩みながら直接アプリケーションを実装することによって「私も何かを自分で作ることができる」という自信を持てるようにすること、そして「開発者として今後進むべき方向性に気づかせること」が今回の講義シリーズの核心目標です。

そのため、アプリケーション実装に困難を感じている方には、良いサポートを提供できると思います。

Q. Java開発者になるためにはSpring Frameworkを必須で知っておく必要があるようですが、本当にSpringを知らなくても大丈夫ですか?

Springに関する知識が全くなくても問題ありません。

Javaベースのウェブアプリケーション開発について語る際、Spring Frameworkを抜きにして話すことはできませんが、Javaの基礎ができていない状態でSpring Frameworkをアプリケーションで使おうとして壁にぶつかる学生たちを多く見てきました。

このような問題を経験させたくないという願いが込められた講義だと思っていただければと思います。

Q. Javaを使って自分で何かを作るということ自体がとても漠然としていて、少し怖くもあります。この講義を受ければ、こんな気持ちがなくなるでしょうか?

この講義をただ聞いているだけでは、そんな気持ちは消えないと思います。^^;

ただし、私がお勧めする方式で講義を最後まで受講していただき、講義に出てくる内容を自分のものにできれば少なくとも実装に対する恐怖心は確実になくすことができると確信しています。

Q. 私が実装したコードと講師の方が実装したコードがかなり違う可能性があると思うのですが、どうすればよいでしょうか?

やはり皆さんより私の方が開発経験が多いため、私が書いたコードの方が少し良いコードである可能性が高いと思います。(そうでないと思われる場合は、いつでもご意見をいただければありがたいです。^^;)

もし私が書いたコードがもう少し良いコードだと思われるなら皆さんが実装したコードに私が書いたコードを適用してみることをお勧めします。

もちろん、より良いコードかどうか判断がつかない場合もありますし、自分が書いたコードに他の人のコードを適用するには、かなり時間がかかる場合もあります。

しかし、直接適用してみてこそ、これが良いコードなのか悪いコードなのかについての判断もより上手にできるようになり、皆さんの実力もより向上すると思います。


Q. 講義で説明される講義資料およびソースコードはどこでダウンロードできますか?

  • 講義で説明する講義資料およびソースコードをダウンロードするには、下記の学習資料項目に記載されたGithubリンクをクリックした後、該当Repositoryからダウンロードしてください。

受講前の参考事項

実習環境

  • オペレーティングシステムおよびバージョン(OS)

    • PC環境のOSであれば、どのOSでも構いません。

    • ただし、JDK 17以上がインストール可能である必要があり、IntelliJ IDEが実習を進めるのに支障がない程度のコンピューティングパワー(CPU、メモリなど)を備えることが良いでしょう。

  • 使用ツール

    • JDK 17(最小仕様)

    • IntelliJ IDE

      • 講義で使用するIntelliJ IDEはUltimate版ですが、無料版であるCommunity版を使用していただいても全く問題ありません。

      • IntelliJ IDEでなくても、使い慣れたコードエディタツール(Visual Studio Codeなど)があれば、それを使用していただいても構いません。

    • Gradle 7.3(最小仕様)以上

      • JDK 17に対応するGradleバージョンが7.3であるため、両者のバージョンを合わせておきました。

      • バージョン互換性で問題が発生する場合は、Java Compatibilityを参考にして、できるだけバージョンを合わせていただければと思います。

    • JUnit 5(最小仕様)以上


学習資料

注意事項

  • 講義で使用される学習資料およびコードをブログなど個人スペースで使用される場合は、講義タイトルおよび講師名を記載し、講義リンクを追加していただく必要があります。その他の無断配布は許可されませんので、ご了承ください。

こんな方に
おすすめです

学習対象は
誰でしょう?

  • Javaを勉強したものの、Javaで何をすべきかわからない人

  • Javaの文法学習に退屈している人

  • Javaの文法は知っているけれど、何か実装してみろと言われるとどこから手を付けていいか分からない人

  • バックエンドエンジニアになるために、Javaの基本をしっかりと身につけたい人

  • Javaアプリケーションの実装を楽しむことができる人

  • 自分で考え、悩みながらアプリケーションを実装する練習が必要な人

  • アプリケーションの実装という観点から、Javaをうまく扱えない人

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

  • ジャバ

  • 自分で考える練習

こんにちは
です。

6,287

受講生

231

受講レビュー

107

回答

4.8

講座評価

6

講座

- 주력 언어 또는 기술 : Java, Spring Framework, RxJava, Reactor, Spring WebFlux

- (주)코드스테이츠(https://www.codestates.com)에서 Senior Educational Software Engineer(Backend)로 활동
(From 2022.03 To 2024.01.31)

- 프리랜서 개발자 및 강사로 활동(From 2024.02)

- 저서

안녕하세요? Kevin이라고 합니다. ^^

인프런에서 이렇게 강사로서 여러분들을 만나게 되어서 너무 반갑습니다.

어떤 분야든 마찬가지겠지만 특히나 소프트웨어 개발자는 끊임없이 변화하는 트렌드에 뒤처지지 않도록 항상 자기 자신을 갈고 닦는것이 개발자로써 살아남는 유일한 방법이라고 생각하며 항상 배우는 자세로 즐겁게 소프트웨어 개발을 하고 있는 개발자 중 한 명입니다.

제가 가지고 있는 지식과 경험이 다른 분들에게 조금이나마 도움이 되기를 바라면서 인프런에서 강좌를 시작하였습니다.

앞으로 수강생분들에게 현실적으로 도움이 되는 다양한 강좌로 꾸준히 찾아뵙도록 하겠습니다. 감사합니다.

 

질문이나 의견은 언제든지 환영하니, 이메일(it.village.host@gmail.com)로 편하게 얘기해주세요.

 

カリキュラム

全体

40件 ∙ (13時間 52分)

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

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

受講レビュー

全体

4件

5.0

4件の受講レビュー

  • kevin님의 프로필 이미지
    kevin

    受講レビュー 3

    平均評価 5.0

    修正済み

    5

    100% 受講後に作成

    Hello everyone! I seem to be the first to leave a review for this lecture again. ^^; As the saying goes, "blood is thicker than water," I'll give it 5 stars this time since I've put in a lot of effort to create this lecture. ^^ Although it's not well-known yet, I believe this mini-project series lecture can provide students with the hidden skills to cross the threshold into the job market as reasonably competent Java backend developers. Of course, it will take time, and you need to think for yourself and type out the code. I believe that `thinking + practice + repetition + application` is more important than memorization to win in the job market as a good developer. It will be tough, but I hope you complete this lecture well and that your implementation skills will be upgraded. See you in the lecture. Good luck!

    • doomco07님의 프로필 이미지
      doomco07

      受講レビュー 28

      平均評価 5.0

      5

      8% 受講後に作成

      I'm looking forward to the new type of Java lecture.

      • kevin
        知識共有者

        Thank you. Even if it takes a little time, I hope you'll listen to only the 'function implementation requirements' and 'prerequisites' first, rather than watching the entire lecture straight through, and then take the time to implement it yourself. ^^; I hope it helps you grow!

    • ohjaekwon5982님의 프로필 이미지
      ohjaekwon5982

      受講レビュー 3

      平均評価 5.0

      5

      30% 受講後に作成

      • smc781751님의 프로필 이미지
        smc781751

        受講レビュー 10

        平均評価 5.0

        5

        30% 受講後に作成

        ¥7,865

        Kevinの他の講座

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

        似ている講座

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