Java のインストール方法とか同梱される cacerts や tzdb.dat の確認

Java の導入方法や配置されるファイルを説明しているページがなかったので作った。

TL;DR

  • Oracle Java SE とそれ以外の各種 OpenJDK 配布物についていろいろと確認
  • (Amazon Corretto / OpenJDK(Redhat) 以外では) cacerts の更新を別の運用として考えておくほうがよさそう
    • 利用する Web サービスの情報に合わせるか、とりあえず最新情報を反映するか
    • 手放しだとどこかで刺さりそう
      • 証明書の検証が失敗する問題に出くわす可能性
      • 利用している配布物の違いにより片方では証明書の検証に成功し、もう一方では失敗するなどの問題に出くわす可能性
  • (OpenJDK(Redhat) 以外では) tzdb.dat の更新を別の運用として考えておくほうがよさそう
    • Oracle の提供する tzupdater を利用する (提供ライセンスは BCL)
    • Azul の提供する ziupdater を利用する (提供ライセンスは GPLv2+CE)
    • だがどちらも tzdata2018f.tar.gz より新しいタイムゾーンデータを反映できないという不具合がある
      • Redhat はこの不具合を解決済みで tzdata2018g を反映している!
    • 要チェック! JDK-8212684

対象にした配布物

考慮事項

  • 環境
  • インストール方法
  • 配置先
  • バージョン情報
  • cacerts
  • tzdb.dat

調査した結果

Amazon Corretto 8

確認した環境

amazonlinux:2.0.20181010 (d656eea421ba)

インストール方法

$ amazon-linux-extras install corretto8

$ yum install -y java-1.8.0-amazon-corretto-devel

配置

インストール先は /usr/lib/jvm の下でした。

alternatives にも対応しています。

$ ls -ld /usr/lib/jvm/java-1.8.0-amazon-corretto.x86_64
drwxr-xr-x 9 root root 4096 Nov 23 05:38 /usr/lib/jvm/java-1.8.0-amazon-corretto.x86_64

$ alternatives --config java

There are 4 programs which provide 'java'.

  Selection    Command
-----------------------------------------------
   1           /usr/lib/jvm/java-1.8.0-amazon-corretto.x86_64/jre/bin/java
   2           /usr/lib/jvm/zulu-8/bin/java
   3           /usr/lib/jvm/zulu-11/bin/java
*+ 4           /usr/java/jdk-11.0.1/bin/java

Enter to keep the current selection[+], or type selection number: ^C

バージョン情報

2018/11/23 時点ではバージョン情報に amazon-corretto-preview という文字列が入っています。

$ /usr/lib/jvm/java-1.8.0-amazon-corretto.x86_64/jre/bin/java -version
openjdk version "1.8.0_192"
OpenJDK Runtime Environment (build 1.8.0_192-amazon-corretto-preview-b12)
OpenJDK 64-Bit Server VM (build 25.192-b12, mixed mode)

cacerts

cacertsca-certificates パッケージ (Mozilla の CA root certificate bundle)に含まれるファイルを参照するようになっています。

依存パッケージとして管理されているため、更新の手間は軽減できそうです。

キーストアに登録されている CA ルート証明書の総数は 133 でした。 おそらく、Mozilla の CA ルート証明書から生成しているのではないかと思います (簡単に確認する方法が思いつかなかった…)。

$ yum deplist java-1.8.0-amazon-corretto | grep ca-certificate
  dependency: ca-certificates
   provider: ca-certificates.noarch 2018.2.22-70.0.amzn2

$ ls -l /usr/lib/jvm/java-1.8.0-amazon-corretto.x86_64/jre/lib/security/cacerts
lrwxrwxrwx 1 root root 53 Nov 23 05:35 /usr/lib/jvm/java-1.8.0-amazon-corretto.x86_64/jre/lib/security/cacerts -> ../../../../../../../../../../../etc/pki/java/cacerts

$ ls -l /etc/pki/java/cacerts
lrwxrwxrwx 1 root root 40 Oct 10 18:54 /etc/pki/java/cacerts -> /etc/pki/ca-trust/extracted/java/cacerts

$ yum provides /etc/pki/ca-trust/extracted/java/cacerts
Loaded plugins: ovl, priorities
153 packages excluded due to repository priority protections
ca-certificates-2017.2.14-71.amzn2.noarch : The Mozilla CA root certificate bundle
Repo        : amzn2-core
Matched from:
Filename    : /etc/pki/ca-trust/extracted/java/cacerts



ca-certificates-2018.2.22-70.0.amzn2.noarch : The Mozilla CA root certificate bundle
Repo        : amzn2-core
Matched from:
Filename    : /etc/pki/ca-trust/extracted/java/cacerts



ca-certificates-2018.2.22-70.0.amzn2.noarch : The Mozilla CA root certificate bundle
Repo        : installed
Matched from:
Filename    : /etc/pki/ca-trust/extracted/java/cacerts

$ keytool -list -keystore /etc/pki/ca-trust/extracted/java/cacerts -storepass changeit | head -n 4
Keystore type: jks
Keystore provider: SUN

Your keystore contains 133 entries

$ grep -c "BEGIN CERTIFICATE" /etc/pki/tls/cert.pem
133

tzdb.dat

tzdb.datJava だけが利用するタイムゾーン情報データベースです。 tzdata2018e から変換したファイルが配置されていました。

OS の tzdata パッケージとは独立しています。

IANAで公開されているデータベースファイルを ziupdatertzupdater で変換して使用します。

$ ls -l /usr/lib/jvm/java-1.8.0-amazon-corretto.x86_64/jre/lib/tzdb.dat
-rw-r--r-- 1 root root 105882 Nov 13 17:31 /usr/lib/jvm/java-1.8.0-amazon-corretto.x86_64/jre/lib/tzdb.dat

$ od -Ax -t x1z /usr/lib/jvm/java-1.8.0-amazon-corretto.x86_64/jre/lib/tzdb.dat  | head
000000 01 00 04 54 5a 44 42 00 01 00 05 32 30 31 38 65  >...TZDB....2018e<
000010 02 57 00 0e 41 66 72 69 63 61 2f 41 62 69 64 6a  >.W..Africa/Abidj<
000020 61 6e 00 0c 41 66 72 69 63 61 2f 41 63 63 72 61  >an..Africa/Accra<
000030 00 12 41 66 72 69 63 61 2f 41 64 64 69 73 5f 41  >..Africa/Addis_A<
000040 62 61 62 61 00 0e 41 66 72 69 63 61 2f 41 6c 67  >baba..Africa/Alg<
000050 69 65 72 73 00 0d 41 66 72 69 63 61 2f 41 73 6d  >iers..Africa/Asm<
000060 61 72 61 00 0d 41 66 72 69 63 61 2f 41 73 6d 65  >ara..Africa/Asme<
000070 72 61 00 0d 41 66 72 69 63 61 2f 42 61 6d 61 6b  >ra..Africa/Bamak<
000080 6f 00 0d 41 66 72 69 63 61 2f 42 61 6e 67 75 69  >o..Africa/Bangui<
000090 00 0d 41 66 72 69 63 61 2f 42 61 6e 6a 75 6c 00  >..Africa/Banjul.<

Azul Zulu 8

