はじめに
Java SE 17 Programmer II (1Z0-826-JPN) 試験に合格し、Oracle Certified Java Programmer, Gold SE 17 認定資格を取得しました。
Jave Silver 17 受験時の記録は以下のようになっています。
Java Silver SE 17 に合格しました - arukukaの日記
動機や受験の流れなどは上記で触れたので、AI活用してみました〜という話を書こうと思います。
eCertificate

試験結果
今回は83%でした。満点のつもりで退出しましたがこの点数なの恥ずかしい。。。

- (まんまる...)
- (おでこテッカテカ...)
- (注意して顎引かないからムカつくアングル...)
勉強の進め方
参考書(紫本)と問題集(黒本)を買いました。
JPMSなど全く知らない内容があったため、はじめは紫本を読み進めて読了後黒本に着手しました。紫本の1周目はは章末の練習問題を解いていません。
ノートを広げられない時(電車で移動中、横になっている時など)は Gemini Notebook くんにクイズ・フラッシュカードを出してもらってそれを解いていました。
他には適宜 Claude くんに問題を出してもらったり、Stream API を用いた相関係数を求めるコードを作成したりしました。
模擬試験
先に模擬試験の内容はどうだったか記載します。
- 黒本模擬試験 - 8/7
- 40/60 = 66%
- 紫本模擬試験 - 8/8
- 39/60 = 65% (ここで受験日を 8/19 に決定)
- 黒本模擬試験 - 8/15
- 51/60 = 85%
- 紫本模擬試験 - 8/16
- 47/60 = 78%
Gemini Notebook
今回は Gemini Notebook を多く回していました。紫本、黒本の問題数が少なく感じ、不安になったためです。
初期状態と課題
前回同様、Gemini Notebook の AI Studio でクイズ、フラッシュカードを作ってもらいました。
ソースに用いるテキストは Gemini に作ってもらいました。
ただこれは後述する問題があったのであまり意味がないかもしれません。
ソースに用いたテキスト:
【Java SE 17 Developer / Gold (1Z0-806-JPN) 公式出題範囲概要】 1. Java データの扱いとオブジェクト指向の高度な概念 - ネストしたクラス (静的インナークラス、内部クラス、局所クラス、匿名クラス) - 列挙型 (enum) の定義と高度な利用 (メソッドやフィールドの定義) - レコード (record) クラスの定義、コンパクトコンストラクタ、カプセル化 - シールドクラス (sealed, permits) とインタフェース、階層制御 2. 関数型プログラミングと Stream API - Lambda式、メソッド参照 (4つの形式)、実質的final - java.util.function 配下の標準関数型インタフェース (Function, Consumer, Supplier, Predicate, UnaryOperator, Bi* 派生等) - Stream API の生成、中間操作 (filter, map, flatMap, peek, distinct, sorted 等) - Stream API の終端操作 (forEach, collect, reduce, count, anyMatch, findFirst 等) - Collectors クラスの高度な集計 (groupingBy, partitioningBy, mapping, joining 等) - Primitive Stream (IntStream, LongStream, DoubleStream) とオブジェクト Stream 間の変換 3. 例外処理、アサーション、日付/時刻API - try-with-resources 文と AutoCloseable / Closeable - マルチキャッチ (catch (ExA | ExB e))、抑制された例外 (Suppressed Exceptions) - アサーション (assert) の構文と有効化 (-ea) - java.time パッケージ (LocalDate, LocalTime, LocalDateTime, ZonedDateTime, Instant, Duration, Period) 4. コンカレンシー (マルチスレッド・並行処理) - Runnable, Callable, Future インタフェース - ExecutorService, Executors クラス、スレッドプールの管理 - スレッドセーフ構造、synchronized, Volatile, Atomicクラス - データの競合、デッドロック、ライブロック、飢餓 (Starvation) - Concurrent コレクション (ConcurrentHashMap, CopyOnWriteArrayList 等) - Fork/Join フレームワーク (RecursiveTask, RecursiveAction) - Parallel Stream (並列ストリーム) の動作、副作用の回避、パフォーマンス 5. I/O (入出力) と NIO.2 - java.io パッケージ (InputStream/OutputStream, Reader/Writer, BufferedReader 等) - オブジェクトのシリアライズ (Serializable, transient, serialVersionUID) - java.nio.file パッケージ (Path, Paths, Files) - Files クラスによるファイル・ディレクトリ操作 (readAllLines, lines, walk, find, copy 等) 6. モジュールシステム (JPMS) - モジュール宣言 (module-info.java) の構文とディレクティブ (requires, requires transitive, exports, exports...to, uses, provides...with, open, opens) - サービスプロバイダ・インタフェース (SPI) と ServiceLoader - jlink ツールによるカスタムランタイムイメージの作成 7. JDBC によるデータベース連携 - JDBC のアーキテクチャ (DriverManager, Connection, Statement, PreparedStatement, ResultSet) - PreparedStatement による SQL 実行とパラメータバインド - ResultSet のデータ取得、カーソル移動、スクロール可能性 - トランザクション制御 (commit, rollback, setAutoCommit) 8. ローカライズとデザインパターン - Locale クラス、ResourceBundle、プロパティファイルによる多言語化 - NumberFormat, DateTimeFormatter によるフォーマットと解析 - デザインパターン (Singleton, Factory, Builder, Strategy, Observer など) の実装 ※注意: Java Gold では「Stream API の操作結果」「並行処理での排他制御」「モジュール間の参照可否」「JDBCの例外ハンドリング」など、コードの複雑な挙動を正確に読み解く力が強く問われます。
このプロンプトで SPI やディープリフレクションに関する問題を出題してもらっていて、最初は良い感じだな〜と思っていたのですが
Optionalの問題を出してと言ってもなかなか出してくれない- モジュールシステムに関する問題が1問、そして同じものを出してくる
requires transitiveのみ
といった課題があり、ウーンとなっていました。
一方で、書籍は Kindle 版で買ってしまっていて、ソースとして入れる情報に困っていました。

