Oracleのjava silver(バージョン11)に受かったので、筆記用具もパソコンも一切使わない勉強方法で合格するまでの流れを書いてみた

##java silverとは
javaの資格で真ん中のレベルのやつ。
![139E8717-3F26-48B9-B6FF-B7CC6F69CC25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179803/a402fcd6-ae7f-68ca-df9d-06a86b6c5c90.png)

Bronzeは未経験者向けで、受験料も高いのでこれを目指す必要は無さそうです。

Silverは上級者のもとで開発できるかどうか、
Goldは、設計者の意図を正しく理解して独力で機能実装ができるかどうか
といった感じです。

Goldを受験するにはSilverの資格を持ってることが条件です。
oracleのjavaの資格を最初に取得するなら、Silverがおすすめってことになりそうですね。

## 僕のjavaの経験
大学でjavaの授業取ったことはありましたが、独学でがっつりはやってない。
新卒2年目になり、javaを経験したのは研修のみです。
開発業務ではまだjavaを扱ったことはない。

## 僕の性格(わりと重要)
「机に向かって筆記用具で勉強」みたいなのが小さい頃から苦手でしんどいと感じるタイプです。

参考書に蛍光ペンで書いたり付箋を付けたりみたいな「The 勉強」って感じがめっちゃ苦手です。

ですが、勉強してる感覚のない勉強は好きです(例えばゲーミフィケーションを用いた学習とか)

なので、どうにか意地でも筆記用具を使わず勉強することを決め、本当にその方法で合格出来たので、勉強方法を書いていきます。
僕はiPadを使いましたが、当然スマホ1つでもオッケーです。

## 参考書について
以下の参考書を使いました。
ここで普通と違うのは、一切筆記用具使わないので、
kindleで買いました。
●スッキリわかるJava入門
→これで基礎を学ぶ
●黒本
→これで試験対策

自分の場合は完全な初心者というわけではなかったので、「スッキリわかるJava入門」はサラッと読む程度でしたが、完全な初心者という方は1から順番に読むべきだと思います。(初めて勉強したときに使ってたけど分かりやすい)


## 勉強方法について
●参考書はKindleで読む(本の中身はもちろん載せれないのでこの画面で)
タイトルの通り、筆記用具は使いたくないのと、重たい本を持ち運びたくない
![E3B5AEDB-73B6-44D0-971C-05A712B85252.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179803/c01dd44b-9ea1-5abb-8636-2becc5cbf34c.png)


●「メモの魔力」は、ガチだった
何かあったらすぐメモしてました。

参考書を一から順番に読んでいくわけですが、
「あ、ちょっとここ理解が浅いのでメモしておきたい！」って思うときありますよね。
これを、<font color="DeepPink"> Googleドキュメント</font>に書きます。

僕は以下のようにメモしてました。

たまに参考書の解説だけじゃしっくり来ないときは、ネットの記事でお気に入りのやつスクショして貼ったりしてます
こんな感じや、
![6B39DFE2-3F8E-44F6-981C-A97B51D9C67C.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179803/a489978c-1ac5-881f-3749-5d8d9cfde0d8.png)

こんな感じで
![5D582B6B-B273-4A64-A213-5113649EAAFC.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179803/f8670cf9-09f4-1e67-a754-b31d38d921eb.png)

あとは、問題集で分からなかったところとか苦手な問題もスクショしたりしてメモと一緒にリスト化して記録していく。
スマホでもフォルダから画像をペースト出来るので、
スマホだけで上記のメモを作れます。

●実際にコードを動かして理解を深める
また、コードを実際に動かしてみるのも理解するのに重要です。じゃあどうするか。これもスマホ一つで出来ます。
Paizaというオンライン実行環境があり、それを使いました。
以下のURLでアクセスしてみてください。
https://paiza.io/ja/projects/new?language=java

このようにスマホで実行出来ます。
![8A17779F-7534-4EA2-A45A-F705E49B6333.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179803/3725d28b-878b-29b2-a649-afbb3fda2be8.jpeg)




**こうすることで、パソコン、スマホ、タブレットどこからでも好きなときに復習できますし、もう筆記用具の必要性を感じません。
参考書を見て勉強するのもメモをするのもオンラインでスマホやタブレットのみで出来るので、
重たい参考書を手に持って電車で勉強する必要も無く、スマホ片手で勉強できるのは僕にとっては大きかったです。**

## この資格で出題される問題では、クセのある問題がいっぱい。
* よく見たら、switch文のcaseとdefaultの順番、try catch finalyの順番がバラバラなパターン
    * 本当に文法について理解してるのかみたいな問題
    * ちなみに、switch文におけるdefaultの位置は自由だが、
try-catchに関しては順番通りに書かなきゃいけない(これは感覚的におぼえやすい)


* 普通に変数がいろいろ代入されて最終的な出力結果は？という問題で、答えは「初期化してない変数にアクセスしてるので、エラー」みたいなひっかけ
    * こういう感じで、「エラー」や「例外が発生する」や
「何も出力されない」みたいな選択肢もあるので、
コードをよーく見る必要がある。(つまり我々はコンパイラにならなきゃいけない)

* インクリメント演算子がめっちゃ含まれた出力結果
    * 「String hoge = 3+ ++a + a++ + "hoge" + ++a;」みたいな。
インクリメント演算子の位置によって値が代入されるタイミングが
理解できていれば難しくないが、文字列連結のところがひっかけかなという感じ。
    * 普通こんな書き方したらコードレビューで怒られるが、
