新卒1年目未経験エンジニアがJava Silverに合格した勉強法

## 始めに
こんにちは。
社会人2年生となったばかり私ですが、
新卒1年目の3月、Java Silverを受験し、無事合格することができました。

今回は、Java Silver取得に向けて行った勉強法と、Java Silverを取得するメリットについて、皆さんにお伝えしていきたいと思います。

この記事を読んで、効果的な学習方法を知っていただき、少しでも（Java Silverに関わらず）資格取得を前向きに考えていただけるようになったら幸いです。

### この記事の対象者
・Java Silverの受験を考えている方
・Javaの学習を始めた方
・新卒1年目〜2年目エンジニアの方

### この記事で伝えること
・Java Silver取得に向けて行った勉強法
・Java Silverを取得するメリット

### この記事で伝えないこと
・具体的な試験内容や出題範囲の説明
・出題される問題の解説

## Java Silverについて
### Java Silverとは？
Oracle社が実施しているJavaプログラマ向けの資格のことです。

Java Silverの他に、Java Bronze・Java Goldがあり、
難易度順にBronze、Silver、Goldと分けられています。
### Java Silverのレベル
以下、[Oracle公式サイト](https://www.oracle.com/jp/education/certification/1z0-815-jpn-48261-ja.html)からの引用です。

>「Javaアプリケーション開発に必要とされる基本的なプログラミング知識を有し、上級者の指導のもとで開発作業を行うことができる開発初心者向け資格です。日常的なプログラミング・スキルだけでなく、さまざまなプロジェクトで発生する状況への対応能力も評価することを目的としています。」

「開発初心者向け」とありますが、
出題範囲は、基本文法をはじめ、オブジェクト指向、例外処理、モジュール・システムと多岐に渡ります。
Javaの基礎的な知識を網羅的に勉強したい方、より理解を深めたい方におすすめな資格だと思います。

## 私の経歴
Java Silverに向けて勉強を始めた時点では、Java歴は5ヶ月ほどでした。

　2022年3月　私立大学文系学部卒業
　2022年4月　入社
　2022年4月〜7月　研修
　2022年8月〜　現場配属　※ここでJavaを使うようになる
　2023年1月　Java Silver合格に向けて学習開始
　2023年3月　Java Silver合格

## Java Silverを受験しようと思った理由
私がJava Silverを受験しようと思った理由は以下の二つです。

__①基本的なJavaの知識を網羅的に身につけ、理解を深めたかったから__
__②現場業務での開発効率（ソースを読む・コーディングするスピード）を上げたかったから__

以上の二つの理由にあるように、
私はJava Silverに合格することが目的ではなく、Javaへの理解を深めることが目的であり、その結果を示すためにJavaSilverの合格を目標として設定しました。

そのため、すでにJavaの基礎的な部分を習得されている方にとっては、これから紹介する勉強法はJava Silver合格への近道となるものではないと思います。
ですが、Javaの学習をしたい・理解を深めたいと考えている方には意味のある勉強法だと思います。

## Javaへの理解を深める&合格を勝ち取るための勉強法
ここからは私がどのようにJava Silverの学習を進めていったかを、実際に使用した参考書や学習のコツとともに紹介します。
### 学習期間
約2ヶ月半

### 使用した参考書
- [オラクル認定資格教科書 Javaプログラマ Silver SE11（試験番号1Z0-815）](https://amzn.asia/d/3IFsoD8)　※通常「紫本」と呼ばれるもの
- [スッキリわかるJava入門 第3版 (スッキリわかる入門シリーズ)](https://amzn.asia/d/0ppP4lp)　

私の場合、実際の試験問題と類似の問題が多く掲載されている、「黒本」と呼ばれる問題集は使いませんでした。

### 学習の流れ
__1. 紫本の各章ごとに以下を実施（1周目）__
- 紫本の各章の解説を読む
- 各章の章末問題を解く
※ここでは完璧に理解しなくて良い。「こういうものがあるんだ」程度でまずは読み進める。

__2. 紫本の各章ごとに以下を実施（2周目）__
- 紫本の各章の解説を読む
- 理解できない箇所・腑に落ちない箇所は[paiza](https://paiza.io/ja)等の実行環境で実際にコードを書いてみて、理解する&記憶に印象付ける
- 「スッキリわかるjava入門」の関連箇所を読み、理解を深める&関連する知識を身につける
- 紫本の章末問題を解く
- 間違えた問題について復習する

__3. 紫本の模擬試験1を受験する__
- 実際の試験時間と同じ制限時間で、模試を受験する
※この時、自信がない解答がわかるようにしておく
- 間違えた問題・自信がない問題の解説を読む
 
__4. 3と同じように、紫本の模擬試験2を受験・解説を読む__

__5. 模擬試験1・模擬試験2の間違えた問題をもう一度解く__

### 学習のコツ
上記学習の流れの中で注目していただきたいのは、以下の2箇所です。
##### 1. 実際にコードを書いて実行したこと
学習の流れ2にあるように、読むだけでは理解できなかった箇所は、実際にコードを書き実行するようにしていました。
読むだけではあまり理解できなかった箇所も、1行ずつ書いてみることで徐々に理解が深まります。
また、コードを書いてみること＝手を動かしてみることで、記憶に残りやすくなります。

##### 2. 紫本と同時並行で「スッキリわかるJava」も読み進めたこと
私はJava Silverの学習を進めると同時に、「スッキリわかるJava入門」も読み進めました。
これによって以下のメリットがありました。

- 同じ内容について、別の説明・別のサンプルコードを通して学んだことで、理解が更に深まった
- Java Silver出題範囲外の箇所についても、出題箇所と関連付けて学ぶことができた
（例：コレクション操作の学習で出題範囲外のiteratorについても学んだ
　　　文字列操作の学習で出題範囲外の正規表現についても学んだ）

また、現場業務でコードを読む・書く際も、Java Silverで学んだことに意識的に目を向けるようにしていました。その結果、「どのような処理でこの文法が使われるのか」という実践的なイメージを持つことができ、理解が進んだと実感しています。


上記のように学習を進めたことによって、「なぜこうなるか」を理解できるようになり、初見の問題でもほとんど問題なく解くことができるようになりました。

## Java Silverを受験するメリット
最後に、無事Java Silverに合格した私が「受験して良かった」と実感した点を紹介していきます。私が考えるJava Silverを受験するメリットは以下の3つです。
#### 1. コードの動きを考える癖がつく
Java Silverに出題されるほとんどの問題は、「このコードを実行するとどのような結果が得られるか」というものであるため、繰り返しコードを読んだり問題を解いたりすれば、自然と自分の頭で考える癖がつきます。

Java Silverの学習を始める前でも、コンパイルエラー・実行時エラーが発生した際は、エラーメッセージを検索することでどうにかエラーを解消することはできていました。
しかし、自分の頭でコードの動きを考える癖がついた結果、エラーが起きないかを事前に確認するようになったり、エラーが起きた際も素早く対応できるようになったりしました。

#### 2. コードを理解するスピードをあげる事ができる
Java Silverを学習したことで、様々なコードを読む機会が増え、読み方のコツが自分なりにわかるようになったと思います。
その結果、現場業務でソースを読む際も、以前よりも早く・効率的に理解できるようになったと感じています。

#### 3. 自分のスキルを定量的に証明することができるようになる
結果的に合格することができ、定量的に自分のレベルをアピールすることができるようになったことによって、自信に繋がったと思います。


Java Silverに合格したからと言って、完璧にコーディングできるようになるわけではなく、Javaの全てを理解したと言えるわけでもないと思います。
それでも、Java Silverを受験すること・受験に向けて学習することには大きなメリットがあると思います。

## 最後に
ここまでお読みいただきありがとうございました！

勉強法は人それぞれだとは思いますが、少しでも皆さんの資格取得に向けての学習に役立てていただけたら幸いです。

私はいつの日かのJava Gold受験に向けて、これからもJavaの学習を続けていきたいと思います…！
オススメの勉強法がある方はぜひ教えてください！