yucatio@システムエンジニア

趣味で作ったものいろいろ

Java歴13年がJava Silverを受けてみた【総評】

試験を受けてみての感想です。

勉強編

yucatio.hatenablog.com

受験編

yucatio.hatenablog.com

試験を受けてよかった?

良かった。

当初の目標の1つであった、Java5より後に追加された機能について知ることができました。特に、関数型インターフェース(Consumer, Supplier, Predicate, Function)について整理できたのは良かったです(今までなんとなくでstreamAPI内でこれらを使っていたので)。 また、モジュールシステムについても概要を知れました(モジュールシステムはまだ現場で使ってないので)。 他にもインターフェースのdefaultメソッドなど知らなかったことがあり、この機会に知れてよかったです。

ほかの人に受験を勧める?

受験料が高いので、簡単には勧めません。会社負担であればありかな。(ちなみに私は自己負担で受験してます)

もちろん、取って損をすることはないです。取っていればJavaの基本的なルールを理解しているということが証明されます。 未経験者がJava Silverを持っていたら、勉強熱心な印象を受けます。

個人的には、Java Silverを受ける前にデザインパターンの本を先に読んでおいてほしいなと思います。この本自体読むのはとても大変なのですが、インターフェースやクラスの拡張&ポリモーフィズムの使いどころを学ぶのにとてもよい書籍です。