確認した環境

amazonlinux:2.0.20181010 (d656eea421ba)

インストール方法

$ yum install -y https://cdn.azul.com/zulu/bin/zulu8.33.0.1-jdk8.0.192-linux.x86_64.rpm

RHELOracle Linux なら Yum リポジトリを利用することもできる。

$ yum-config-manager --add-repo http://repos.azulsystems.com/rhel/zulu.repo
$ yum-config-manager --enable zulu
$ yum install -y zule-8

配置

インストール先は /usr/lib/jvm の下でした。

alternatives にも対応しています。

$ ls -ld /usr/lib/jvm/zulu-8
drwxr-xr-x 9 root root 4096 Nov 23 18:14 /usr/lib/jvm/zulu-8

$ alternatives --config java

There are 2 programs which provide 'java'.

  Selection    Command
-----------------------------------------------
   1           /usr/lib/jvm/java-1.8.0-amazon-corretto.x86_64/jre/bin/java
*+ 2           /usr/lib/jvm/zulu-8/bin/java

Enter to keep the current selection[+], or type selection number:

バージョン情報

2018/11/23 時点ではバージョン情報に Zulu 8.33.0.1-linux64 という文字列が入っています。

$ /usr/lib/jvm/zulu-8/jre/bin/java -version
openjdk version "1.8.0_192"
OpenJDK Runtime Environment (Zulu 8.33.0.1-linux64) (build 1.8.0_192-b01)
OpenJDK 64-Bit Server VM (Zulu 8.33.0.1-linux64) (build 25.192-b01, mixed mode)

cacerts

cacerts に登録されている CA ルート証明書の総数は 158 でした。

$ keytool -list -keystore /usr/lib/jvm/zulu-8/jre/lib/security/cacerts -storepass changeit | head -n 4
Keystore type: jks
Keystore provider: SUN

Your keystore contains 158 entries

tzdb.dat

tzdata2018e から変換したファイルが配置されていました。

$ ls -l /usr/lib/jvm/zulu-8/jre/lib/tzdb.dat
-rw-r--r-- 1 root root 105882 Oct 20 00:52 /usr/lib/jvm/zulu-8/jre/lib/tzdb.dat

$ od -Ax -t x1z /usr/lib/jvm/zulu-8/jre/lib/tzdb.dat  | head
000000 01 00 04 54 5a 44 42 00 01 00 05 32 30 31 38 65  >...TZDB....2018e<
000010 02 57 00 0e 41 66 72 69 63 61 2f 41 62 69 64 6a  >.W..Africa/Abidj<
000020 61 6e 00 0c 41 66 72 69 63 61 2f 41 63 63 72 61  >an..Africa/Accra<
000030 00 12 41 66 72 69 63 61 2f 41 64 64 69 73 5f 41  >..Africa/Addis_A<
000040 62 61 62 61 00 0e 41 66 72 69 63 61 2f 41 6c 67  >baba..Africa/Alg<
000050 69 65 72 73 00 0d 41 66 72 69 63 61 2f 41 73 6d  >iers..Africa/Asm<
000060 61 72 61 00 0d 41 66 72 69 63 61 2f 41 73 6d 65  >ara..Africa/Asme<
000070 72 61 00 0d 41 66 72 69 63 61 2f 42 61 6d 61 6b  >ra..Africa/Bamak<
000080 6f 00 0d 41 66 72 69 63 61 2f 42 61 6e 67 75 69  >o..Africa/Bangui<
000090 00 0d 41 66 72 69 63 61 2f 42 61 6e 6a 75 6c 00  >..Africa/Banjul.<

Azul Zulu 11

確認した環境

amazonlinux:2.0.20181010 (d656eea421ba)

インストール方法

yum install -y https://cdn.azul.com/zulu/bin/zulu11.2.3-jdk11.0.1-linux.x86_64.rpm

RHELOracle Linux なら Yum リポジトリを利用することもできる。

$ yum-config-manager --add-repo http://repos.azulsystems.com/rhel/zulu.repo
$ yum-config-manager --enable zulu
$ yum install -y zule-11

配置

インストール先は /usr/lib/jvm の下でした。

alternatives にも対応しています。

$ ls -ld /usr/lib/jvm/zulu-11
drwxr-xr-x 9 root root 4096 Nov 23 21:23 /usr/lib/jvm/zulu-11

$ alternatives --config java

There are 4 programs which provide 'java'.

  Selection    Command
-----------------------------------------------
   1           /usr/lib/jvm/java-1.8.0-amazon-corretto.x86_64/jre/bin/java
   2           /usr/lib/jvm/zulu-8/bin/java
   3           /usr/lib/jvm/zulu-11/bin/java
*+ 4           /usr/java/jdk-11.0.1/bin/java

Enter to keep the current selection[+], or type selection number: ^C

バージョン情報

2018/11/23 時点ではバージョン情報に Zulu11.2+3 という文字列が入っています。

$ /usr/lib/jvm/zulu-11/bin/java -version
openjdk version "11.0.1" 2018-10-16 LTS
OpenJDK Runtime Environment Zulu11.2+3 (build 11.0.1+13-LTS)
OpenJDK 64-Bit Server VM Zulu11.2+3 (build 11.0.1+13-LTS, mixed mode)

cacerts

cacerts に登録されている CA ルート証明書の総数は 158 でした。

$ keytool -list -keystore /usr/lib/jvm/zulu-11/lib/security/cacerts -storepass changeit | head -n 4
Keystore type: jks
Keystore provider: SUN

Your keystore contains 158 entries

tzdb.dat

tzdata2018e から変換したファイルが配置されていました。

$ ls -l /usr/lib/jvm/zulu-11/lib/tzdb.dat
-rw-r--r-- 1 root root 105882 Oct 20 00:04 /usr/lib/jvm/zulu-11/lib/tzdb.dat

$ od -Ax -t x1z /usr/lib/jvm/zulu-11/lib/tzdb.dat | head
000000 01 00 04 54 5a 44 42 00 01 00 05 32 30 31 38 65  >...TZDB....2018e<
000010 02 57 00 0e 41 66 72 69 63 61 2f 41 62 69 64 6a  >.W..Africa/Abidj<
000020 61 6e 00 0c 41 66 72 69 63 61 2f 41 63 63 72 61  >an..Africa/Accra<
000030 00 12 41 66 72 69 63 61 2f 41 64 64 69 73 5f 41  >..Africa/Addis_A<
000040 62 61 62 61 00 0e 41 66 72 69 63 61 2f 41 6c 67  >baba..Africa/Alg<
000050 69 65 72 73 00 0d 41 66 72 69 63 61 2f 41 73 6d  >iers..Africa/Asm<
000060 61 72 61 00 0d 41 66 72 69 63 61 2f 41 73 6d 65  >ara..Africa/Asme<
000070 72 61 00 0d 41 66 72 69 63 61 2f 42 61 6d 61 6b  >ra..Africa/Bamak<
000080 6f 00 0d 41 66 72 69 63 61 2f 42 61 6e 67 75 69  >o..Africa/Bangui<
000090 00 0d 41 66 72 69 63 61 2f 42 61 6e 6a 75 6c 00  >..Africa/Banjul.<

Oracle OpenJDK 11

