
Kevinさんの分かりやすいJava開発者ロードマップの話
Kevin
Kevinさんの分かりやすいJava開発者(Web開発者)ロードマップの話
入門
Java
小さなプロジェクトから構造を捉える練習まで! Javaのオブジェクト指向設計と実践経験が不足している方のための 実際に作りながら成長するミニプロジェクト実践入門講座。 基本から構造的思考まで、Javaアプリケーションを最初から最後まで実装しながら実力を養いましょう。
受講生 74名
難易度 初級
受講期間 無制限
Javaプログラミングに対する自信
退屈だったJavaに対する楽しさ
適切なJavaバックエンド開発者として入門するための開始位置
JavaのStream APIの活用法
アプリケーションをどこからどのように実装すべきかという方法
ユニットテストコードの必要性
単体テストコードをどこからどのように書くべきかという方法
要求仕様書を作成し、要求事項を分析する練習
妥当性検証の重要性と妥当性検証を実施する方法
ドメインルールの重要性と、ドメインルールをコードで表現する練習
ドメインルールをユニットテストコードで作成する練習
JavaのExceptionを活用したバリデーション方法
カスタム例外を活用する練習
レイヤードアーキテクチャの概念と適用方法
ジェネリックの活用方法
DIPの概念とDIPが必要な理由、適用事例
Google Tasks API の活用方法
Java文法は学んだが、実際にどこから、どのように実装すべきかわからない方
Javaプロジェクト実習経験が不足している方
Springは学んだものの、Javaの基礎が弱くてプロジェクトで挫折した方
🔸 「要件をコードに移すのが難しかったです」
→ 機能を分割し、クラスを直接設計できるようになります
🔸 「オブジェクト指向設計が途方に暮れます」
→ OOP思考で構造化されたコード作成が可能になります
🔸 "プロジェクト実習経験が不足していました"
→ 3つのミニプロジェクト完成で実戦感覚が向上します
🔸 「ただ目で見て学んでいただけでした」
→ 分析 → 設計 → 実装 → テスト全過程を直接実行することになります
ブートキャンプで1000人近い学生たちを教えながら学生たちから聞くことになったよくある話
「概念は理解できるのですが、実装ができません」
「Javaの文法はもう少し分かるようになったけど、Javaで何かを作ってみろと言われると、どこから始めればいいのか分からないです」
「Javaを終えてSpringに移ったのですが、実習に手をつけられません」
「学習資料にあるコードを最初から最後まで入力してみましたが、プロジェクトがとても怖いです」
その時、私が学生たちにしてあげた話は次の通りです。
「目だけで学習しようとせず、指と頭で学習してください」
「コードをタイピングする時は、自分で考えながらタイピングしてください」
「まず基礎を固めてください。その次は応用のために練習に練習を重ねてください」
このように自分で考えながら言語と技術の基礎を固め、応用のための練習に練習を重ねると、「今度は何を作ってみようか?」というワクワク感に包まれている自分を発見することになります。
このようなドキドキ感を味わうための最も良い方法は何でしょうか?
皆さんのアプリケーション実装能力だけでなく、プロジェクトに対する恐怖ではなく胸躍るドキドキ感を感じられるようにしてさしあげます。
ミニプロジェクトJava 1部では、Javaと少しの外部ライブラリ、Google Tasks APIを利用してコンソールで動作するアプリケーションを作ってみます。
「コンソールベースのアプリケーションなんて役に立たないのに、なぜ作るんだろう?」と思うかもしれません。^^;
もちろん私もこの言葉に100パーセントではありませんが、十分に共感します。
しかし、コンソールベースのアプリケーションは少し不便ではありますが、Javaの基礎を固めるにおいて非常に重要な役割を果たすと思います。
「まさかコンソールベースのアプリケーションを作って終わりじゃないよね?」と思われるなら?
いいえ。ミニプロジェクトJava 3部では、UI(JavaFX)も実装してみます。^^;
「JavaFXって実務であまり使われない技術じゃない?なのになぜ学ぶの??」と思われるなら?
⭐ 良いJava開発者として長い間実務でうまく生き残るには、UIを実装してみながらクライアント、サーバーバックエンドを問わず両方の立場をすべて理解してみることが重要です。
クライアント側の立場を理解できれば、より良いサーバー側アプリケーションを作ることができるのではないでしょうか?^^;
とりあえずやってみると面白いと思います。^^
合計3つのミニプロジェクトを実行します:
Stream API 九九表アプリケーション
Todoリスト管理アプリ (1): 要件ベースの設計、実装およびテスト
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では、皆さんの頭と指に始動をかけることができる、とても簡単なアプリケーションを作ってみます。
「何?九九のプログラムなら簡単すぎるんじゃない?」と思うかもしれません。九九のプログラムはアルゴリズム問題を解く際にも定番として出てくる基礎的な問題の一つですからね。
しかし、うまく動作する一つのアプリケーションを作るという観点から考えてみる必要があり、JavaのStream APIを利用して実装しなければならないため、九九プログラムが新鮮に感じられるかもしれません。😊😊
✅ プロジェクト目標
Javaのラムダ式と関数型インターフェースの概念を理解できる。
Stream APIの特性と基本的な使用方法を理解することができる。
コードの可読性の重要性を理解することができる。
メソッド抽出(Extract)を通じて機能別にメソッドのロジックを分離することができる。
クラスを利用して役割分離の概念を理解することができる。
セクション2では、ToDoを管理するアプリケーションを作ってみます。
タスク管理アプリケーションはTodoListという名前でよく知られており、ウェブプログラミングに入門する際に最もよく使われるテーマの一つです。
やることを登録し、登録されたやることを完了処理する簡単な機能だと思えますが、この簡単な機能をいざ直接実装してみろと言われると躊躇する方がかなりいると思います。
さらに、アプリケーションのコード品質やコード可読性、単体テストケースまで考慮すると、決して甘く見ることはできません。^^;
講義では、単純に実行されるアプリケーションを作ることで終わるのではなく、次のようにかなり重要なことを学ぶことができます。
✅ セクション2で学べること
作成すべきアプリケーションの大まかな要件をクラスとメソッドの枠組みで表現する方法と、このように表現するとどのような利点があるかを理解できます。
特定の機能を実装するための思考の流れをコードで最初に表現した後に、該当機能を具体的に実装する方法を理解することができます。
単体テストコードを段階的に完成させる方法を理解することができます。
ドメインルールが適用されたドメインロジックをサービスコードから分離する方法と分離するとなぜ良いのかを理解できます。
ドメイン駆動開発で使用するD.I.P(Dependency Inversion Principle、依存性逆転の原則)設計原則の基本を理解することができます。
✅ プロジェクト目標
クラスとメソッドの枠組みを利用してアプリケーションの基本構造を構築していく方法を理解することができる。
やることデータを利用して簡単なやること登録ロジックを実装することができる。
レイヤードアーキテクチャ(Layered Architecture)を理解することができる。
JavaのMapをインメモリデータストレージのように使用することができる。
貧弱なドメインモデル(Anemic Domain Model)と豊富なドメインモデル(Rich Domain Model)の違いを理解することができる。
D.I.P(Dependency Inversion Principle) 設計原則の基本概念とこの原則を適用する理由を理解することができる。
セクション3ではGoogle Tasks API技術を利用してセクション2で作成したタスク管理アプリケーションのタスクデータを持続可能に管理できるようにアップグレードしてみます。
もちろん最初からGoogle Tasks APIを使ってToDoアプリを作ることもできますが、そうするとアプリケーションを実装する間にあまりにも多くの知識を頭に詰め込まなければならないため、望ましくないと思いました。
とにかくセクション2でタスク管理アプリケーションをしっかりと作成しておけば、セクション3で次の内容を学習することに集中できます。
✅ セクション2で学べること
Googleが提供するサービス(Google Tasks、Google Drive、Google Calendarなど)を利用するための共通した手順を理解することができます。
Googleが提供するサービスを使用するための認証プロセスを大きな流れで理解することができます。
特定の技術を学習する目的でテストケースを作成する理由とメリットを理解することができます。
テスト過程での前処理、後処理過程が必要な理由を理解でき、テストケースに適用できます。
D.I.P(Dependency Inversion Principle)設計原則が適用されたデータレイヤーでデータアクセス技術を柔軟に変更できるようになります。
異なるタイプのオブジェクト間でデータをやり取りするためのConverterを適用することができます。
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(最小仕様)以上
講義資料Githubリンク
ソースコード Github リンク
九九表アプリケーション
タスク管理アプリケーション 1
タスク管理アプリケーション 2
講義で使用される学習資料およびコードをブログなど個人スペースで使用される場合は、講義タイトルおよび講師名を記載し、講義リンクを追加していただく必要があります。その他の無断配布は許可されませんので、ご了承をお願いいたします。
学習対象は
誰でしょう?
Javaを勉強したものの、Javaで何をすべきかわからない人
Javaの文法学習に退屈している人
Javaの文法は知っているけれど、何か実装してみろと言われるとどこから手を付けていいか分からない人
バックエンドエンジニアになるために、Javaの基本をしっかりと身につけたい人
Javaアプリケーションの実装を楽しむことができる人
自分で考え、悩みながらアプリケーションを実装する練習が必要な人
アプリケーションの実装という観点から、Javaをうまく扱えない人
前提知識、
必要でしょうか?
ジャバ
自分で考える練習
キャリア認証
6,924
受講生
307
受講レビュー
133
回答
4.8
講座評価
11
講座
主要言語または技術:Java, Spring Framework, RxJava, Reactor, Spring WebFlux
(株)ペンタセキュリティのバックエンド開発者として活動(From 2015.07 To 2022.01)
(株)コードステイツ(https://www.codestates.com)にて Senior Educational Software Engineer(Backend)として活動
(From 2022.03 To 2024.01.31)
- フリーランスの開発者および講師として活動(Since 2024.02)
- 著書
こんにちは。Kevinと申します。^^
Inflearnでこのように講師として皆様にお会いできて、とても嬉しいです。
どの分野でも同じだと思いますが、特にソフトウェア開発者は、絶えず変化するトレンドに遅れないよう常に自分自身を磨き続けることが、開発者として生き残る唯一の方法だと考えており、常に学ぶ姿勢で楽しくソフトウェア開発を行っている開発者の一人です。
私が持っている知識と経験が、他の方々に少しでもお役に立てればという思いで、Inflearn(インフラン)で講座を始めました。
これから受講生の皆様に、現実的に役立つ様々な講座で、継続的にお目にかかりたいと思います。ありがとうございます。
質問や意見はいつでも歓迎ですので、メール(it.village.host@gmail.com)でお気軽に連絡してください。
全体
40件 ∙ (13時間 52分)
講座資料:
全体
5件
5.0
5件の受講レビュー
受講レビュー 38
∙
平均評価 5.0
修正済み
5
[該当講義の肯定的な面] Springやその他のJavaベース技術スタックに移る前に、自分のJava文法のどこが不足しているかについて自己診断できる良い指標となる講義でした。ひどい私はJavaの基礎を再び磨いた後、この講義を最初から再受講してみようと思います。 [講義レベル] 私を含めてJava8、匿名クラス、インターフェース、ポリモーフィズムなど全般的なJavaの基礎が不足していると簡単ではない講義のようです。Java入門というタイトルでいざカリキュラムを見た時、最上段にオブジェクト指向、Java8が最上段にあるのを見て「あ?私は入門を終えるのに数年もかかりそうだけど??..」と思いながら購入を検討しましたから。 [個人的な願い] 個人的な願いとしては、今でも十分素晴らしいですが、段階別にもっと多様な講義があったら良いと思います。バックエンドWeb開発の職業訓練校または、ブートキャンプ修了後にSpringでWebページは作ったものの、実際にはヒープ領域が何なのか、メソッド領域が何なのか、インスタンスを生成するとヒープ領域に参照値が返されるといったJavaの基礎は弱いのではないかと思います。 本当に真のJava入門講義としてJava8、内部クラス、匿名、Java8といったコードを短縮するものは該当講義でも十分で、インターフェースクラス、実装クラス、main関数などコード数は長いですが、オブジェクト指向の花であるポリモーフィズム、インターフェースを理解できる問題が多数ある講義がローンチされれば、多数のJava入門者の方々が購入するのではないかと思います。私は今でもstream apiを復習していますが、まだインターフェース、実装体を一つのクラスに入れること自体がとても混乱して適応できません😭😭 来年にもう少し基礎ができれば、これさえも適応できるでしょうね?😭
受講レビュー 17
∙
平均評価 5.0
受講レビュー 1
∙
平均評価 5.0
受講レビュー 3
∙
平均評価 5.0
知識共有者の他の講座はこちら
同じ分野の他の講座を見てみましょう!
期間限定セール
¥40
23%
¥8,428