📖

Java Goldに合格したのでいろいろ振り返ってみる

2025/02/28に公開

すでに先人の方々によって発信されているので真新しい情報があるかというと恐らくそうではないが、
せっかく合格したので、Java Gold合格体験記的なのを書こうと思う。

これからJava Goldを受験しようと意気込んでいる方、Silverを受験しようか検討している方
など、少しでも参考になれば幸いだ。

筆者

  • エンジニア2年目
  • 文系卒
  • Goldの勉強を本格的に始めるまでJava自体は業務で1年ほど使っていた

Java Goldを受験した経緯

プログラミング未経験者の私には、会社の短い研修の期間だけでプログラミング手法やオブジェクト指向を理解しきるのは無理だった。現場に入っても、なんとなくの理解で進めるしかなかった。もっと真面目にプログラミングを勉強する必要があると感じ、どうせやるなら資格とれればスキル証明になるから、という理由でSilverの受験を決めた。
いざ黒本(後述)でSilverを勉強していくと、オブジェクト指向を中心にJava(というより静的型付けプログラミングのお作法)を体系的に学べるので、知識の点と点がつながる感覚があってとても楽しかった。Silverが受かったので、Goldも受験することにした。

試験について

  • 正式名 : Oracle Certified Java Programmer, Gold SE 11
  • 受験料 : 41000円
  • 合格日 : 2025/01

ちなみに、受験料の高さが絶妙にやる気を高めてくれる。
絶対に落とせないというヒリヒリ感がいい意味でのストレスを与えてくれた(ポジティブ)

結果

83%(合格ライン:63%)

試験を経て考える学習優先度

出題数や、内容の難易度を考慮して、このような具合だと感じている。

★★  第1章 クラスとインタフェース
★★★ 第2章 関数型インタフェースとラムダ式
★★  第3章 並列処理
★★★ 第4章 ストリームAPI
★★  第5章 入出力
★   第6章 JDBCによるデータベース連携
★★  第7章 汎用とコレクション
    第8章 アノテーション
★★  第9章 例外とアサーション
★   第10章 ローカライズ
★★  第11章 モジュール・システム
★   第12章 Java SEアプリケーションにおけるセキュアコーディング

運が良かっただけかもしれないが、
全体通して黒本に乗っていた問題がほぼそのまま出題された問題が体感で3、4割はあったような気がする。

Goldは関数型プログラミングにフォーカスした試験というイメージで、
そこに対応する2章、4章は登場回数が多い。なので、最低限黒本に出てくる関数型インタフェースは全て引数と戻り値の型を覚える必要がある。

モジュールは正直勉強していてもあまり頭に入らず、楽しくなかったので捨てていたが、
本番では割と出題数が多くて冷や汗をかいた。なので嫌わずにモジュールもさらう必要がある。
ちなみに、アノテーションは本番に出なかったので星をつけていないが、黒本にでてくる問題くらいは最低限押さえておくに越したことはないと思う。

勉強方法

勉強期間:実質1か月ほど(平日2時間/日、休日5時間/日くらい)
教材:黒本(合計6周ほど)

何万回といわれているが、参考書に限れば黒本だけで十分だと思う。というか、黒本で勉強することで体系的な学びを得られたので、こちらを強くお勧めする。
あとは、Javadocを眺めたりするのも役だった。
仕事終わりや休日にカフェに寄り、勉強時間に充てていた。

最初のほうは特に計画を立てずに黒本を頭から解き進めていたが、
どちらかというとセクションの優先度を定めて、いつ、どの範囲をやるかというスケジュールを立てて
それを着実に潰していく勉強法のほうが精神的にも良いと思う。

あとは、頭の中で動きを作れないうちは自分でコードを書いて動きを確認することもした。
例えば、この問題。

public class Example {
	public static void main(String[] args) {
		List<String> list = Arrays.asList("red", "yellow", "blue");
		Stream<String> stream = list.stream();
		stream.filter(str -> str.length() > 3)
				.peek(str -> System.out.print(str + " "))
				.map(str -> str.toUpperCase())
				.peek(str -> System.out.print(str + " "))
				.forEach(System.out::print);
	}
}

実行し、コンソールに表示されるのは、以下となる。

yellow YELLOW YELLOWblue BLUE BLUE

ただ、中には次のように表示されると思った方もいるかと思う。

yellow blue YELLOW BLUE YELLOWBLUE

上記のコードでは、まずredという要素がfilterに渡され、文字数が4文字以上の条件に弾かれる。
次にyellowが渡され、filterの条件をクリアしpeekに渡される。そのあとpeek、forEach(終端操作)まで到達後にblueがfilterに渡される形となる。

ありがちなのは、1回目のpeekにyellowとblueが渡されると勘違いするパターンだと思う。そうではなく、どちらかというとストリームの要素が1つずつ下に落ちていくイメージ。

このように、イメージと実際の動きが異なる場合がある。

見て覚えるのでもいいが、動かした方が印象に残りやすいので、
並列処理あたりも自分で動かして理解を深めるのが良いと思う。

個人的な反省点

受験予定日を4、5か月後とかにするとダレてきてやめてしまうのでお勧めしない。
そして勉強方法も、黒本の解説ページをだらだらノートに頭から書き起こしたりしないほうがいい。
要はインプット比重が大きく、理解した気になっているというパターン。

黒本はとにかく解説が丁寧で理解しやすく、問題構成もよく考えられていると思う。
故に、そのまま解説を頭に入れるだけという作業で勉強した気に陥りやすい。
最初にこれをやってしまっていたのだが、正直時間の無駄だったと言い切って良い。

終わりが見えないと続かないので、長くても勉強期間は3か月以内をおすすめする。
要するに、受験日をそう遠くない日に設定し、短期集中でアウトプットしまくるのがいいというお話。

その他

2025/02時点で、Java Silver/Goldは最新がSE17で、対応する黒本も最近発売されたらしいので
今からSilverを受験するならそちらを検討するのも良いかと思われる。
ただ、出題数、出題範囲もSE11とは異なるため注意が必要。

終わりに

全体通してJava Goldというより黒本の魅力を書き連ねる形になったが、
Goldの範囲を実戦で身につけるとなると割と難易度が高いように思えるし、
結構遠回りしがちになってしまうと思っている。

それでいて、現場では当たり前のように求められるレベル感だと思うので、
黒本で体系的に学びを得られて、資格取得をもって知識の証明ができるという点で、個人的には取り組んで良かったと感じている。
受験料が割と無視できない額ではあるが、Javaを学ぶ一つの選択肢として、あるいはスキル証明の手段としてお勧めしたい。

Discussion