確認した環境

amazonlinux:2.0.20181010 (d656eea421ba)

インストール方法

$ curl -L https://download.java.net/java/GA/jdk11/13/GPL/openjdk-11.0.1_linux-x64_bin.tar.gz |
tar xzf - -C /usr/lib/jvm/

配置

配布形式が tar.gz のため、インストール先は任意。 当然 alternatives にも未対応。

$ ls -ld /usr/lib/jvm/jdk-11.0.1
drwxr-xr-x 8 root root 4096 Nov 24 09:12 /usr/lib/jvm/jdk-11.0.1

バージョン情報

2018/11/23 時点ではバージョン情報に特徴的な文字列が入っていません。

$ /usr/lib/jvm/jdk-11.0.1/bin/java -version
openjdk version "11.0.1" 2018-10-16
OpenJDK Runtime Environment 18.9 (build 11.0.1+13)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.1+13, mixed mode)

cacerts

cacerts に登録されている CA ルート証明書の総数は 93 でした。

$ ls -l /usr/lib/jvm/jdk-11.0.1/lib/security/cacerts
-rw-r--r-- 1 668 668 102883 Oct  6 21:17 /usr/lib/jvm/jdk-11.0.1/lib/security/cacerts

$ keytool -list -keystore /usr/lib/jvm/jdk-11.0.1/lib/security/cacerts -storepass changeit | head -n 4
Keystore type: jks
Keystore provider: SUN

Your keystore contains 93 entries

tzdb.dat

tzdata2018e から変換したファイルが配置されていました。

$ ls -l /usr/lib/jvm/jdk-11.0.1/lib/tzdb.dat
-rw-r--r-- 1 668 668 105882 Oct  6 21:17 /usr/lib/jvm/jdk-11.0.1/lib/tzdb.dat

$ od -Ax -t x1z /usr/lib/jvm/jdk-11.0.1/lib/tzdb.dat | head
000000 01 00 04 54 5a 44 42 00 01 00 05 32 30 31 38 65  >...TZDB....2018e<
000010 02 57 00 0e 41 66 72 69 63 61 2f 41 62 69 64 6a  >.W..Africa/Abidj<
000020 61 6e 00 0c 41 66 72 69 63 61 2f 41 63 63 72 61  >an..Africa/Accra<
000030 00 12 41 66 72 69 63 61 2f 41 64 64 69 73 5f 41  >..Africa/Addis_A<
000040 62 61 62 61 00 0e 41 66 72 69 63 61 2f 41 6c 67  >baba..Africa/Alg<
000050 69 65 72 73 00 0d 41 66 72 69 63 61 2f 41 73 6d  >iers..Africa/Asm<
000060 61 72 61 00 0d 41 66 72 69 63 61 2f 41 73 6d 65  >ara..Africa/Asme<
000070 72 61 00 0d 41 66 72 69 63 61 2f 42 61 6d 61 6b  >ra..Africa/Bamak<
000080 6f 00 0d 41 66 72 69 63 61 2f 42 61 6e 67 75 69  >o..Africa/Bangui<
000090 00 0d 41 66 72 69 63 61 2f 42 61 6e 6a 75 6c 00  >..Africa/Banjul.<

Oracle Java SE 11

確認した環境

amazonlinux:2.0.20181010 (d656eea421ba)

インストール方法

$ yum install -y jdk-11.0.1_linux-x64_bin.rpm

配置

インストール先は /usr/java の下でした。 alternatives にも対応しているようです。

$ ls -ld /usr/java/jdk-11.0.1
drwxr-xr-x 9 root root 4096 Nov 24 11:27 /usr/java/jdk-11.0.1

$ alternatives --config java

There are 4 programs which provide 'java'.

  Selection    Command
-----------------------------------------------
   1           /usr/lib/jvm/java-1.8.0-amazon-corretto.x86_64/jre/bin/java
 + 2           /usr/lib/jvm/zulu-8/bin/java
   3           /usr/lib/jvm/zulu-11/bin/java
*  4           /usr/java/jdk-11.0.1/bin/java

Enter to keep the current selection[+], or type selection number: ^C

バージョン情報

特徴的なのは Java(TM) という文字列ですね。

$ /usr/java/jdk-11.0.1/bin/java -version
java version "11.0.1" 2018-10-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.1+13-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode)

cacerts

cacerts に登録されている CA ルート証明書の総数は 93 でした。

Oracle OpenJDK のファイルと完全に一致しています (diff で確認)。

$ ls -l /usr/java/jdk-11.0.1/lib/security/cacerts
-rw-r--r-- 1 root root 102883 Oct  6 21:30 /usr/java/jdk-11.0.1/lib/security/cacerts

$ /usr/java/jdk-11.0.1/bin/keytool -list -cacerts -storepass changeit | head -n 4
Keystore type: JKS
Keystore provider: SUN

Your keystore contains 93 entries

$ diff /usr/lib/jvm/jdk-11.0.1/lib/security/cacerts /usr/java/jdk-11.0.1/lib/security/cacerts

tzdb.dat

tzdata2018e から変換したファイルが配置されていました。

Oracle OpenJDK のファイルと完全に一致しています (diff で確認)。

$ ls -l /usr/java/jdk-11.0.1/lib/tzdb.dat
-rw-r--r-- 1 root root 105882 Oct  6 21:30 /usr/java/jdk-11.0.1/lib/tzdb.dat

$ od -Ax -t x1z /usr/java/jdk-11.0.1/lib/tzdb.dat | head
000000 01 00 04 54 5a 44 42 00 01 00 05 32 30 31 38 65  >...TZDB....2018e<
000010 02 57 00 0e 41 66 72 69 63 61 2f 41 62 69 64 6a  >.W..Africa/Abidj<
000020 61 6e 00 0c 41 66 72 69 63 61 2f 41 63 63 72 61  >an..Africa/Accra<
000030 00 12 41 66 72 69 63 61 2f 41 64 64 69 73 5f 41  >..Africa/Addis_A<
000040 62 61 62 61 00 0e 41 66 72 69 63 61 2f 41 6c 67  >baba..Africa/Alg<
000050 69 65 72 73 00 0d 41 66 72 69 63 61 2f 41 73 6d  >iers..Africa/Asm<
000060 61 72 61 00 0d 41 66 72 69 63 61 2f 41 73 6d 65  >ara..Africa/Asme<
000070 72 61 00 0d 41 66 72 69 63 61 2f 42 61 6d 61 6b  >ra..Africa/Bamak<
000080 6f 00 0d 41 66 72 69 63 61 2f 42 61 6e 67 75 69  >o..Africa/Bangui<
000090 00 0d 41 66 72 69 63 61 2f 42 61 6e 6a 75 6c 00  >..Africa/Banjul.<

$ diff /usr/lib/jvm/jdk-11.0.1/lib/tzdb.dat /usr/java/jdk-11.0.1/lib/tzdb.dat

OpenJDK 8 (AdoptOpenJDK)

確認した環境

amazonlinux:2.0.20181010 (d656eea421ba)

インストール方法

$ curl -L https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u192-b12/OpenJDK8U-jdk_x64_linux_hotspot_8u192b12.tar.gz |
tar xzf - -C /usr/lib/jvm/

配置