API ドキュメントを入れてみる
まずはOptional (Java SE 17 & JDK 17)を入れてみたのですが、当初改善はしませんでした。
紫本の模擬問題・解説の PDF を入れてみる
こちらも改善せず。。。
JLS を突っ込んだら良くなった
何か入れるPDFはないか悩んでいたところ、The Java® Language Specification. Java SE 17 Edition. の存在を知ったのでそれを入れてみようとなりました。
https://docs.oracle.com/javase/specs/jls/se17/jls17.pdf
そしたら不思議とドキュメントを参照したような問題が出題されるようになりました。

フラッシュカードも作成し、ペラペラめくっていました。

API ドキュメントを思いつく限り入れてみる
特定の分野の API に関する問題が出されるようになりました。「〇〇のAPIを用いるときドキュメントに明記されている選択肢はどれか」といった問題が出題されるようになりました(明記って、、、そこまで言わなくても(’;ω;`))。
問題は作りすぎて上記問題がどっか行ってしまったのですみませんスクショはないです。
最終状態
最終的にはリンク先のようになりました。
https://notebook.google.com/notebook/1399e1c1-868a-4fcf-a76b-a4877e525fae (閲覧にはGoogleアカウントのログインが必要なようです)

今後
書籍はKindle版じゃなくて、EPUB, PDF版があるならそっちを優先して購入し、Gemini Notebook に突っ込もうと思いました。
試験では
- 残り時間 49:00 で 1 周目終了→トイレに行く
- 残り時間 45:00 でトイレから戻る→レビュー
- 残り時間 30:00 レビュー終了→全問見直しへ
- 残り時間 15:00 見直し終了→途中退出
「この問題紫本、黒本で見た問題だっ」となる問題が結構ありました。
終わりに
Gemini Notebook くんが出してくれた問題が試験に出題されたかは微妙なところですが、、、理解には大きく役立ちました。
次は EPUB, PDF 版の参考書を買って Gemini Notebook に突っ込み、理解に役立てたいと思います。
次はG検定合格を目指します(こちらは参考書は購入済みなので反省活かせず)。





