강의

멘토링

커뮤니티

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に移ったのですが、実習に手をつけられません」

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


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

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

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

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


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


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

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


何を作ればいいかわからない方、どのように作ればいいかわからない方は、この講義を受講してください。

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

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


「コンソールベースのアプリケーションなんて役に立たないのに、なぜ作るんだろう?」と思うかもしれません。^^;

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

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


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

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


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

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

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

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

講義の進行方式

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

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

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

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

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

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

✅ 100% パワーアップ

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

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

  • 最も大きな成長と誇らしさを感じることができます。


✅ 80% パワーアップ

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

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

50%パワーアップ

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


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

0%パワーアップ

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

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

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

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

この講義で得られるもの

  • 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では、ToDoを管理するアプリケーションを作ってみます。

タスク管理アプリケーションは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を使ってToDoアプリを作ることもできますが、そうするとアプリケーションを実装する間にあまりにも多くの知識を頭に詰め込まなければならないため、望ましくないと思いました。


とにかくセクション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,340

受講生

235

受講レビュー

108

回答

4.8

講座評価

7

講座

- 주력 언어 또는 기술 : 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分)

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

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

受講レビュー

全体

5件

5.0

5件の受講レビュー

  • kevin님의 프로필 이미지
    kevin

    受講レビュー 3

    平均評価 5.0

    修正済み

    5

    100% 受講後に作成

    Chào các bạn học viên! Lại là mình người đầu tiên để lại đánh giá cho bài giảng lần này. ^^; "Tay mình thì mình xoa", nên mình sẽ tự cho bài giảng lần này 5 sao vì mình đã nỗ lực hết mình để tạo ra nó. ^^ Tuy chưa được nhiều người biết đến, nhưng mình nghĩ series bài giảng mini project lần này sẽ giúp các bạn học viên có được nội lực ẩn giấu để vượt qua cánh cửa của giới lập trình viên backend Java và có được một công việc tốt. Tất nhiên, sẽ tốn thời gian và các bạn phải tự mình suy nghĩ, gõ code. Mình nghĩ rằng để chiến thắng trên mặt trận tìm việc làm, các bạn cần `tư duy + thực hành + lặp lại + ứng dụng` hơn là chỉ học thuộc lòng. Tuy có thể khó khăn, nhưng mình mong các bạn sẽ hoàn thành tốt bài giảng lần này và nâng cao được khả năng lập trình của mình thêm một bậc. Vậy thì hẹn gặp lại các bạn trong bài giảng. Cố lên nhé!

    • doomco07님의 프로필 이미지
      doomco07

      受講レビュー 28

      平均評価 5.0

      5

      8% 受講後に作成

      Rất mong chờ một hình thức giảng dạy Java mới.

      • kevin
        知識共有者

        Cảm ơn bạn. Dù có tốn một chút thời gian, nhưng tôi mong bạn hãy nghe hết phần "Yêu cầu chức năng cần hiện thực", "Kiến thức cần có" trước, rồi tự mình thực hiện thử nhé. ^^; Mong rằng điều này sẽ giúp ích cho sự phát triển của bạn!

    • ohjaekwon5982님의 프로필 이미지
      ohjaekwon5982

      受講レビュー 3

      平均評価 5.0

      5

      30% 受講後に作成

      • jason님의 프로필 이미지
        jason

        受講レビュー 30

        平均評価 5.0

        修正済み

        5

        100% 受講後に作成

        [Khía cạnh tích cực của khóa học này] Đây là một khóa học tuyệt vời giúp tự đánh giá xem mình còn thiếu sót ở đâu trong ngữ pháp Java trước khi chuyển sang Spring hoặc các công nghệ stack khác dựa trên Java. Với trình độ kém như tôi, tôi dự định sẽ rèn luyện lại kiến thức cơ bản Java rồi học lại khóa học này từ đầu. [Mức độ khóa học] Bao gồm cả tôi, nếu thiếu kiến thức cơ bản tổng thể về Java như Java8, anonymous class, interface, đa hình thì đây không phải là khóa học dễ dàng. Khi thấy tiêu đề "Java nhập môn" nhưng nhìn curriculum thì thấy lập trình hướng đối tượng, Java8 ở vị trí cao nhất, tôi đã nghĩ "Ủa? Vậy tôi muốn hoàn thành nhập môn thì còn phải mất vài năm nữa à??..." và cân nhắc việc mua khóa học. [Mong muốn cá nhân] Mong muốn cá nhân của tôi là, dù hiện tại đã rất xuất sắc rồi nhưng hy vọng sẽ có thêm nhiều khóa học đa dạng theo từng cấp độ. Sau khi hoàn thành khóa đào tạo backend web development hoặc bootcamp và tạo được trang web bằng Spring, nhưng thực tế lại không biết heap area là gì, method area là gì, khi tạo instance thì heap area trả về reference value - tôi nghĩ những kiến thức cơ bản Java như thế này còn yếu. Thực sự là khóa học Java nhập môn chân chính với Java8, inner class, anonymous, Java8 - những thứ rút gọn code thì khóa học này đã đủ rồi, và nếu có khóa học ra mắt với nhiều bài tập giúp hiểu được đa hình và interface - tinh hoa của lập trình hướng đối tượng - thông qua interface class, implementation class, main function v.v. dù số dòng code dài nhưng tôi nghĩ nhiều người mới bắt đầu học Java sẽ mua. Tôi hiện tại vẫn đang ôn tập stream api nhưng vẫn còn rất bối rối và chưa thể thích nghi với việc đưa interface, implementation vào một class 😭😭 Năm sau khi có thêm chút kiến thức cơ bản thì chắc cái này cũng sẽ thích nghi được nhỉ? 😭

        • smc781751님의 프로필 이미지
          smc781751

          受講レビュー 10

          平均評価 5.0

          5

          30% 受講後に作成

          ¥8,209

          Kevinの他の講座

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

          似ている講座

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