【合格体験記】Oracle Certified Java Programmer Silver/Gold SE 11に合格しました．

この度，Java SE 11 認定資格 | Oracle Certified Java Programmer, Silver/Gold SE 11を取得しましたので，試験の概要・対策・感想について簡単にまとめたいと思います．勉強期間としては，SilverとGoldを合わせて1ヶ月半程度でした．

# はじめに

## Java SE 11 認定資格 | Oracle Certified Java Programmer とは？

[Java SE 11 認定資格 | Oracle Certified Java Programmer](https://www.oracle.com/jp/education/certification/jse11-5570635-ja.html) は，2019年6月下旬より開始された新しいJavaの認定資格試験です．Java 11以前の認定資格としては Oracle Certified Java Programmer, SE 7/8 が有名ですが，Java 11はJava 9以降で初の長期サポート (LTS: Long Term Support) 対象であり，Java SE 8 認定資格の正式な後継資格となります．[^cert]

また，認定資格名と試験名が異なるためちょっと混乱するかもしれませんが，Oracle Certified Java Programmer, Silver SE 11 認定資格を取得するためには _Java SE 11 Programmer I (1Z0-815-JPN)_ 試験の合格が，Oracle Certified Java Programmer, Gold SE 11 認定資格を取得するためには _Java SE 11 Programmer II (1Z0-816-JPN)_ 試験の合格が必要です．

試験形式・試験時間・出題数・合格ラインはSilverとGoldで共通です．詳細は [Java SE 11 Programmer I (1Z0-815-JPN) 試験](https://www.oracle.com/jp/education/certification/1z0-815-jpn-48261-ja.html)，[Java SE 11 Programmer II (1Z0-816-JPN) 試験](https://www.oracle.com/jp/education/certification/1z0-816-jpn-31705-ja.html) のページを参照してください．

* 受験料（税抜）：¥26,600
* 出題形式：選択問題
* 試験時間：180 分
* 出題数：80 問
* 合格ライン：63 %


## 筆者のバックグラウンド

Javaの開発経験は2年〜3年程度あり，Spring Bootを用いたRESTful Web APIや，Spring Batchを用いたバッチプログラムの開発経験があります．ファイルのI/Oが発生するバッチや，RDB/NoSQLに接続するWebサービスの開発等も行っていたため，Silverの試験範囲はおおよそ全て利用経験があり，Goldの試験範囲も一部は業務で使ったこと・見たことがあるレベルでした．とはいえ，並列処理やローカライズ・モジュール等，存在は知っていても使ったことはない試験範囲もありました．


## 試験範囲

Oracle Certified Java Programmer, Silver SE 11では，Javaの基本的な文法やオブジェクト指向モデル (クラス・カプセル化・継承・ポリモーフィズム) に加え，Java 8では存在しなかったモジュール・システムの知識が問われます． [試験範囲](https://www.oracle.com/jp/education/certification/1z0-815-jpn-48261-ja.html) は以下の通りです．

* Javaテクノロジと開発環境についての理解
* 簡単なJavaプログラムの作成
* Javaの基本データ型と文字列の操作
* 演算子と制御構造
* 配列の操作
* クラスの宣言とインスタンスの使用
* メソッドの作成と使用
* カプセル化の適用
* 継承による実装の再利用
* インタフェースによる抽象化
* 例外処理
* モジュール・システム

Oracle Certified Java Programmer, Gold SE 11では，例外処理・ジェネリクス・コレクション・ラムダ式・ストリーム・並列処理・JDBC等，公式APIの使い方や文法が幅広い分野で問われます．特に関数型インタフェース，ラムダ式，ストリームAPIについては頻出のため，しっかりと対策していく必要があります． [試験範囲](https://www.oracle.com/jp/education/certification/1z0-815-jpn-48261-ja.html) は以下の通りです．

* Javaの基礎
* 例外処理とアサーション
* Javaのインタフェース
* 汎用とコレクション
* 関数型インタフェースとラムダ式
* JavaストリームAPI
* 組込み関数型インタフェース
* ストリームに対するラムダ演算
* モジュール型アプリケーションに移行する
* モジュール型アプリケーションにおけるサービス
* 並列処理
* 並列ストリーム
* I/O（基本およびNIO2）
* Java SEアプリケーションにおけるセキュア・コーディング
* JDBCによるデータベース・アプリケーション
* ローカライズ
* アノテーション

# 資格取得までの道のり (Silver編)

## 勉強教材

以下を利用して勉強しました．

* [徹底攻略Java SE 11 Silver問題集［1Z0-815］対応 徹底攻略シリーズ](https://www.amazon.co.jp/dp/B07YWKWBBD/ref=sspa_dk_detail_2?psc=1&spLa=ZW5jcnlwdGVkUXVhbGlmaWVyPUEzMEVOMTJSWjZVWDdOJmVuY3J5cHRlZElkPUEwNzI4MDk4MVdJRDRDRkUxWEo4USZlbmNyeXB0ZWRBZElkPUFaVkJQUFU4MTVMQTkmd2lkZ2V0TmFtZT1zcF9kZXRhaWwmYWN0aW9uPWNsaWNrUmVkaXJlY3QmZG9Ob3RMb2dDbGljaz10cnVl)

俗に言う黒本です．その他 [紫本](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-SE11%EF%BC%88%E8%A9%A6%E9%A8%93%E7%95%AA%E5%8F%B71Z0-815%EF%BC%89-%E5%B1%B1%E6%9C%AC-ebook/dp/B07YDM92JZ/ref=bmx_2/355-6194299-3710320?_encoding=UTF8&pd_rd_i=B07YDM92JZ&pd_rd_r=c0fe799b-88c3-4adf-a65e-51bb17ee5803&pd_rd_w=SzJxg&pd_rd_wg=lmwA2&pf_rd_p=8b1b8ea6-92a9-4574-b298-fca3f890acd3&pf_rd_r=K9S358BMPM33R7GD3CPN&psc=1&refRID=K9S358BMPM33R7GD3CPN) も有名ですが，何かしらJavaの参考書を使ってJavaを勉強した経験のある方なら黒本単体で問題ないと思います．黒本は問題演習メインで，紫本は解説メインの参考書となります．

もしJavaの勉強をしたことがなくてSilverの資格を取得したい場合には，紫本の解説を読み込むか，[スッキリわかるJava入門](https://www.amazon.co.jp/dp/B00MIM1KFC/ref=sspa_dk_detail_5?psc=1&spLa=ZW5jcnlwdGVkUXVhbGlmaWVyPUEzRlU2SkNBWEdYUDFCJmVuY3J5cHRlZElkPUEwMzk0NDQ5MlI0RlZJS01MMUtGTSZlbmNyeXB0ZWRBZElkPUEyMUxXMDZUNjBVWDVBJndpZGdldE5hbWU9c3BfZGV0YWlsJmFjdGlvbj1jbGlja1JlZGlyZWN0JmRvTm90TG9nQ2xpY2s9dHJ1ZQ==) 等の参考書を使って一度基礎を理解してから黒本で問題演習を行ったほうがよいかもしれません．

なお，黒本は出てくる問題を全て覚える勢いでやり込んでください．各所で言われていますが，黒本の問題は実際の試験問題と傾向がよく似ており，黒本の問題が全て解けるなら間違いなく実際の試験も合格できます．

## 勉強期間

上記教材を利用して，下記スケジュールで資格勉強を進めていきました．およそ1週間程度で模擬試験2回分をさくっと2周し，試験にも無事合格することができました．なお，モジュール・システムについては初見だったため，章の問題・解説も読み込みました．

| # |  教材名 | 勉強期間 |
|---|---|---|
| 1 | 徹底攻略Java SE 11 Silver問題集［1Z0-815］対応 徹底攻略シリーズ | 1週間程度 |

## 感想・所感

シンプルに行きます．黒本をやり込んでください．それだけでほぼほぼ合格できると思います．

1つだけ注意点を挙げるとすれば，試験におけるソースコードが壊滅的に読みづらく，かつ各所にバグが散りばめられています．(黒本を読めばわかると思いますが．．．)

コーディング規約が存在しない∧IDEとかじゃなくてメモ帳で開発している∧Java経験者が1人もいない開発チームによって開発されたコードをデバッグするような作業になるので，ちょっと問題を解くのが辛いかもしれません．

# 資格取得までの道のり (Gold編)

## 勉強教材

以下を利用して勉強しました．

* [オラクル認定資格教科書 Javaプログラマ Gold 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-Gold-SE-8-ebook/dp/B01J1LPKJY/ref=bmx_3/355-6194299-3710320?_encoding=UTF8&pd_rd_i=B01J1LPKJY&pd_rd_r=c0fe799b-88c3-4adf-a65e-51bb17ee5803&pd_rd_w=SzJxg&pd_rd_wg=lmwA2&pf_rd_p=8b1b8ea6-92a9-4574-b298-fca3f890acd3&pf_rd_r=K9S358BMPM33R7GD3CPN&psc=1&refRID=K9S358BMPM33R7GD3CPN)
* [徹底攻略Java SE 8 Silver問題集［1Z0-808］対応 徹底攻略シリーズ](https://www.amazon.co.jp/%E5%BE%B9%E5%BA%95%E6%94%BB%E7%95%A5Java-SE-8-Silver%E5%95%8F%E9%A1%8C%E9%9B%86%EF%BC%BB1Z0-808%EF%BC%BD%E5%AF%BE%E5%BF%9C-%E5%BE%B9%E5%BA%95%E6%94%BB%E7%95%A5%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-ebook/dp/B01ASGJYIE/ref=bmx_5/355-6194299-3710320?_encoding=UTF8&pd_rd_i=B01ASGJYIE&pd_rd_r=c0fe799b-88c3-4adf-a65e-51bb17ee5803&pd_rd_w=SzJxg&pd_rd_wg=lmwA2&pf_rd_p=8b1b8ea6-92a9-4574-b298-fca3f890acd3&pf_rd_r=K9S358BMPM33R7GD3CPN&psc=1&refRID=K9S358BMPM33R7GD3CPN)

俗に言う紫本・黒本です．一応注意点ですが，Silverとは異なり，GoldはSE 11の参考書が存在しない (※記事執筆時点) ため，SE 8認定資格の参考書で学習する必要があります．とはいえ，[SE 8認定資格の試験範囲](https://education.oracle.com/ja/java-se-8-programmer-ii/pexam_1Z0-809) とはほぼほぼ重複しているため，十分対策になります．差分であるモジュール・システムについては [この辺の記事(Oracle)](https://www.oracle.com/webfolder/technetwork/jp/javamagazine/Java-SO17-Modules.pdf) や [この辺の記事(Qiita)](https://qiita.com/opengl-8080/items/93c8e0cf58654d5f73cb) で一通り動きを確認しておくとよいかと思います．

学習の流れとしては，まず経験のない分野 (関数型インタフェース・並列処理・ローカライズ) は紫本の解説を流し読みしました．問題は解いていません．解説を読了後，黒本の問題演習に入りました．こちらは模擬試験だけではなく，1章から問題演習を2周程度行いました．

そしてやっぱり黒本は問題形式がよく似ているので，こちらも全ての問題を覚える勢いでやり込んであげると良いと思います．もちろん理屈は理解した上で，ですが．

## 勉強期間

上記教材を利用して，下記スケジュールで資格勉強を進めていきました．期間としては，紫本が1週間程度，黒本が2週間程度だったと思います．時間をかけて勉強したこともあり，実際の試験の正答率はSilverよりもGoldの方が高かったです．

| # |  教材名 | 勉強期間 |
|---|---|---|
| 1 | オラクル認定資格教科書 Javaプログラマ Gold SE 8 | 1週間程度 |
| 2 | 徹底攻略Java SE 8 Silver問題集［1Z0-808］対応 徹底攻略シリーズ | 2週間程度 |

## 感想・所感

こちらも黒本をやり込んでください．分野としては，SE 8での目玉であるストリームやラムダ式はやっぱり大事なので特に重点的に対策をしてください．また，SE 8では存在しなかったモジュール・システムについても，最低限コマンドの種類と構文だけは理解した上で試験に臨んであげると良いと思います．

なお，Silverの問題よりはだいぶソースコードが読みやすいです！Silverのような重箱の隅をつつく問題というよりは，APIの正しい使い方やデータの流れ方を問う問題が多いので，Silverよりも簡単に感じる人がいるかもしれません．

# 感想 (全体)

実はそろそろJavaではなくGolang/Pythonを本業にしたいなーと思ったりしていて，だったらJavaを忘れる前に取れるものは取っておこう精神で急ぎ資格を取りました．Java経験者の方であれば割とさくっと取れると思うので，興味のある方は取得を目指してみてはどうでしょうか．

一応これでJavaに未練がなくなったので，身の回りの言語を少しずつGolang/Pythonに置き換えていけたらいいなーと思っています． 

[^cert]: LTSでないJava 9/10には [認定資格](https://www.oracle.com/jp/education/certification/allcertification-172551-ja.html#JavaSE) がありません．SE7/8を保持されている方はアップグレード用の移行試験によってSE11の資格にアップグレードすることが可能です．