配布形式が tar.gz のため、インストール先は任意。 当然 alternatives にも未対応。

$ ls -ld /usr/lib/jvm/jdk8u192-b12
drwxrwxr-x 9 root root 4096 Nov  1 04:41 /usr/lib/jvm/jdk8u192-b12

バージョン情報

特徴的なのは AdoptOpenJDK という文字列ですね。

$ /usr/lib/jvm/jdk8u192-b12/jre/bin/java -version
openjdk version "1.8.0_192"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_192-b12)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.192-b12, mixed mode)

cacerts

cacerts に登録されている CA ルート証明書の総数は 92 でした。

Oracle OpenJDK よりも 1 少ない。

diffJava 11 のリリースノート(JDK-8210432) より、TeliaSoneraルート証明書が不足しているようです。

Jira 課題は JDK-8210432 で解決済みになっています。 バックポートが必要だと思うのですが… あとで報告します。

$ ls -l /usr/lib/jvm/jdk8u192-b12/jre/lib/security/cacerts
-rw-rw-r-- 1 root root 101493 Nov  1 04:41 /usr/lib/jvm/jdk8u192-b12/jre/lib/security/cacerts

$ /usr/lib/jvm/jdk8u192-b12/jre/bin/keytool -list -keystore /usr/lib/jvm/jdk8u192-b12/jre/lib/security/cacerts -storepass changeit | head -n 4
Keystore type: jks
Keystore provider: SUN

Your keystore contains 92 entries

$ diff -u oopenjdk_cacerts.txt adoptopenjdk8_cacerts.txt | grep -E '^[\+\-]'
--- oopenjdk_cacerts.txt    2018-11-24 10:00:11.942617000 +0900
+++ adoptopenjdk8_cacerts.txt   2018-11-24 17:46:05.708039000 +0900
-Your keystore contains 93 entries
+Your keystore contains 92 entries
-addtrustclass1ca [jdk], Dec 1, 2017, trustedCertEntry,
-Certificate fingerprint (SHA1): CC:AB:0E:A0:4C:23:01:D6:69:7B:DD:37:9F:CD:12:EB:24:E3:94:9D
+addtrustclass1ca [jdk], Dec 1, 2017, trustedCertEntry,
+Certificate fingerprint (SHA1): CC:AB:0E:A0:4C:23:01:D6:69:7B:DD:37:9F:CD:12:EB:24:E3:94:9D
-keynectisrootca [jdk], Dec 1, 2017, trustedCertEntry,
-Certificate fingerprint (SHA1): 9C:61:5C:4D:4D:85:10:3A:53:26:C2:4D:BA:EA:E4:A2:D2:D5:CC:97
+keynectisrootca [jdk], Dec 1, 2017, trustedCertEntry,
+Certificate fingerprint (SHA1): 9C:61:5C:4D:4D:85:10:3A:53:26:C2:4D:BA:EA:E4:A2:D2:D5:CC:97
-verisignclass3g3ca [jdk], Dec 1, 2017, trustedCertEntry,
-Certificate fingerprint (SHA1): 13:2D:0D:45:53:4B:69:97:CD:B2:D5:C3:39:E2:55:76:60:9B:5C:C6
-certumtrustednetworkca [jdk], Dec 1, 2017, trustedCertEntry,
-Certificate fingerprint (SHA1): 07:E0:32:E0:20:B7:2C:3F:19:2F:06:28:A2:59:3A:19:A7:0F:06:9E
-teliasonerarootcav1 [jdk], Sep 6, 2018, trustedCertEntry,
-Certificate fingerprint (SHA1): 43:13:BB:96:F1:D5:86:9B:C1:4E:6A:92:F6:CF:F6:34:69:87:82:37
+certumtrustednetworkca [jdk], Dec 1, 2017, trustedCertEntry,
+Certificate fingerprint (SHA1): 07:E0:32:E0:20:B7:2C:3F:19:2F:06:28:A2:59:3A:19:A7:0F:06:9E
+verisignclass3g3ca [jdk], Dec 1, 2017, trustedCertEntry,
+Certificate fingerprint (SHA1): 13:2D:0D:45:53:4B:69:97:CD:B2:D5:C3:39:E2:55:76:60:9B:5C:C6
-globalsigneccrootcar5 [jdk], Jul 13, 2018, trustedCertEntry,
-Certificate fingerprint (SHA1): 1F:24:C6:30:CD:A4:18:EF:20:69:FF:AD:4F:DD:5F:46:3A:1B:69:AA
-ttelesecglobalrootclass2ca [jdk], Jul 13, 2018, trustedCertEntry,
-Certificate fingerprint (SHA1): 59:0D:2D:7D:88:4F:40:2E:61:7E:A5:62:32:17:65:CF:17:D8:94:E9
+globalsigneccrootcar5 [jdk], Jul 13, 2018, trustedCertEntry,
+Certificate fingerprint (SHA1): 1F:24:C6:30:CD:A4:18:EF:20:69:FF:AD:4F:DD:5F:46:3A:1B:69:AA
-digicertglobalrootca [jdk], Dec 1, 2017, trustedCertEntry,
-Certificate fingerprint (SHA1): A8:98:5D:3A:65:E5:E5:C4:B2:D7:D6:6D:40:C6:DD:2F:B1:9C:54:36
+ttelesecglobalrootclass2ca [jdk], Jul 13, 2018, trustedCertEntry,
+Certificate fingerprint (SHA1): 59:0D:2D:7D:88:4F:40:2E:61:7E:A5:62:32:17:65:CF:17:D8:94:E9
+digicertglobalrootca [jdk], Dec 1, 2017, trustedCertEntry,
+Certificate fingerprint (SHA1): A8:98:5D:3A:65:E5:E5:C4:B2:D7:D6:6D:40:C6:DD:2F:B1:9C:54:36

tzdb.dat

tzdata2018e から変換したファイルが配置されていました。

$ ls -l /usr/lib/jvm/jdk8u192-b12/jre/lib/tzdb.dat
-rw-rw-r-- 1 root root 105882 Nov  1 04:41 /usr/lib/jvm/jdk8u192-b12/jre/lib/tzdb.dat

$ od -Ax -tx1z /usr/lib/jvm/jdk8u192-b12/jre/lib/tzdb.dat | head
000000 01 00 04 54 5a 44 42 00 01 00 05 32 30 31 38 65  >...TZDB....2018e<
000010 02 57 00 0e 41 66 72 69 63 61 2f 41 62 69 64 6a  >.W..Africa/Abidj<
000020 61 6e 00 0c 41 66 72 69 63 61 2f 41 63 63 72 61  >an..Africa/Accra<
000030 00 12 41 66 72 69 63 61 2f 41 64 64 69 73 5f 41  >..Africa/Addis_A<
000040 62 61 62 61 00 0e 41 66 72 69 63 61 2f 41 6c 67  >baba..Africa/Alg<
000050 69 65 72 73 00 0d 41 66 72 69 63 61 2f 41 73 6d  >iers..Africa/Asm<
000060 61 72 61 00 0d 41 66 72 69 63 61 2f 41 73 6d 65  >ara..Africa/Asme<
000070 72 61 00 0d 41 66 72 69 63 61 2f 42 61 6d 61 6b  >ra..Africa/Bamak<
000080 6f 00 0d 41 66 72 69 63 61 2f 42 61 6e 67 75 69  >o..Africa/Bangui<
000090 00 0d 41 66 72 69 63 61 2f 42 61 6e 6a 75 6c 00  >..Africa/Banjul.<