インクリメント演算子について本当に理解してるのか問うためにこういう問題が存在する。

***
こんな感じで、普通はしないようなイレギュラーな書き方で書かれている問題で、「ざっくり理解」の受験生を落としにかかるので、問題のクセに慣れる必要がある。

とはいえ、全ての項目を隅から隅まで完璧に覚える必要はなく、参考書にも「この部分は試験に出ませんが、～」みたいなことも書いてくれてるので、そういうのはしっかり気にしつつ、でもざっくりは出来るだけ減らしていく考えが理想かなと思います。

##申し込みついて
まず、受験料がめっちゃ高い。3万2000円。
ウーン...ウーン...ファ！？ウーン...
まあベンダー資格だし多少はね？

でも、今回の資格では、再受験無料キャンペーンがあるんです！

https://www.pearsonvue.co.jp/Clients/Oracle/Special-Offers/Retake2021.aspx

このキャンペーンを使って試験を申し込むと、一回落ちても次回無料で再受験できる。金持ちニキ以外は必須。

いざ、申し込み。もちろんググったら、oracleの資格は申し込みが面倒で大変って言ってるいろんな記事が出てくる。
<font color="red"> **でも実際違った。** </font>

最近は一つのピアソンのやつだけで申し込みまで出来た。

とある記事通りに申し込んだら、そのやり方は古かったようで、
<font color="DeepPink">なんと、oracleさんから「そのやり方古いっすよ！」ってメールをいただいた。</font>

![EE525AFE-0C4F-43EA-9B9B-E2B2272C44D0.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179803/eba8ae93-d89a-ba74-5a14-faee2ab577f7.jpeg)

このようにありがたい提案もしていただいて、このメールにキャンセルの旨を伝えるとすぐキャンセルが反映された
![EFA98E36-C07D-47D5-9BA3-685E2254B509.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179803/8589e211-8824-9642-01fc-a8c48bb005e7.jpeg)

前までは、複数のサービスでアカウント作って複雑な申込みをする必要があったらしいが(自分も受験前に色々ググってそう思ってた)、最近は1つの場所でアカウント作ってシンプルに申し込めるようになって嬉しい。

##テストセンター到着から試験開始までの流れ
●会場に着くと、注意事項の紙と名前書いたりする紙を渡されるので、注意事項を確認して名前書いて渡す
↓
●荷物を全部ロッカーに入れてポケットにも何もない状態にする。
↓
●自分の顔写真を撮る。受付の近くの椅子に座り、小さいカメラの前で撮りました(その写真は後に合格証明書に使用されます)
その後、本人確認のための作業を少し
↓
●いざ、パソコンがずらっと置いてある部屋に行き、指定された場所に座りすぐ受験開始。

##実際に試験を受ける
CBT方式っていうパソコンでポチポチ選択して回答するやつです。

いろんな記事見てると、「システムが古いし文字が読みにくい」って書かれてるのを見たことあるが、実際のところ普通に見やすかったし、UIがどうのこうの言ってる人もいたけど、ただラジオボタンやチェックボックスで選択するだけだし最低限の機能で普通に満足でした。

まあ、テストセンターによって違うのかもしれない。

あと、時間めっちゃ余った。3時間用意されてるが、見直し含めて1時間以上余った。問題数に対して時間はたっぷりある。


##試験の結果
最後まで回答した後、「終了ボタン」をクリックした瞬間合否が表示されます。

結果は受かった(タイトルでもうバレてる)
一発合格や！！

その後メール来て、「マイページから合否の結果見てくれや」ってメール来た。
マイページから試験結果を見てみると、正式な証明書的なやつが表示された。

##感想
筆記用具や紙媒体の重たい参考書を使わずスマホ一つで勉強して資格取得まで出来るなんて今振り返ってみるとちょっと驚いた。

この資格は、なめてると意外に落ちるかもなので注意。
問題集をやり始めたとき、ぱっと見簡単そうで、答えはこれや！って思って解説見たら間違ってるパターンが何回もあった。

解説見て、「うわ、よく見たらここ静的メソッドやんけ。。。そりゃ普通のローカル変数使おうとしたらエラーになるわ。。。」とか、「え、フィールド変数クラスブロックの1番下にあったのかよ！そんなとこに置くとか変なひっかけやめてクレメンス」みたいな、コード全体を丁寧にしっかり読む必要があるってことはほんと大事。

こういう資格は画面(紙媒体の参考書なら紙に)に書かれたコードを頭の中で考えて処理結果を回答しなければなりません。

通常、便利なエディタを使って開発するので、上から下まで隅々まで読まなくてもエディタが何が問題かすぐ表示してくれるので、長い間便利な環境で開発してる人は最初は苦戦するんじゃないかと思います。

IDEが便利すぎて、エラー出たらコードを補完してくれたりするので、理解が浅くても開発できてしまう便利な環境は、良い面もあれば悪い面もあるんだなと思いました。

あとタイトルでは筆記用具やパソコンを使わずと書いているが、全くの初心者であればパソコンで何かしらの言語を使って書いてみるのは必要だと思います。
少しでも実装経験があれば今回の方法でパソコンはいらないと思います。

勉強はスマホやタブレットだけで行い、実際の試験もCBT方式なのでパソコンを使って試験を受けました。
一切筆記用具使わず資格取得というのは自分の中で新鮮だったしこれからも筆記用具を持たない生活を送りたい