生きづらいぼくたちが生き抜くために
ひとつでも多くの知識を
知恵にできますように

【リベンジ】Java Gold 合格した!ので、 勉強時間・勉強法・使った参考書とか 難易度感とか書きます 【約1年ぶり2回目試験】

f:id:HrkPPOI:20190930120509j:plain

おかげさまで無事に Java Gold 試験に合格することができました!!

前回落ちて悔しい思いをしたので、リベンジできてよかった!!!

www.arute.me

※ ガチめに解説しているので、お目当の箇所に合わせて移動してくださいね

Java Gold 試験とは?

資格の名称

まず Java Gold は通称名です。

正式名称は、 Oracle Certified Java Programmer, Gold SE 8 認定資格

Z0-809-JPN Java SE 8 Programmer II 試験 に合格することで認定を受けることができます。

ぼくの受けた試験は Java SE 8 のバージョンですが、Java SE 11 の試験も始まっています。これから学習を始めるかたはテキスト等揃っているなら Java SE 11 を受けるほうがオススメです

資格の概要

公式によると、資格概要は↓

Oracle Certified Java Programmer, Gold SE 8 認定資格は、設計者の意図を正しく理解して独力で機能実装が行える中上級者向け資格です。Javaアプリケーション開発に必要とされる汎用的なプログラミング知識を有し、設計者の意図を正しく理解して独力で機能実装が行える能力評価することを目的としています。

Java EE の範囲を含めればさらにこの上があるものの、Java Bronze → Java Silver → Java Gold と来て、Java SE の範囲のなかではいちばん難しい試験です。

試験範囲

試験範囲はここから見ることができます

僕の主観的な難易度としては、難しい順に👇でした。

  1. Java の同時実行性
  2. Java のファイル I/O(NIO.2)
  3. Java の I/O の基本
  4. Java クラスの設計
  5. Java ストリーム API
  6. コレクション、ストリームおよびフィルタ
  7. ラムダ組込み関数型インタフェース
  8. 高度な Java クラスの設計
  9. ジェネリクスとコレクション
  10. ローカライズ
  11. Java SE 8 の日付/時刻 API を使用する
  12. 例外とアサーション
  13. JDBC によるデータベース・アプリケーションの作成

マルチスレッド(同時実行性)

ダントツに難しかったのがマルチスレッドです。

概念的にも苦しかったし、覚えることの量も多かったですね〜。とくに Fork-Join フレームワークは苦しかった…。

マルチスレッドだけを解説している書籍を読むことも考えましたが、割り切って教科書的な理解に留めてしまいました。機会があれば下記の本あたりを読んでみるつもりです。

ファイル操作( NIO.2 含む)

マルチスレッドの次がファイル操作関係です。これはとにかく覚える量がアホほど多かった!

似た名前のクラスが多いのも特徴でした。

「これはぼくの知識が弱いから分からないだけで、知識がある人からするとこういうクラス名/メソッド名/メソッドの戻り値になるのは自然なことなのか?」という疑問が何度も湧きました。デザインパターンを一回真面目に学べば、もうちょっとこのあたりも分かるようになるかもしれません。

振り返ってみると、そこまでファイル操作からの出題は多くなかったような気もします。とはいえファイル操作はメソッドのシグニチャを暗記しているかが全てなので逃げられません。地道に覚えました。

関数型プログラミング系(ストリームAPI・ラムダ・関数型インタフェース)

ぼくは開発で(Javascript だけど)関数型の書きかたに親しんでいたので、あんまり苦労しませんでした。

唯一、toMap や groupingBy などのメソッドがオーバーロードされていて、どっちかだったかは、引数の数によって型の並び順が変わって発狂してました(いまも結局覚えていません)。結果的には試験でそこまで覚えていることを要求されず、全体としてはややラクな単元でした。

とはいえ、 Java Silver 時点でストリーム API がサッパリだった人は苦労すると思います。 if とか for を使って処理を組み立てていくのとはあまりにも違う考えかたので混乱するでしょう。

関数型まわりは試験問題の大部分に絡んでくるので、ここは捨てられません。がんばるしかないですね。

例外処理とアサーション・JDBC

この辺はなにも難しくなかったです。

アサーションは内容がとても単純だし、例外と JDBC は講義の予習をしているときに「あ、あれ…。こう書くとどうしてこうなるんだろう?」と疑問に思って調べたことがあり、知識的には6〜7割は初めからありました。

SQL 未経験場合は JDBC の学習時間が延びると思います。
とはいえ、 SQL はゼロから学習しても 4 時間くらいで Java Gold に必要な内容はおおよそ分かります。「スッキリSQL」は環境構築も不要のオンラインで SQL 操作できるし、解説も分かりやすい良書です。
これを機にササッとやってみるのがオススメです!

スッキリわかるSQL入門 第2版 ドリル222問付き! (スッキリシリーズ)

スッキリわかるSQL入門 第2版 ドリル222問付き! (スッキリシリーズ)

  • 作者: 中山清喬,飯田理恵子,株式会社フレアリンク
  • 出版社/メーカー: インプレス
  • 発売日: 2018/11/30
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る

そのほか

そのほかは可もなく不可もなくです。

すべての単元について言えることですが、総じて覚えることの絶対量が多く、この点は覚悟しなければなりません。

Java Silver と同じ温度感でやると痛い目にあいます(体験談)。

