実務未経験者が1ヶ月でJava SE8 Silverに合格した勉強法

<img width="1012" alt="スクリーンショット 2019-09-19 19.16.15.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/401208/5f7d97e0-37e3-3ea4-ad43-cc5633e95f3a.png">

先日Java SE8 Silver(以下Silver)取得のための試験を受け、84%の正答率で合格しました。筆者は最近実務未経験からエンジニアとして内定した初学者です。入社まで1ヶ月あったため、入社前にプログラミングの基礎を身に付けそれを対外的に証明するべく受験しました。

合格体験記は色々読みましたが、勉強法まで書いている記事が少ないので私の勉強法を参考程度に公開します。

#使用した参考書
[徹底攻略 Java SE 8 Silver 問題集[1Z0-808]対応](https://www.amazon.co.jp/%E5%BE%B9%E5%BA%95%E6%94%BB%E7%95%A5-Java-Silver-%E5%95%8F%E9%A1%8C%E9%9B%86-1Z0-808/dp/4844339931/ref=asc_df_4844339931/?tag=jpgo-22&linkCode=df0&hvadid=295658314765&hvpos=1o2&hvnetw=g&hvrand=8847695421980087700&hvpone=&hvptwo=&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=1009187&hvtargid=pla-526914835838&psc=1&th=1&psc=1)
こちらの黒本一冊のみです。試験本番は黒本に似た問題が多く出題されるため、黒本を使わない勉強はお勧めできません。

[オラクル認定資格教科書 Javaプログラマ Silver SE 8] (https://www.amazon.co.jp/%E3%82%AA%E3%83%A9%E3%82%AF%E3%83%AB%E8%AA%8D%E5%AE%9A%E8%B3%87%E6%A0%BC%E6%95%99%E7%A7%91%E6%9B%B8-Java%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E-Silver-SE-8/dp/4798142735/ref=pd_sbs_14_3/358-5043706-2298933?_encoding=UTF8&pd_rd_i=4798142735&pd_rd_r=8b602d62-c752-4dee-a48e-2ae7cae98199&pd_rd_w=VknPL&pd_rd_wg=4qMCf&pf_rd_p=ad2ea29d-ea11-483c-9db2-6b5875bb9b73&pf_rd_r=NJN5H52SKZBKFRXTFH4W&psc=1&refRID=NJN5H52SKZBKFRXTFH4W)
こちらの紫本との併用を勧めている方もいます。しかし黒本の解説自体充実してますし、黒本の解説を読んでもわからないところはググって解決できるはずです。

実務でもググって問題解決する力は必須でしょう。ここで「ほしい情報に効率よくリーチするための方法」を知っておく価値は十分にあると思います。
[これは便利！Google検索テクニック24選](https://www.turbine.co.jp/blog/201606_goole-search)

#学んだ順番
1.自分のマシンにJavaの開発環境を構築
2.ProgateのJavaレッスンを2週
3.黒本1~9章1週目
4.黒本1~9章2週目
5.黒本10~11章1週目
6.黒本1~9章3週目
7.黒本10~11章2週目

上記の順番通りに解説していきます。

#1.自分のマシンにJavaの開発環境を構築
環境構築をしないとJavaを動かして色々試すことができないので当然ですね。
私は下記の記事を参考に構築しました。
[Java環境構築(Mac版)　JDKインストール](https://techfun.cc/java/mac-jdk-install.html)
[Java環境構築(Windows版)　JDKインストール](https://techfun.cc/java/windows-jdk-install.html)

ちなみにJavaのIDEはEclipseが有名ですが、私はVisual Studio Code(以下VSCode)でJavaを書いています。理由は趣味でWEB制作をしていたときに使っていた慣れたエディタであるため、Eclipseより動作が軽く入力補完が強力なための2つです。

例えば、Eclipse上では「System.out.printl」まで打てば「System.out.println();」がサジェストされます。

対してVSCode上では「syso」まで打てば「System.out.println();」が、「main」と打てば「public static void main(String[] args) {}」がサジェストされます。

Silverの勉強では小さいプログラムを書いてどんどん試す工程が発生します。その点でVSCodeはEclipseよりも生産性が高いと考えたので私はVSCodeを選択しました。環境構築もマジ簡単です。VSCodeはいいぞ。
[超簡単！数クリックでVisualStudioCodeにJavaの開発環境を構築する方法。](https://yukituna.com/2091/)


#2.ProgateのJavaレッスンを2週
黒本を読む前に少しでもJavaの文法とプログラミング自体に慣れることが目的です。試験でプログラムを書かないとはいえ書いた方が記憶に定着しますし、何より楽しいと思いますのでモチベーションの維持にも効果的です。

私は無料の章のみ2週しました。有料の章もSilverの試験範囲内ですしやることに意味はあると思うのですが、最短距離で合格を目指すならより本番に近い黒本に時間をかけるべきだと思います。有料の章はSilver合格後に復習として取り組む使い方をお勧めします。
[Progateレッスン一覧](https://prog-8.com/languages)

私はProgateの問題を解くとき、解答欄ではなくVSCode上に全てのコードを書き、書いたコードを解答欄にコピペしています。Progateは問題を解くときすでにクラス名が書かれていたり、コードを書く場所までコメントで指定してくれるなど快適な環境です。しかし実際にコードを書くときそんなことはありません。

Progateは言語の取っ掛かりには優れたサービスですが、実際にエディタやIDEを使ってコードを書くときと乖離している部分があると感じています。なるべく最初から本番に近い環境で作業した方が長い目で見てプラスになるのではと考えています。これはただの自身のこだわりであり賛否両論あると思いますので、ご自由にお試しください。

#3.黒本1~9章1週目
試験対策の意味では、ここからが本番です。黒本1~9章の1週目は解説をよく読み教科書のように使いましょう。

1週目時点ではインプットが少ないため間違えるのが当たり前です。1つの問いに3分かけて自信のある答えを出せなければ解説を読みましょう。重要な箇所にマーカーを引いておくと2週目以降の見直しが楽です。1問ずつ解いて解説を確認すると次の問題の答えまで見えてしまいがちなので、しおりか何かで隠しつつ解説を見ましょう。(赤いシートで答え隠せたらいいのに)

黒本を進めていくと、処理の順番を変えたら出力結果がどう変わるのかなど気になる問題が必ず出てきます。そんなときは黒本の問題に少し手を加えたものを自分のエディタ上で動かしてみましょう。解説を読んでも答えに納得できないときはこの方法が役立ちます。

私はMain.javaファイルを1つ作成してデータ型や順番を変えたりと色々試していました。どうしても答えに納得できない箇所があれば、下記サイトの「お詫びと訂正」欄から正誤表を確認してみましょう。
[黒本の正誤表](https://book.impress.co.jp/books/1115101068)

私の場合、学んだその日は理解できなくても後日改めて解説を読むと理解できたことも多くありました。1週目にすべて理解する必要はありません。ただ、「なぜ間違えたのかがわからない」状態で進めることは危険です。解説を読んで間違えた原因だけでも把握した方が2週目以降の理解が深まります。その上で、どんどん進めて行きましょう。

#4.黒本1~9章2週目
1~9章まで終わらせて、また1章から勉強することを2週目だと想像するかもしれませんが違います。私は1章の問題を解いて解説を読んだら、その次の日に1章の復習をして2章目の問題を解いていました。次の日にすぐ復習する理由は2つあります。

1つめは、前日に勉強した内容を理解しているか確認するためです。それを確認するには2週目で答えを暗記しているだけではダメです。復習時に問題の答えを覚えてしまっている場合は、なぜその答えになるのかの理由を答えられるようにしましょう。また、2週目に間違えた問題には印を付けておきましょう。3週目以降の復習時に役立ちます。

2つめは記憶に留めるためです。1日1章終わらせるとして、1~9章まで勉強すると9日かかりますね。その後1章を復習するとなると、9日間空くことになります。その9日の間に1章を勉強したときの記憶は薄れているので同じミスをする可能性が高まります。

人の記憶には短期記憶と長期記憶があるので、理解したい知識なら長期記憶として保存しようという話です。エビングハウスの忘却曲線は有名ですね。
[エビングハウスの忘却曲線 誤解と本当の意味](https://zooming.jp/forgetting-curve/)
>このグラフから1つだけ教訓を得るとしたら、「1日後に復習すれば、1回目に記憶したときの約66％の手間（時間や回数）で再び覚えなおすことができる」ということです。シンプルに言うと1回目より2回目のほうが覚えるのにかかる手間が少ないということです。

黒本を1週しただけの状態ではすぐ忘れてもいい短期記憶に分類されてしまいます。短い間に何度も繰り返し復習することが長期記憶への道です。この忘却曲線を信じるかどうかはお任せしますが、私は効果があると感じています。

具体的には、下記のスケジュールに沿って勉強を進めました。
1日目：1章の問題を解いて1章の解説を読む
2日目：1章の問題を解いて1章の解説を読む、2章の問題を解いて2章の解説を読む
3日目：2章の問題を解いて2章の解説を読む、3章の問題を解いて3章の解説を読む
4日目...

しかし5~9章は問題数が増え難易度も上がったと感じたので、1日2日多く時間を取って他の章も軽く見直しつつ勉強しました。特に私のような実務未経験者ですと知らない用語も、出力結果に納得できない箇所も多くなりがちです。そうなると用語の詳しい解説を求めてググったり、エディタにコードを書いて出力結果に納得するまでの工程が発生するので必要な時間も多くなります。勉強時間は少なくとも1日5,6時間は取っていました。

#5.黒本10~11章1週目
模擬試験の章です。試験と同じく制限時間150分以内に77問の問題を解いてみましょう。私は2日で1章ずつ問題を解いて解説まで読みました。ただ1~9章までの知識では解けない問題もあり見直しに時間がかかるので、1章に3日まではかけても良いと思います。

1週目で合格点を出す必要はありません。私も1週目の正答率は50%程度でした。10章、11章で思ったより点が取れず落ち込むかもしれません。しかし、その分知らない知識をさらに吸収できると前向きに捉えましょう。

私は正答率が低く焦りを感じたため、基礎を復習するべく下記のサイトを読みました。マンガなので概念を理解するには文章よりわかりやすいと思いますし、コード例も書かれています。息抜き程度に眺めるのも良いでしょう。
[マンガで分かる Java入門講座](https://manga.crocro.com/?cat=java&pg=index)

#6.黒本1~9章3週目
2週目に間違えた問題を中心に復習しましょう。3週目は2日か3日あれば解説まで終えるはずです。3週目でも間違える問題は苦手分野の可能性が高いです。ここでできるだけ潰しましょう。私はよく間違えるところの解説文やメソッドの意味をまとめてメモ帳に書き、空き時間に見返すことで長期記憶に定着するよう工夫していました。


#7.黒本10~11章2週目
1週目と同じく、制限時間内にすべての問題を解いてみましょう。なぜ間違えた問題以外も復習するかというと、10,11章は本番の問題とよく似ているからです。1度は正解した問題も復習して本番のケアレスミスを少なくしましょう。ここで正答率が80%以上なら合格できる可能性が高いので、試験に申し込みましょう。

#試験の申し込み方法
[Java Silverの試験を受けたんだが手続きがマジめんどくさかった](https://takakisan.com/java-certification-silver-application/)
基本的にこのブログの通りですが、1点訂正箇所があります。

>試験を申し込んでからしばらくはCertViewの初回認証は行えないということになります。そのため、試験の申し込みは受験の1週間以上前に行った方が良いでしょう。

正しくは、「**ピアソンVUE社アカウント登録は**受験の1週間以上前に行った方が良いでしょう。」ですね。試験後すぐに結果を確認したい場合でも、試験の申し込みを1週間前までにする必要はないです。現に私は試験を3日後に設定して申し込みましたが、試験終了後すぐに結果を確認することができました。

ピアソンVUE社アカウント登録はすぐに済みますし、登録と同時に何かしらの試験に申し込む必要はありません。空き時間にさくっと登録しておきましょう。

#まとめ
Javaの開発環境を構築後、ProgateのJavaレッスンを2週と黒本を3週(10,11章は2週)。かけた時間は1日最低5時間。その過程で都度ググったりコードを書き、大事なことをメモして見返した結果、84%の正答率で合格しました。ここまで終えれば十分合格点が取れると思います。私の場合は1ヶ月かかりましたが、理解が早い人ならもう少し早く合格にたどり着けるでしょう。

余談ですが、合格したことを内定先に報告したところ非常に喜んでいただけました。正直Silverを取ったからといってバリバリコードを書いたり設計が出来る人になるわけではありません。しかし全く何もわからない初学者ではないことと、自走する力があることを対外的に証明するには良い資格だと思います。

Javaは多くの言語に影響を与えているため、今後別の言語を触ることになってもSilverの知識は役立つと思います。ScalaやKotlinなどのJVM系言語やJavaと似ていると言われるC#の学習コストも減るのではないでしょうか。何かアプリを作ってみたいけど何を作ればいいかわからない人にも、基礎固めとしていいでしょう。Silverの取得はQiitaの人気記事でもお勧めされています。
[私からあなたへ 一人前のJavaエンジニアになるためのロードマップを送ろう](https://qiita.com/haruto167/items/5a784df032518277f4a0)



では、みなさまの合格を祈っています。