[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

Java言語で学ぶデザインパターン入門第3版 [ 結城 浩 ]
価格:4290円(税込、送料無料) (2022/9/18時点)


次はJava Gold

がんばります

Java歴13年がJava Silverを受けてみた【受験編】

勉強編はこちら

yucatio.hatenablog.com

黒本の模試で正答率90%を超えたので、試験の申し込みを行いました。

受験チケットの購入

受験料の支払いは、受験チケットを購入するか、試験の申込時にクレジットカードで支払います。受験料は32,340円(税込み)です。

受験チケットは、楽天で購入すると2,000円ほど安くなるのでこちらで購入しました。


購入すると、メールでチケット番号が送られてきます。

受験の申し込み

Certviewというサイトから申し込みを行います。CertviewへのログインにはOracleのアカウントが必要なので、ない場合は作成します。

Certviewにログイン後、メニューの「ピアソンVUEサイト」を選択します。「試験の検索」画面で"Java"で検索します。たくさん出てくるので慎重に選んでください。(私は間違ってSE8を選択しそうになりました。)

Java Silver SE11(日本語)の試験番号は1Z0-815-JPNです。

続いてテストセンターでの受験か、自宅での受験か選択します。私はテストセンターでの受験を選びました。

テストセンターを選択後、日時を選択します。私の場合、最寄りのテストセンターはあまり空きがありませんでしたが、職場と自宅の中間くらいのテストセンターには直近の日時で空きがあったの3日後の日程で予約しました。

続いて受験チケットの番号を入力し、確認画面などを経て申し込み完了です。

当日

持ち物は身分証明書(2点)です。

テストセンターが混んでいる場合にそなえて30分前に会場に到着しました。しかし空いていたため、並ぶことなく手続きを済ませることができました。手続き自体は5分ほどで終わったと思います。

すぐに受験をすることができるがどうするか聞かれたため、すぐに受験することにしました。

テスト

メモ用の、白い下敷きみたいなものとペンを渡されます。

PC画面に問題が出ます。紙と違ってスクロールする必要があります。1度、答えが選択肢の中にない、と思ったらスクロールが足りなかっただけということがあったので、きちんと最後までスクロールしたか確認することが大切です。

試験問題は、ほぼ黒本を覚えていけば解ける問題でした。中には黒本と全く同じ問題も出題されました。黒本全く同じ : 黒本の類似 : 初めて見た気がする = 20 : 70 :10くらいです(体感)

3時間の制限時間でしたが、1時間半程度で終わりました。終わったら退出できます。

結果発表

受験終了のボタンを押すと、結果がすぐに画面に出ます。 また、受験後10分くらいにCertviewへの反映がされたとメールが来ました。

受験結果

92%の正答率で合格しました。黒本一通り終えてすぐ受験できたのが功を奏しました。

総評へ続く

yucatio.hatenablog.com

Java歴13年がJava Silverを受けてみた【勉強編】

Java実務歴13年がJava Silverを受けてみたのでその記録です。

受験のきっかけ

TwitterJava Silverを受ける人を見かけたのが最初に受験を意識したきっかけです。 Webで問題を調べて解いてみたところ、解けそうで解けないことにますます興味がわきました。 自身はJavaメインで開発していますので、この際Goldを取得しようと考えたところ、Goldを受験するにはSilverの合格が必要と分かり、Silverをまず受験しました。

また、Javaを初めて勉強したときのバージョンは5で、それ以降のバージョンについては適宜勉強してきたつもりでしたが、少し不安があったため、これを機に勉強しようと思いました。

あとは、将来的にプログラミングの先生になることにも考えていて、基礎をおさらいするのにちょうどよいと思いました。

勉強期間

1週間強の短期決戦で試験に挑みました。1日3-4時間勉強しました。

  • 1日目&2日目 黒本(下の勉強方法の参照)1周目
  • 3日目&4日目 黒本2周目
  • 5日目 黒本の模試1回目
  • 6日目 黒本の模試2回目。ここで試験を申し込んだ。
  • 7日目&8日目 苦手分野をwebで検索
  • 9日目 試験本番

勉強方法

勉強をする際に購入した書籍は『徹底攻略Java SE 11 Silver問題集 [1Z0-815]対応』通称「黒本」です。この本は問題に対して解説が多く、読みやすいです。


1周目(模試以外)

最初にひととおり問題を解きました。1周目は1問ごとに解いて解説を見ました。1周目の正答率は体感で30%くらいでした。もっとできると思っていたのでちょっと落ち込みました。

出題にかなりクセがあります。いわゆる「クソコード」を読み解く問題も何問かあります。

こんなのとか↓

public class Increment {
  public static void main(String[] args) {
    int a = 10;
    int b = a++ + a + a-- - a-- + ++a;
    System.out.println(b);
  }
}

また、答えはAかな?Bかな?と考えていて、答えを見たら、答えはC:コンパイルエラーでした、という問題も多くありました。

このような問題の傾向を覚えるのが1周目でした。1周するとかなり慣れました。

2周目(模試以外)

全ての問題を解きなおしました。解説は、覚えているものについては飛ばしました。正答率は90%を超えましたが、1周目から日数を空けていなかったので単純に問題と答えを覚えていた問題もありました。

クセのある問題にも慣れ、パズルを解く感じで解くことができました。

模試

黒本には模試が2回分掲載されています。ほとんどがそれまでの章で扱った内容です。模試にもくわしい解説がついています。

1回目の模試85%以上、2回目の模試90%以上を正解することができたので、ここで受験を申し込むことにしました。

受験編に続く

yucatio.hatenablog.com

感想はこちら

yucatio.hatenablog.com

pom.xml内のプロジェクトのバージョンをmvnコマンドを使って抜き出す

pom.xmlのバージョンを、コマンドを使って抜き出したかった時のメモ。

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.yucatio</groupId>
  <artifactId>prototype01</artifactId>
  <version>0.0.2-SNAPSHOT</version>
  <name>penguin-meeting-room-prototype01</name>
  <description>Prototype for Penguin meeting room</description>
  <!-- 後略 -->

このpom.xmlがある場所で、以下のコマンドを実行するとプロジェクトのバージョンが抜き出せる。

$ mvn help:evaluate -Dexpression=project.version -q -DforceStdout
0.0.2-SNAPSHOT

project.versionの部分を変更すれば、任意の場所の情報を得ることができる。

【Java】スネークケース→キャメルケースに変換するプログラム

スネークケース(snake_case)からキャメルケース(camelCase)に変換するJavaのプログラムです。

  public static String toCamelCase(String text) {
    if (text == null) {
      return null;
    }
    if ("".equals(text)) {
      return "";
    }
    
    String[] words = text.split("_", 0);
    String camelWord = Arrays.stream(words)
        .filter(w -> !"".equals(w))
        .map(w -> Character.toUpperCase(w.charAt(0)) + w.substring(1))
        .collect(Collectors.joining(""));
    
    return Character.toLowerCase(camelWord.charAt(0)) + camelWord.substring(1);    
  }

簡単に解説すると、例えば"have_a_good_time"という入力の時、

  1. nullと空文字の場合は、それぞれnull, 空文字を返す
  2. "_"で文字を区切ります。(["have", "a", "good", "time"] の配列がえられます)
  3. 念のため空文字ははじきます
  4. 1文字目を大文字にしたものと2文字以降をつなげます(["Have", "A", "Good", "Time"])
  5. 配列の各要素をつなげます(HaveAGoodTime)
  6. 1文字目を小文字にしたものと、2文字目以降をつなげます(haveAGoodTime)

実行してみます

System.out.println(toCamelCase("a")); // a
System.out.println(toCamelCase("one_two_three")); // oneTwoThree

【Java】キャメルケース→スネークケースに変換するプログラム

キャメルケース(camelCase)からスネークケース(snake_case)に変換するJavaのプログラムです。

  public static String toSnakeCase(String text) {
    if (text == null) {
      return null;
    }
    if ("".equals(text)) {
      return "";
    }

    StringBuilder sb = new StringBuilder(text.length());

    sb.append(Character.toLowerCase(text.charAt(0)));

    for (char c : text.substring(1).toCharArray()) {
      if (Character.isUpperCase(c)) {
        sb.append("_").append(Character.toLowerCase(c));
      } else {
        sb.append(c);
      }
    }

    return sb.toString();
  }

簡単に解説すると、

  1. nullと空文字の場合は、それぞれnull, 空文字を返す
  2. 1文字目を小文字に変換してバッファに格納する
  3. 2文字目から最後まで順にみていって、大文字が現れたらアンダーバーと小文字に変換した文字をバッファに詰める。小文字ならそのまま詰める。
  4. バッファの文字を書き出して終了

実行してみます

System.out.println(toSnakeCase("a")); // a
System.out.println(toSnakeCase("oneTwoThree")); // one_two_three

JUnit実践入門を読んだ

職場でJUnitを使っています。JUnitについてなんとなく理解はしているものの、もう少し便利な機能がないかと思って本書を手に取りました。


感想

読みやすかった

平易な日本語で書かれていて読みやすかったです。テストコードの例も適切だと思いました。全体的にすらすらと読めました。

JUnitの機能が知れた

構造化テストやFiture、カスタムマッチャーは職場で使用していなかったので、今回知れてよかったです。

JUnitだけでなく、単体テスト関連のトピックが網羅されていた

JUnitだけでなく、テストデータの選び方、TDD、CI/CDと幅広く単体テストに関連するトピックが取り上げられていました。いくつかは すでに知っている内容ではありましたが、他の人と認識を合わせるときに便利だと思いました。

TDDの章では、実際にTDDを体験できるようになっていて、作業の進め方がわかりました。

JUnit4だった

現在(2022年8月)のJUnitの最新版は5で、こちらを使うのがよいようです。

次にすること