暗記が苦手な人は、逃げずに正面から向き合うことをオススメします。ぼくは本当に本当に暗記が苦手だったので Anki という暗記アプリを使いました(後述)。

1回目試験(不合格)までの学習

1回目の試験までの学習については、過去の記事にまとめています。▼こちらをご覧ください。

www.arute.me

学習時間は覚えていませんが、だいたい 80 〜 130 時間 くらいかなあ……。

Java Silver が比較的ラクの取れたので、Gold をナメてかかってしまいました🌀

2回目試験(合格)までの学習

学習時間は、1回目が不合格となってからおおよそ 60 時間くらいです。

  • anki(計45時間)
    • 作成 30時間
    • 記憶 15時間
  • 実機検証 15時間

使った書籍は1回目試験と同じで、下記の2冊です。

紫本はソースコードがネットからダウンロードできます。手打ちする必要がなくなり大幅に時間短縮できますよ。

Anki が抜群に良かった

上記を見て分かるように、実機検証の時間はあまり長くありません。

むかしはもっと実機検証に時間をかけていましたが、ワケあって減りました。

というのも、もともと「覚える」ことが本当に本当に苦手だったんですよ。

小学生のころ白地図の暗記がまったく出来なかったのが最初に苦手意識を抱いた瞬間で、以来ずっと苦手でした。

なので、「プログラムを覚える」というのがどうしていいか分からず、「(読んでわかっても)とりあえず動かしてみる」ことが学習の中心でした。

しかし、今年の春季 IPA 試験から Anki という暗記用単語帳アプリを使うようになり、「覚える」= 「『Anki に単語登録する』&『Anki に登録したカードをめくる』」 というパターンが自分の中に芽生えました。

その結果、読んで理解できることをわざわざ実行して試すことがなくなり、Anki を作っている時間のほうが実機検証している時間よりも長くなりました。

なお Anki については▼以下の記事にまとめています。

www.arute.me

ちなみにプログラミング学習では Janki という Anki 活用勉強法があるらしいので、興味のあるかたは以下の記事も読んでみるといいと思います🙌

www.lifehacker.jp

ちょっとやりすぎた

今回の得点率は 90% であり、合格基準点 65% を大きく上回ることになりました。

この点はやりすぎだったと反省しています。

本来であればもう 1 週間早く試験を受けても受かったと思いますが、27,000 円失う恐怖が大きく、時間をかけすぎてしまいました。

IPA の試験と違ってベンダー試験はいつでも受験できます。だからこそ万端の準備で挑むことができましたが、この試験に時間をかけすぎたせいで、その後の試験に着手するのが遅れました。

後述するとおり、Java Gold に時間をかけすぎたことが秋のネットワークスペシャリストを捨てることにつながり、手放しには喜べない結果となりました。

……いやいや、とはいえ、落ちるよりはいいか! 合格自体は手放しに喜ぼう!!

合格できて、良かったね。次は…

ネットワーク学習だ!

本当は、秋の IPA にネットワークスペシャリスト試験を受ける予定でした。

しかし予想以上に Java Gold の合格が遅れ&仕事が忙しく、時期固定のネスペは諦めることにしました😣

このあと年内は CCENT(ICND1 100-105)、CCNA(ICND2 200-105)を順に受ける予定です。来年 CCNP 、そして最終的には一番上まで取りたい(と、いまは思っている)ので、ICND1 から英語で受験します💪

インフラも教えられる講師に、おれはなる!

来春のデータベーススペシャリスト試験 or セキュリティスペシャリスト(情報処理安全確保支援士)で同じ過ちを繰り返さないように、ベンダー試験を受けるのは年内までにして年明けから予定です。
しかし、、、当初(去年)の予定では去年秋にネスペに合格し、そこから高度情報を総ナメする心算でした。現実は甘くないですねえ💧

次合格者支援だ!

ぼく以降に Java Gold を受験するかたの支援をしたいと思っています。

と言うと 有料サロン のようなものを想像すると思いますがそう ではなく 、ふつーに「気軽になんでも質問してくださいね」というだけものです。

twitter.com

現在 SIer 型の新人研修講師とPHP, Javascript による開発をしていて、無事今年結婚もできて(関係ないですが笑)、現在子供の予定もなく、ひとまずここ1年で餓死の心配はありません*1

それだったら、短期的な採算は無視して、質問をたくさんいただいてぼくの回答が web に溜まっていくほういいと思っています。

ぼくはむかし塾講師として働いていたころから「分かりやすさ」を追い求めて毎週のように説明の仕方本を読んでは中身を試してきましたし、それは IT 講師になったいまも変わりません。

時代の最先端でハイレベルな即戦力的知識は皆無ですが、広い IT 業界のなかではお役に立てる領域がそれなりにあると思っています。

それが単に Twitter で質問に回答するだけなのか、Slack 使っていくのか、その辺は今後次第ですが、まずはお気軽に Twitter にリプライ or DM お待ちしています🙌

おそらく Java Gold を受験するかたの大部分はぼくよりも実務経験が豊富だと思います。
試験合格という意味ではぼくが先にしているのでお伝えできることも多いでしょうが、「こんな話も知っておくとどっかで話すことあるかもよ」なことがあったらなんでも教えてくださいm(_ _)m

*1:これは冗談で言っているわけではありません。公務員を辞めてから28歳までフリーターだったので、この期間はいつも「おれは将来餓死するんじゃないか」という不安がありました。