OpenJDK 11(AdoptOpenJDK)

確認した環境

amazonlinux:2.0.20181010 (d656eea421ba)

インストール方法

$ curl -L https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.1%2B13/OpenJDK11U-jdk_x64_linux_hotspot_11.0.1_13.tar.gz |
tar xzf - -C /usr/lib/jvm/

配置

配布形式が tar.gz のため、インストール先は任意。 当然 alternatives にも未対応。

$ ls -ld /usr/lib/jvm/jdk-11.0.1+13
drwxrwxr-x 10 root root 4096 Nov 15 19:42 /usr/lib/jvm/jdk-11.0.1+13

バージョン情報

特徴的なのは AdoptOpenJDK という文字列ですね。

$ /usr/lib/jvm/jdk-11.0.1+13/bin/java -version
openjdk version "11.0.1" 2018-10-16
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.1+13)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.1+13, mixed mode)

cacerts

cacerts に登録されている CA ルート証明書の総数は 93 でした。

Oracle OpenJDK のファイルと完全に一致しています (diff で確認)。

$ ls -l /usr/java/jdk-11.0.1/lib/security/cacerts
-rw-r--r-- 1 root root 102883 Oct  6 21:30 /usr/java/jdk-11.0.1/lib/security/cacerts

$ /usr/lib/jvm/jdk-11.0.1+13/bin/keytool -list -cacerts -storepass changeit | head -n 4
Keystore type: JKS
Keystore provider: SUN

Your keystore contains 93 entries

$ diff /usr/lib/jvm/jdk-11.0.1/lib/security/cacerts /usr/lib/jvm/jdk-11.0.1+13/lib/security/cacerts

tzdb.dat

tzdata2018e から変換したファイルが配置されていました。

Oracle OpenJDK のファイルとは一致しませんが、内容は変わらないと考えたい (diff で確認)。

$ ls -l /usr/lib/jvm/jdk-11.0.1+13/lib/tzdb.dat
-rw-rw-r-- 1 root root 105882 Nov 15 19:42 /usr/lib/jvm/jdk-11.0.1+13/lib/tzdb.dat

$ od -Ax -t x1z /usr/lib/jvm/jdk-11.0.1+13/lib/tzdb.dat | head
000000 01 00 04 54 5a 44 42 00 01 00 05 32 30 31 38 65  >...TZDB....2018e<
000010 02 57 00 0e 41 66 72 69 63 61 2f 41 62 69 64 6a  >.W..Africa/Abidj<
000020 61 6e 00 0c 41 66 72 69 63 61 2f 41 63 63 72 61  >an..Africa/Accra<
000030 00 12 41 66 72 69 63 61 2f 41 64 64 69 73 5f 41  >..Africa/Addis_A<
000040 62 61 62 61 00 0e 41 66 72 69 63 61 2f 41 6c 67  >baba..Africa/Alg<
000050 69 65 72 73 00 0d 41 66 72 69 63 61 2f 41 73 6d  >iers..Africa/Asm<
000060 61 72 61 00 0d 41 66 72 69 63 61 2f 41 73 6d 65  >ara..Africa/Asme<
000070 72 61 00 0d 41 66 72 69 63 61 2f 42 61 6d 61 6b  >ra..Africa/Bamak<
000080 6f 00 0d 41 66 72 69 63 61 2f 42 61 6e 67 75 69  >o..Africa/Bangui<
000090 00 0d 41 66 72 69 63 61 2f 42 61 6e 6a 75 6c 00  >..Africa/Banjul.<

$ diff /usr/lib/jvm/jdk-11.0.1/lib/tzdb.dat /usr/lib/jvm/jdk-11.0.1+13/lib/tzdb.dat
Binary files /usr/lib/jvm/jdk-11.0.1/lib/tzdb.dat and /usr/lib/jvm/jdk-11.0.1+13/lib/tzdb.dat differ

OpenJDK 8 (Redhat)

確認した環境

$ cat /etc/os-release
NAME="Red Hat Enterprise Linux Server"
VERSION="7.5 (Maipo)"
ID="rhel"
ID_LIKE="fedora"
VARIANT="Server"
VARIANT_ID="server"
VERSION_ID="7.5"
PRETTY_NAME="Red Hat Enterprise Linux Server 7.5 (Maipo)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:redhat:enterprise_linux:7.5:GA:server"
HOME_URL="https://www.redhat.com/"
BUG_REPORT_URL="https://bugzilla.redhat.com/"

REDHAT_BUGZILLA_PRODUCT="Red Hat Enterprise Linux 7"
REDHAT_BUGZILLA_PRODUCT_VERSION=7.5
REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux"
REDHAT_SUPPORT_PRODUCT_VERSION="7.5"

インストール方法

$ yum install -y java-1.8.0-openjdk-headless

配置

インストール先は /usr/lib/jvm の下でした。 alternatives にも対応しているようです。

$ ls -ld /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64
drwxr-xr-x. 3 root root 17 Nov 24 03:38 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64

$ alternatives --config java

There is 1 program that provides 'java'.

  Selection    Command
-----------------------------------------------
*+ 1           java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/jre/bin/java)

Enter to keep the current selection[+], or type selection number: ^C

バージョン情報

特徴的なところが何もありません。

$ /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/jre/bin/java -version
openjdk version "1.8.0_191"
OpenJDK Runtime Environment (build 1.8.0_191-b12)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)

cacerts

cacertsca-certificates パッケージ (Mozilla の CA root certificate bundle)に含まれるファイルを参照するようになっています。

依存パッケージとして管理されているため、更新の手間は軽減できそうです。

キーストアに登録されている CA ルート証明書の総数は 133 でした。 おそらく、Mozilla の CA ルート証明書から生成しているのではないかと思います (簡単に確認する方法が思いつかなかった…)。

$ ls -l /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/jre/lib/security/cacerts
lrwxrwxrwx. 1 root root 41 Nov 24 03:38 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/jre/lib/security/cacerts -> ../../../../../../../etc/pki/java/cacerts

$ ls -l /etc/pki/java/cacerts
lrwxrwxrwx. 1 root root 40 Nov 17 02:38 /etc/pki/java/cacerts -> /etc/pki/ca-trust/extracted/java/cacerts

$ ls -l /etc/pki/ca-trust/extracted/java/cacerts
-r--r--r--. 1 root root 160286 Nov 17 02:38 /etc/pki/ca-trust/extracted/java/cacerts

$ yum provides /etc/pki/ca-trust/extracted/java/cacerts
Failed to set locale, defaulting to C
Loaded plugins: product-id, search-disabled-repos, subscription-manager
Repo rhel-7-server-rpms forced skip_if_unavailable=True due to: /etc/pki/entitlement/2829246006869238773-key.pem
ca-certificates-2013.1.95-71.el7.noarch : The Mozilla CA root certificate bundle
Repo        : rhel-7-server-rpms
Matched from:
Filename    : /etc/pki/ca-trust/extracted/java/cacerts



