【Java】未経験者・初心者向け　おすすめ教本 & 学習カリキュラム

# 目次
この記事は3分ほどで読めます
[1.この記事のターゲット層](#1-この記事のターゲット層)
[2.著者の経歴](#2-著者の経歴)
[3.投稿理由](#3-投稿理由)
[4.カリキュラムについて](#4-カリキュラムについて)
[5.基本編](#5-基本編)
[6.中級編](#6-中級編)
[7.応用編](#7-応用編)
[8.おわりに](#8-おわりに)

# 1. この記事のターゲット層
- 「これから`Java`を学習しようと思っている方」
- 「どの教本で学習しようか悩んでいる方」
- 「プログラミングスクールなどに通わず、独学で効率よくJavaを学びたい方」

# 2. 著者の経歴
- プログラミング完全未経験の状態から１年間学習(投稿時）
* １年間で学んできたプログラミング言語や知識(太文字をメインで学習）
    * **Java**
    * **SQL**
    * **サーブレット&JSP**
    * **Springフレームワーク**
    * HTML/CSS
    * JavaScript
    * Linux
    * Docker etc...

# 3. 投稿理由
- プログラミング未経験・初心者のときに感じる「何から学べばよいのかわからない」の解消に少しでも役立ちたいため。
- ~~友人がスクールにぼったくられたため。~~

# 4. カリキュラムについて
- 柔軟性を持たせるため、基本編/中級編/応用編とカリキュラムを3ステップに分割
- 未経験でもわかりやすい教本（筆者も今回紹介する教本を使って実際に学習）
- Javaに関する基本的な知識を効率よく習得可能（教本同士の内容が重複するという事故を防止できる）

# 5. 基本編

「Javaとは何か」「どんな処理ができるのか」を短期間で学習していきます。
基本編をこなすことによって、Javaにおける土台の知識を得ることができます。
基本編は１ヶ月あれば十分学習できるので、まずは気楽に始めてみてください！

## カリキュラム (期間:1ヶ月) 
Ⅰ スッキリわかるJava入門 第3版
Ⅱ 実践Javaコーディング作法
Ⅲ 自主制作

#### Ⅰ [スッキリわかるJava入門 第3版](https://book.impress.co.jp/books/1119101083) (15日目安)
- Javaを１から超絶わかりやすく丁寧に解説している教本です。かわいいイラストやRPGゲームに例えた解説があったりと、学習過程が楽しく魅力的な一冊です。
- 一言アドバイス：オブジェクト指向の章は少し難しく感じるかもしれません。焦らず2~3周復習をして理解を深めましょう。

#### Ⅱ [実践Javaコーディング作法](https://honto.jp/ebook/pd-contents_0627579350.html) (5日目安)
- 美しいコードの書き方（暗黙のルールなど）を紹介する教本です。この教本内容を通して、自他ともに見やすいコードの記述方法を身につけることができます。
- 一言アドバイス：この教本の学習は良くも悪くも受け身になりがちです。~~眠気との戦いになるでしょう。~~ スッキリわかるJava入門がある程度進んできた際に、並行して学習することをおすすめします。

#### Ⅲ 自主制作 (7日目安)
- これまでの学習内容を活かして0からオリジナルの作品を作成してみましょう。
- 最初は戸惑うかも知れませんが、この期間を通して自分が曖昧にしている知識あるいは理解したつもりになっている知識を洗い出すことができます。
- 一言アドバイス：データを保存したり、画像をつかったりするのが現時点の知識だけでは困難です。そのため、コンソール上で完結するような「部分的な処理」を制作物にすることをおすすめします。(例：計算処理アプリ。ちなみに筆者はポケ◯ンのサファリパークの捕獲部分の処理を制作しました）

# 6. 中級編

脱初心者をしたい方は以下のカリキュラムも進めていきましょう。
中級編を達成すると、就活や転職においても十分な力を発揮するでしょう。

## カリキュラム (期間:1ヶ月)
Ⅰ SQL 第2版 ゼロからはじめるデータベース操作
Ⅱ スッキリわかるJava入門 実践編 第3版
Ⅲ 自主制作

#### Ⅰ [SQL 第2版 ゼロからはじめるデータベース操作](https://www.shoeisha.co.jp/book/detail/9784798144450) (5日目安)
- Javaとは切っても切り離せない、データベース操作をするSQLについて学習します。
- この学習を通して、様々なデータの取得/保存/更新/削除する方法を身につけることができます。
- 一言アドバイス：実際に手を動かしながら挙動を確認し、SQLでのデータベース操作の便利さを体感しましょう。

#### Ⅱ [スッキリわかるJava入門 実践編 第3版](https://book.impress.co.jp/books/1119101169) (15日目安)
- これまではコードの「書き方」を中心に学習をおこなってきましたが、この教材ではプロジェクトに配属後に活かせるツールや、チームとして活動していく中での必要な知識に関する内容が記載されております。
- 一言アドバイス：第13章から学習することをおすすめします。以降、バージョン管理システムを実際に活用して日々の学習を記録に残していくことをおすすめします。

#### Ⅲ 自主制作 (10日目安)
- SQLを活用した制作物を作成してみましょう。
- 都度単体テストを行い、テストのやり方にも慣れていきましょう。
- 一言アドバイス：データの取得/保存/更新/削除の要素を取り入れられるようなコンソール上で動くアプリがおすすめです。(おすすめ制作物：家計簿アプリ、スケジュール管理アプリ）

# 7. 応用編

これまではコンソール上で動くアプリの作り方について学習してきました。
応用編ではブラウザ上で動作する「Webアプリケーション」の作り方について学習していきます。
このカリキュラムを終えた頃には、1エンジニアとして稼働できる人材になっていることでしょう。

## カリキュラム(期間:2ヶ月)
Ⅰ スッキリわかるサーブレット＆JSP入門 第2版
Ⅱ ［改訂新版］Spring入門 Javaフレームワーク・より良い設計とアーキテクチャ
Ⅲ 自主制作

#### Ⅰ [スッキリわかるサーブレット＆JSP入門 第2版](https://book.impress.co.jp/books/1118101130) (12日目安)
- Webアプリケーションのしくみを1から学習できます
- Webページを作成するために必要な`HTML`の記述方法も詳しく解説があるので、予備知識無しでも問題ありません。
- 一言アドバイス：サーブレット&JSPは開発現場で使われる機会は減少してきております。ただ、次に学習する「Spring」においてサーブレット&JSPの基礎知識はあったほうが学習効率が良いです。特に「画面遷移、スコープ、MVCモデル」の知識をしっかりとインプットしましょう。

#### Ⅱ [［改訂新版］Spring入門 Javaフレームワーク・より良い設計とアーキテクチャ](https://gihyo.jp/book/2016/978-4-7741-8217-9) (18日目安)
- SpringとはJavaのシステム開発を効率よく行えるように用意された枠組みです。（Javaのフレームワークと言い換えることができます）
- 個人的には教材のBean定義ファイルやJavaConfigの解説は流し読みで大丈夫だと思います。（SpringBootで自動的に設定してくれるため）
- 一言アドバイス：Springはバージョンのアップデートにより記述方法の移り変わりがあります。特にSpringセキュリティに関しては教材の記述方法からアップデートされている箇所が多いため、最新情報を追うことをおすすめします。（おすすめ参考先：[日本Springユーザ会](https://www.springframework.jp/Home)のYouTube・ブログ）

#### Ⅲ 自主制作 (22日目安)
- これまでのカリキュラムの集大成です。SpringBootを使ってWebアプリケーションを作成してみましょう。
- フロントエンド側はCSSやBootstrapフレームワークにも挑戦してみましょう。ある程度画面を整えたり華やかに魅せることができます。
- 一言アドバイス：Controller,Service,Repositoryクラスに分けてアプリを作成しましょう。データベースアクセス技術に迷った際は、Spring Data JPAを使用することをおすすめします(おすすめ制作物：通販サイト）

# 8. おわりに
各カリキュラムの学習指標をまとめます。
```
基本編・・「とりあえずJavaに触れてみたい」「時間や学習コストを最小限に抑えたい」方。
中級編・・「就活や転職を一歩有利に進めたい」「初級編を学びJavaに興味を持った」方。
応用編・・「Webアプリケーションを作成してみたい」「Javaに関する知識を満遍なく学習したい」方。
```
悩まれている方はとりあえず初級編に手をつけてみることをおすすめします。
自分で書いたコードを実行すると処理される**楽しさ**を感じてみてください。
今回の投稿が皆様のプログラミング人生の第一歩を後押しになりますと幸いです。


ここまで閲覧いただきありがとうございます。
Qiita初投稿ということもあり、拙い説明になってしまっている部分もあるかと思います。
（投稿内容に関するご意見やアドバイス歓迎しております！）

これからもプログラム未経験/初心者の方に寄り添った投稿を行ってまいります。
「いいね & フォロー」いただけますと大変励みになります！