ca-certificates-2014.1.98-70.0.el7_0.noarch : The Mozilla CA root certificate bundle
Repo        : rhel-7-server-rpms
Matched from:
Filename    : /etc/pki/ca-trust/extracted/java/cacerts



ca-certificates-2014.1.98-72.el7.noarch : The Mozilla CA root certificate bundle
Repo        : rhel-7-server-rpms
Matched from:
Filename    : /etc/pki/ca-trust/extracted/java/cacerts



ca-certificates-2015.2.4-70.0.el7_1.noarch : The Mozilla CA root certificate bundle
Repo        : rhel-7-server-rpms
Matched from:
Filename    : /etc/pki/ca-trust/extracted/java/cacerts



ca-certificates-2015.2.4-71.el7.noarch : The Mozilla CA root certificate bundle
Repo        : rhel-7-server-rpms
Matched from:
Filename    : /etc/pki/ca-trust/extracted/java/cacerts



ca-certificates-2015.2.6-70.1.el7_2.noarch : The Mozilla CA root certificate bundle
Repo        : rhel-7-server-rpms
Matched from:
Filename    : /etc/pki/ca-trust/extracted/java/cacerts



ca-certificates-2015.2.6-73.el7.noarch : The Mozilla CA root certificate bundle
Repo        : rhel-7-server-rpms
Matched from:
Filename    : /etc/pki/ca-trust/extracted/java/cacerts



ca-certificates-2017.2.11-70.1.el7_3.noarch : The Mozilla CA root certificate bundle
Repo        : rhel-7-server-rpms
Matched from:
Filename    : /etc/pki/ca-trust/extracted/java/cacerts



ca-certificates-2017.2.14-70.1.el7_3.noarch : The Mozilla CA root certificate bundle
Repo        : rhel-7-server-rpms
Matched from:
Filename    : /etc/pki/ca-trust/extracted/java/cacerts



ca-certificates-2017.2.14-71.el7.noarch : The Mozilla CA root certificate bundle
Repo        : rhel-7-server-rpms
Matched from:
Filename    : /etc/pki/ca-trust/extracted/java/cacerts



ca-certificates-2017.2.20-71.el7.noarch : The Mozilla CA root certificate bundle
Repo        : rhel-7-server-rpms
Matched from:
Filename    : /etc/pki/ca-trust/extracted/java/cacerts



ca-certificates-2018.2.22-70.0.el7_5.noarch : The Mozilla CA root certificate bundle
Repo        : rhel-7-server-rpms
Matched from:
Filename    : /etc/pki/ca-trust/extracted/java/cacerts



ca-certificates-2017.2.20-71.el7.noarch : The Mozilla CA root certificate bundle
Repo        : @anaconda/7.5
Matched from:
Filename    : /etc/pki/ca-trust/extracted/java/cacerts

$ yum deplist java-1.8.0-openjdk-headless | grep ca-certificates
Failed to set locale, defaulting to C
  dependency: ca-certificates
   provider: ca-certificates.noarch 2018.2.22-70.0.el7_5
  dependency: ca-certificates
   provider: ca-certificates.noarch 2018.2.22-70.0.el7_5

$ usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/jre/bin/keytool -list -keystore /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/jre/lib/security/cacerts -storepass changeit | head -n 4
Keystore type: jks
Keystore provider: SUN

Your keystore contains 133 entries

$ grep -c "BEGIN CERTIFICATE" /etc/pki/tls/cert.pem
133

tzdb.dat

tzdb.dattzdata-java パッケージに含まれるファイルを参照するようになっています。

依存パッケージとして管理されているため、更新の手間は軽減できそうです。

2018/11/24 時点では tzdata2018g から変換したファイルが配置されていました。

$ ls -l /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/jre/lib/tzdb.dat
lrwxrwxrwx. 1 root root 30 Nov 24 03:38 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/jre/lib/tzdb.dat -> /usr/share/javazi-1.8/tzdb.dat

$ ls -l /usr/share/javazi-1.8/tzdb.dat
-rw-r--r--. 1 root root 105734 Oct 29 14:27 /usr/share/javazi-1.8/tzdb.dat

$ yum provides /usr/share/javazi-1.8/tzdb.dat
Failed to set locale, defaulting to C
Loaded plugins: product-id, search-disabled-repos, subscription-manager
epel/x86_64/filelists                                                                                                                                          |  10 MB  00:00:01
rhel-7-server-rpms/7Server/x86_64/filelists_db                                                                                                                 |  37 MB  00:00:03
tzdata-java-2015e-1.el7.noarch : Timezone data for Java
Repo        : rhel-7-server-rpms
Matched from:
Filename    : /usr/share/javazi-1.8/tzdb.dat
(省略)

$ yum deplist java-1.8.0-openjdk-headless | grep tzdata-java
Failed to set locale, defaulting to C
  dependency: tzdata-java >= 2015d
   provider: tzdata-java.noarch 2018g-1.el7
  dependency: tzdata-java >= 2015d
   provider: tzdata-java.noarch 2018g-1.el7

$ od -Ax -t x1z /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/jre/lib/tzdb.dat | head
000000 01 00 04 54 5a 44 42 00 01 00 05 32 30 31 38 67  >...TZDB....2018g<
000010 02 57 00 0e 41 66 72 69 63 61 2f 41 62 69 64 6a  >.W..Africa/Abidj<
000020 61 6e 00 0c 41 66 72 69 63 61 2f 41 63 63 72 61  >an..Africa/Accra<
000030 00 12 41 66 72 69 63 61 2f 41 64 64 69 73 5f 41  >..Africa/Addis_A<
000040 62 61 62 61 00 0e 41 66 72 69 63 61 2f 41 6c 67  >baba..Africa/Alg<
000050 69 65 72 73 00 0d 41 66 72 69 63 61 2f 41 73 6d  >iers..Africa/Asm<
000060 61 72 61 00 0d 41 66 72 69 63 61 2f 41 73 6d 65  >ara..Africa/Asme<
000070 72 61 00 0d 41 66 72 69 63 61 2f 42 61 6d 61 6b  >ra..Africa/Bamak<
000080 6f 00 0d 41 66 72 69 63 61 2f 42 61 6e 67 75 69  >o..Africa/Bangui<
000090 00 0d 41 66 72 69 63 61 2f 42 61 6e 6a 75 6c 00  >..Africa/Banjul.<

OpenJDK 11 (Redhat)

確認した環境

$ cat /etc/os-release
NAME="Red Hat Enterprise Linux Server"
VERSION="7.5 (Maipo)"
ID="rhel"
ID_LIKE="fedora"
VARIANT="Server"
VARIANT_ID="server"
VERSION_ID="7.5"
PRETTY_NAME="Red Hat Enterprise Linux Server 7.5 (Maipo)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:redhat:enterprise_linux:7.5:GA:server"
HOME_URL="https://www.redhat.com/"
BUG_REPORT_URL="https://bugzilla.redhat.com/"

REDHAT_BUGZILLA_PRODUCT="Red Hat Enterprise Linux 7"
REDHAT_BUGZILLA_PRODUCT_VERSION=7.5
REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux"
REDHAT_SUPPORT_PRODUCT_VERSION="7.5"

インストール方法

$ yum install -y java-11-openjdk-headless

配置

インストール先は /usr/java の下でした。 alternatives にも対応しているようです。

$ ls -ld /usr/lib/jvm/java-11-openjdk-11.0.1.13-3.el7_6.x86_64
drwxr-xr-x. 6 root root 68 Nov 24 03:58 /usr/lib/jvm/java-11-openjdk-11.0.1.13-3.el7_6.x86_64

$ alternatives --config java

There are 2 programs which provide 'java'.

  Selection    Command
-----------------------------------------------
*+ 1           java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/jre/bin/java)
   2           java-11-openjdk.x86_64 (/usr/lib/jvm/java-11-openjdk-11.0.1.13-3.el7_6.x86_64/bin/java)

Enter to keep the current selection[+], or type selection number: ^C

バージョン情報

Oracle OpenJDK と完全に一致しています。

/usr/lib/jvm/java-11-openjdk-11.0.1.13-3.el7_6.x86_64/bin/java -version
openjdk version "11.0.1" 2018-10-16 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.1+13-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode, sharing)

cacerts

cacertsca-certificates パッケージ (Mozilla の CA root certificate bundle)に含まれるファイルを参照するようになっています。

依存パッケージとして管理されているため、更新の手間は軽減できそうです。

キーストアに登録されている CA ルート証明書の総数は 133 でした。 おそらく、Mozilla の CA ルート証明書から生成しているのではないかと思います (簡単に確認する方法が思いつかなかった…)。

$ ls -l /usr/lib/jvm/java-11-openjdk-11.0.1.13-3.el7_6.x86_64/lib/security/cacerts
lrwxrwxrwx. 1 root root 21 Nov 24 03:58 /usr/lib/jvm/java-11-openjdk-11.0.1.13-3.el7_6.x86_64/lib/security/cacerts -> /etc/pki/java/cacerts

$ yum deplist java-11-openjdk-headless | grep ca-certificates
Failed to set locale, defaulting to C
  dependency: ca-certificates
   provider: ca-certificates.noarch 2018.2.22-70.0.el7_5
  dependency: ca-certificates
   provider: ca-certificates.noarch 2018.2.22-70.0.el7_5

$ /usr/lib/jvm/java-11-openjdk-11.0.1.13-3.el7_6.x86_64/bin/keytool -list -cacerts -storepass changeit | head -n 4
Keystore type: JKS
Keystore provider: SUN

Your keystore contains 133 entries

tzdb.dat

tzdb.dattzdata-java パッケージに含まれるファイルを参照するようになっています。

依存パッケージとして管理されているため、更新の手間は軽減できそうです。

2018/11/24 時点では tzdata2018g から変換したファイルが配置されていました。

$ ls -l /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/jre/lib/tzdb.dat
lrwxrwxrwx. 1 root root 30 Nov 24 03:38 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/jre/lib/tzdb.dat -> /usr/share/javazi-1.8/tzdb.dat

$ yum deplist java-11-openjdk-headless | grep tzdata-java | head -n 10
Failed to set locale, defaulting to C
  dependency: tzdata-java >= 2015d
   provider: tzdata-java.noarch 2018g-1.el7
  dependency: tzdata-java >= 2015d
   provider: tzdata-java.noarch 2018g-1.el7

$ od -Ax -t x1z /usr/lib/jvm/java-11-openjdk-11.0.1.13-3.el7_6.x86_64/lib/tzdb.dat  | head
000000 01 00 04 54 5a 44 42 00 01 00 05 32 30 31 38 67  >...TZDB....2018g<
000010 02 57 00 0e 41 66 72 69 63 61 2f 41 62 69 64 6a  >.W..Africa/Abidj<
000020 61 6e 00 0c 41 66 72 69 63 61 2f 41 63 63 72 61  >an..Africa/Accra<
000030 00 12 41 66 72 69 63 61 2f 41 64 64 69 73 5f 41  >..Africa/Addis_A<
000040 62 61 62 61 00 0e 41 66 72 69 63 61 2f 41 6c 67  >baba..Africa/Alg<
000050 69 65 72 73 00 0d 41 66 72 69 63 61 2f 41 73 6d  >iers..Africa/Asm<
000060 61 72 61 00 0d 41 66 72 69 63 61 2f 41 73 6d 65  >ara..Africa/Asme<
000070 72 61 00 0d 41 66 72 69 63 61 2f 42 61 6d 61 6b  >ra..Africa/Bamak<
000080 6f 00 0d 41 66 72 69 63 61 2f 42 61 6e 67 75 69  >o..Africa/Bangui<
000090 00 0d 41 66 72 69 63 61 2f 42 61 6e 6a 75 6c 00  >..Africa/Banjul.<

builderscon tokyo 2018 の参加ログ

初めて参加してきた。
builderscon.io

よかったこと
もっと良くするためにできること
  • たぶんスピーカーに挑戦する(CfPを出す)のが一番なんだと思います
    • 「向こう側」はいつも楽しそう
    • 自分で乗り込んでいくのが一番早い
    • 採択されなかったらブログの記事が増えるだけなのでいいことなのでは

XP祭り2017で参加した「振り返りを振り返る」ワークショップのメモ

XP祭り2017:さまざまな振り返りを知り,振り返りを振り返る (栗田 太郎さん)

チームまたは個人の仕事において,振り返り (ふりかえり),リフレクション,レトロスペクティブなどと言われる活動には,
さまざまなフレームワーク (“KPT”,”YWT”,”ORID” など,また,KPT だけでも多くのバリエーション) と課題があります.
本ワークショップでは,参加者の皆さんの日頃の目的と工夫と課題の共有,いろいろなフレームワークの試行と比較,
振り返りにまつわる対話,を通して,日常の振り返りを多様な視点から振り返り,振り返りの意義と意味について考えていきます.

いろいろと話題の講演がある中、裏番組的なワークショップに参加していました。
懇親会でもいろいろお話を聞くことができてとてもためになりました。
関係ないけど、レトロスペクティブやイントロスペクティブの スペクトは「よく見る」という意味らしい

やったこと

  • ふりかえりのフレームワークの講義
  • マシュマロチャレンジ を実践
  • マシュマロチャレンジについて ORID で「ふりかえり」
  • 「各自がふりかえりで課題だと思っていること」について「KPT でふりかえり」
  • ワークショップ全体について「YWT でふりかえり」

最初に説明があったわけではないので、すごくメタい構造だった。

ふりかえりの由来

  • 「ふりかえりとは基本的に内省のことである」
    • プラトンまで遡るので人によっては気味が悪くなる可能性がある
  • 「内省とはリフレクション(反射)である」
  • 「過ぎ去ったことに光を当てるようにふりかえり、こころに描かれたことを呼び戻したり表出したりすること、すなわち注意深く考えることや黙想すること」
    • この考え方は雰囲気があって素敵だ
    • 過去は闇であり、闇に光を当てその有り様を観測するから反射なのだ、と

ふりかえりのフレームワーク

  • メジャーなやつ KPT
    • たくさん亜種がある KPT + Stop、KTP + Action、YWT + KPTKPT + Thanks、KPTそれぞれに5W1H
    • KPT 採集
    • 改善サイクルを回しやすい
  • YWT
    • 試行錯誤的な学習に向いている
  • 知らなかったやつ ORID
    • その場にいる人間の文脈が多岐に渡る場合などに有効かもしれない
    • Objective: 事実やデータ
    • Reflective: その時の気持ち(ここが発見だった)
    • Interpretative: 解釈や意味
    • Decision: これから、あるいは次にどうするか

チームでふりかえりをするとき、書く時間と共有する時間を分ける理由

  • ちゃんと他の人の話を聞くため
    • 他の人が話しているときは、自分のことを考えたり書いたりしないで、ちゃんと聞くため
  • 共感とは、「自分ならこうするとか」そういうことを考えずにただただ相手の身になって聞くこと
  • 「話している人が認識している事実や感じた想い」から学習する?
    • この辺よくわからない。ワークショップ中でも説明はされてなかった

看護師の人たちは日常的にふりかえりを活用している

  • 看護記録とか
  • リフレクションの研究自体が看護教育に端を発するものだとか
  • (後で聞いた話)
    • ワークショップの講師の人は、病院の看護師さんを相手にリフレクションのワークショップを開催しているとのこと

考察

所属する組織に不満があるわけではないので特に声を上げるようなことはしていないけど、ときどき考えさせられることがあるので気が向いたら書くようにしよう。

  • コピペはよくない(ただし場合による)
    • 脊髄反射的にコピペしたものをそのまま動かすとか常識を疑わざるを得ません
  • 何の思想も目的も意思も意図も希望も展望も設計もなくガラクタを寄せ集めても粗大ゴミにしかならない
    • とりあえず集まったところで何も生まれません

思ったよりも忘れている。
他にもなんかあったような気がするんだけど、大して気に留めなかったんだろうな。

n回目のDevsumiで見聞きしたことのメモ

Developers Summit 2017

何回目か忘れてるけど一般参加してきた。
ちょっとした発見があったりしたので、自分用に記録しておく。

16-D-2 Elastic Stack による異常検知

Elastic Stack の紹介。
基本的に収集したログをいかに扱うか、という問題になるのだけど、部分的には AWS CloudWatch よりも柔軟性がありそうなところが気になった。

時系列データのトレンドを自動的に学習して異常を検出するPrelertというプラグインはよさそうだった。
普通のしきい値判定と組み合わせることができればほとんどのケースがカバーできそう。

16-A-3 ヤフーの開発を10倍速くした社内 PaaS 構築の今とこれから

開発ツールに起因する問題を解消するため,Cloud Foundry を導入した話。
Spring Blogでは Cloud Foundry の話がしょっちゅう登場するのできっと世界的には主流なんだと思う。
日本の大手SIerのプラットフォームで使われているのは知らなかった…そうなんだ。

17-E-1 自動化はどこに向かうのか 〜まだ開発・運用の自動化で消耗しているの?〜

一度前佛さんにお会いしたかったので参加。
slideshareのプレゼン資料が本当にすごい。エンターテイメント。
ツール推しな人だと思ってたら全然そんなことはなく、とてもバランス感覚のある話だった。

17-D-6 『もしもスクラムマスターがテストエンジニアだったら』(もしテス)

社内ツールをインクリメンタルなプロセスで開発してみたという話。
もともとトップダウン開発プロセスに馴染みがあり、かつ、テスト設計が専門ということで、ユースケースの書き方を工夫してみたとのこと。

成果物の評価を公開するということ


わからないということをわかるや、全く駄目な成果物と人格否定についてを読んだ。


人格否定されている感じになるのは、成果物じゃなくてそれを生み出すプロセスを否定されている(と受け取った or 受け取られるようなやりとりがあった)ときだと思う。


自分でもよく、部分的にダメなところがあっただけで、全体に対する評価もダメだと判断してしまうことがある。
つまり、部分を生み出す手順がダメなのだから、それに従って生み出されている他の部分もどうせダメだろうという思い込み。
これでは受け手から人格否定されてると思われても仕方ない。悪い例。


成果物の評価を公開ときは、純粋に成果物だけの評価になるようにしないと、いろんな人の心がざわざわしてしまうので気をつけよう。
注目を浴びたいだけならともかく、成果物をより良くしたいという思いがあるはずなのに、自分の考えを押し付けるだけではただの暴力だ。

ビヨンド ソフトウェアアーキテクチャを翻訳しました

はじめに


ビヨンド ソフトウェア アーキテクチャ (Object Oriented Selection Classics)

ビヨンド ソフトウェア アーキテクチャ (Object Oriented Selection Classics)


共著者の id:ditigalsoul。言葉使いや翻訳の技術や作法について学ばせていただきました。また一緒に何かやりましょう。


陳列状況


池袋ジュンク堂で先行販売(!)とかやってて見てきました。ちゃんと陳列されてて素敵。


原著について


内容
ターキテクト(テクノロジーを担当するアーキテクト)とマーケテクト(マーケティングを担当するアーキテクト)が協力して課題を取りこぼすことがないように進めていきましょう、どちらが欠けても成功することはできませんよ、というものでした。
ブランディングや販売管理(のためのSKU)、インストールプロセスなどが、どれだけアーキテクチャに影響するものなのか、改めて考えさせられました。

著者
当時はコンサルティングや講師業をしていたようですが、今はチーム内のコラボレーションを高めるためのサービスやツールを提供する会社(Contentneo)を運営している模様。
Slideshareにもいろいろとプレゼン資料が公開されています。
本書の付録Bで紹介しているプロダクトマネジメントパターンを発展させているようです。

ツール

翻訳をするのに欠かせなかったツールです。
今回もありがとうございました。

統計データ

2014/05/30くらいに開始して、2015/09/30で完了しました。
仕事の都合でしばらく中断させてもらっていた時期がありますが、1年半か…

総コミット数は1832で、私のコミット数は1025でした。

規模はこんな感じです。Re:VIEW のツールで数えることができます。
約1MB、12347行、結構な量になりました。

$ review-vol  | tail -n 2
=============================
    1064KB 395381C 12347L 1064P
感想

翻訳をやるだけの英語力があるのかどうか不安に思っていた時期もありました。
ですが、訳す、読む、直すのサイクルを何度も回して行く中で、そんなことを気にしているのはもったいないと思うようになりました。
他にも、英文を読む量を増やしたり、実際に訳してみたり、とにかく反復し続けていたらなんとかなった感じです。

特に身についたと思えるのが、知らない言い回しが出てきた時の対応です。
そのまま訳するとすごくおかしな日本語になってしまいます。
訳す前にまずその言葉自体を調べて、そこから日本語としてどういう形式になるといいのか考えられるようになりました。

翻訳したからといって、本の内容の全てを自分のものにできるはずはありません。
自分には不足している領域の内容を扱っているのだからなおさらです。
今後とも精進していきたいと思います。

謝罪

id:digitalsoul とは同じ職場、同じチームとして過ごしてきました。
彼と一緒に過ごした時間がこの1年半の大部分を占めているのではないか…

仕事の考え方の違いにより、言い争いになりかけたこともありました。
挑発めいた言葉を言ってしまったこともありました。
口頭では自然解決した風を装っていますが、実はちゃんと謝ってません。今度会ったときに誤ります。