SlideShare uma empresa Scribd logo
1 de 81
© 2023 NTT DATA Corporation
OpenJDKのコミッタってどんなことしたらなったの?
解決してきた技術課題の事例から見えてくる必要な知識と技術
2023年6月4日 JJUG CCC 2023 Spring
株式会社NTTデータ 技術革新統括本部 技術開発本部
阪田 浩一
© 2023 NTT DATA Corporation 2
発表者
• 株式会社NTTデータ 所属
• OpenJDKコミッタ
• Javaチャンピオン
• Oracle ACE Pro (Java分野)
Koichi Sakata
阪田 浩一
jyukutyo
© 2023 NTT DATA Corporation 3
最初の疑問
Javaは 誰が
作っているの?
© 2023 NTT DATA Corporation 4
前提として
多くのJDKがベースとする
OpenJDKを取り上げると…
© 2023 NTT DATA Corporation 5
ちょっと待って
OpenJDKって
何なの?
© 2023 NTT DATA Corporation 6
OpenJDK[1]とは何か
 OpenJDKはオープンソースのJava SE 仕様の実装と
その関連製品を開発する場
 そのソースコードはGitHubにある[2]
[1] https://openjdk.org/
[2] https://github.com/openjdk/
© 2023 NTT DATA Corporation 7
OpenJDK[1]とは何か
 OpenJDKはオープンソースのJava SE 仕様の実装と
その関連製品を開発する場
 そのソースコードはGitHubにある[2]
 バイナリは提供しない
• 自分でビルドする もしくは他の誰かがビルドしたバイナリを利用する
• 多くのJDKはOpenJDKをベースとして作成したものである
[1] https://openjdk.org/
[2] https://github.com/openjdk/
2006 2023
Javaオープンソース化発表
Java 6リリース
Java 20
リリース
© 2023 NTT DATA Corporation 8
改めて最初の疑問
Javaは 誰が
作っているの?
© 2023 NTT DATA Corporation 9
JDK 11から最新20までの課題解決数の割合(組織別)
https://blogs.oracle.com/java/post/th
e-arrival-of-java-20
© 2023 NTT DATA Corporation 10
Java(OpenJDK)は誰が作っているのか
 さまざまな企業と個人
• 企業が開発に参画している
• 個人として参画している人も多くいる
© 2023 NTT DATA Corporation 11
次の疑問
OpenJDK開発って
何をするの?
© 2023 NTT DATA Corporation 12
OpenJDKの開発
 一般的なOSSの開発と内容は同じ
• 新機能追加
• 機能拡張 改善
• バグ修正
 提案や意見交換はメーリングリスト[1]
 開発はGitHub上[2]
[1] https://mail.openjdk.org/mailman/listinfo
[2] https://github.com/openjdk/jdk
© 2023 NTT DATA Corporation 13
OpenJDKの内容物
 Java APIの実装
 Javaコンパイラ
 Java仮想マシン(JVM)
• ガベージコレクタ JITコンパイラなど
 各種ツール
• JDK Flight Recorder jcmd jhsdbなど
[1] https://mail.openjdk.org/mailman/listinfo
CAFE
BABE
0000
クラスファイル
クラスローダー サブシステム
実行時データエリア
ヒープ … …
実行エンジン
インタ
プリタ
JIT
コンパイラ
ガベージ
コレクタ
© 2023 NTT DATA Corporation 14
実装プログラミング言語
大まかに述べると
 JVM : C++
 JVM以外 : Java
© 2023 NTT DATA Corporation 15
突然の提案
あなたもJava、
今すぐ開発しませ
ん?
© 2023 NTT DATA Corporation 16
それじゃあ
私にも Javaの開発が
できるの?
© 2023 NTT DATA Corporation 17
誰でもOpenJDK(Java)の開発に参加できる
 色々なレベルの開発者がいる
• すごい開発者だけ ではない
 必要な能力はほんの少し
• やり抜く力
• 継続する力
 以下の能力は想像よりも重要ではない
• 技術力
• 英語力
© 2023 NTT DATA Corporation 18
開発に貢献する動機は何だっていい
 技術力を高めたい
 Javaに恩返ししたい
 ワールドワイドで活動したい
 JVMになりたい
 ...
© 2023 NTT DATA Corporation 19
貢献方法はいろいろある
1. プルリクエストを出す
2. リリース前の機能を試す
3. アイデアを提案する
4. 議論に参加する
5. イベントで登壇する
6. ブログに投稿する
7. ...
© 2023 NTT DATA Corporation 20
貢献方法はいろいろある
1. プルリクエストを出す
2. リリース前の機能を試す
3. アイデアを提案する
4. 議論に参加する
5. イベントで登壇する
6. ブログに投稿する
7. ...
今日はこれ!
© 2023 NTT DATA Corporation 21
ところで
JVMとかJavaのAPIのバグって
よく遭遇しますか?
© 2023 NTT DATA Corporation 22
普通に使っていてもそんなにバグに遭遇しない
 Java APIのバグ JVMのバグ
• まったく遭遇したことがない人も多いと思う
© 2023 NTT DATA Corporation 23
疑問
プルリクエストを出す題材は
めったに見つけれらない?
© 2023 NTT DATA Corporation 24
私もそうでした
 当初の考え方: バグを見つけたら修正に挑戦しよう
• 機会が運の問題になってしまう
 発想の転換: 自分で見つけて直す
• どうすれば修正対象を見つけられるか?
© 2023 NTT DATA Corporation 25
じゃあ
今までと違う使い方を
してみよう!
© 2023 NTT DATA Corporation 26
今までと違う使い方をしてみる
 異常系でするようなやり方で使ってみる
 使ったことがないもの(API ツール)を使ってみる
 異なる条件でビルドして使ってみる
© 2023 NTT DATA Corporation 27
異常系でするようなやり方で使ってみる
 私が修正した例: UL(Unified Logging)
-Xlog[:[selections][:[output][:[decorators][:output-options]]]]
© 2023 NTT DATA Corporation 28
異常系でするようなやり方で使ってみる
 私が修正した例: UL(Unified Logging)
-Xlog[:[selections][:[output][:[decorators][:output-options]]]]
// Java 15以前
$ java -Xlog::::::foo:::::::
// とくに警告もなく実行できる
5つ目以降のコロンは無効なので
警告を出した方がいいのでは
// Java 16以降
$ java -Xlog::::::foo:::::::
[0.003s][warning][logging] Ignoring excess -Xlog options:
":foo:::::::"
// 実行はする
© 2023 NTT DATA Corporation 29
使ったことがないものを使ってみる
 ツールやAPI
 私が修正した例: jcmd
© 2023 NTT DATA Corporation 30
使ったことがないものを使ってみる
 ツールやAPI
 私が修正した例: jcmd
ドメイン 内容
VM JVMの実行情報取得 ログ設定など
Compiler JITコンパイラ関連
GC ガベージコレクション関連
Thread 現状スレッドダンプのみ
JVMTI JVM Tool Interface関連 エージェントのロードなど
JFR フライトレコード関連
ManagementAgent JMXエージェント関連
使い方: jcmd <pid> command ドメイン.操作
jcmdはとても多機能
© 2023 NTT DATA Corporation 31
あれ?この機能ちゃんと動いてない
 Java 16以前
 実行中にjcmdでULログの設定変更をする
 変更が成功したとメッセージが出るが
実際には変更されていない
© 2023 NTT DATA Corporation 32
Java 16でのjcmdにおけるULログ設定バグ
© 2023 NTT DATA Corporation 33
あれ?この機能ちゃんと動いてない
 Java 16以前
 実行中にjcmdでULログの設定変更をする
 変更が成功したとメッセージが出るが
実際には変更されていない
 そもそもこれは変更できない設定項目
なので成功ではなく 変更しないというメッセージを出すべき
© 2023 NTT DATA Corporation 34
修正してみた
© 2023 NTT DATA Corporation 35
Java 17でのjcmdにおけるULログ設定
© 2023 NTT DATA Corporation 36
異なる条件でビルドして使ってみる
 OSやライブラリなどを変えてビルドする
 バージョンを最新などに変えてビルドする
© 2023 NTT DATA Corporation 37
ビルド?
OpenJDKって
どうやってビルドするの?
© 2023 NTT DATA Corporation 38
デモ: OpenJDKのビルド
© 2023 NTT DATA Corporation 39
OpenJDKのビルド[1]
 LinuxやmacOSは簡単
 Windowsは少し手間がかかるかも
• (数年前に一度やっただけでうろ覚え)
• WSLでもできる
 ネット上に多く関連投稿がある
• 日本語でも
[1] https://github.com/openjdk/jdk/blob/master/doc/building.md
© 2023 NTT DATA Corporation 40
異なる条件でビルドして使ってみる
 OSやライブラリなどを変えてビルドする
 バージョンを最新などに変えてビルドする
© 2023 NTT DATA Corporation 41
バージョンを最新などに変えてビルドする
 私が修正した例
• GCC 10がリリースされたとき GCC 10でビルドしてみた
© 2023 NTT DATA Corporation 42
バージョンを最新などに変えてビルドする
 私が修正した例
• GCC 10がリリースされたとき GCC 10でビルドしてみた
In file included from /home/jyukutyo/code/jdk/src/hotspot/share/classfile/systemDictionary.hpp:31,
from /home/jyukutyo/code/jdk/src/hotspot/share/classfile/javaClasses.hpp:28,
from /home/jyukutyo/code/jdk/src/hotspot/share/precompiled/precompiled.hpp:35:
In member function 'void Symbol::byte_at_put(int, u1)',
inlined from 'Symbol::Symbol(const u1*, int, int)' at
/home/jyukutyo/code/jdk/src/hotspot/share/oops/symbol.cpp:55:16:
/home/jyukutyo/code/jdk/src/hotspot/share/oops/symbol.hpp:130:18: error: writing 1 byte into a region of size 0
[-Werror=stringop-overflow=]
130 | _body[index] = value;
| ~~~~~~~~~~~~~^~~~~~~
(omitted)
以前は出ていなかった
警告が新たに3つ出た
© 2023 NTT DATA Corporation 43
警告の内容を確認する
 抜粋
/home/jyukutyo/code/jdk/src/hotspot/share/oops/symbol.hpp:130:18: error:
writing 1 byte into a region of size 0 [-Werror=stringop-overflow=]
130 | _body[index] = value;
| ~~~~~~~~~~~~~^~~~~~~
/home/jyukutyo/code/jdk/src/java.base/share/native/libfdlibm/k_standard.c:743:19:
error: 'exc.retval' may be used uninitialized in this function [-Werror=maybe-
uninitialized]
743 | return exc.retval;
| ~~~^~~~~~~
/home/jyukutyo/code/jdk/src/java.base/unix/native/libnet/NetworkInterface.c:974:13:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:106:10: error:
'__builtin_strncpy' output may be truncated copying 15 bytes from a string of length 15
[-Werror=stringop-truncation]
106 | return __builtin___strncpy_chk (__dest, __src, __len, __bos (__dest));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
© 2023 NTT DATA Corporation 44
GCC 10での変更点
GCC 10 Release Series — Changes, New Features, and Fixes https://gcc.gnu.org/gcc-10/changes.html
© 2023 NTT DATA Corporation 45
どうしても自分で
題材を見つけられないとき
何か他の方法はある?
© 2023 NTT DATA Corporation 46
 JBS(JDK Bug System) [1]
バグトラッキングシステムを見てみる
[1] https://bugs.openjdk.java.net/projects/JDK/issues/
© 2023 NTT DATA Corporation 47
JBS
 各PRには対応するJBSのイシューがある
• というよりも JBSのイシューが先にあり それにPRを出すということ
 イシューのラベル starterやclean-up は初級者向け
• それらを題材にする
© 2023 NTT DATA Corporation 48
題材を見つけたとして
誰でも修正できる?
© 2023 NTT DATA Corporation 49
JavaからC++へ
 私の場合
• 社会人歴 ≒ Java Webアプリの運用開発だった
• JVMのコードが初C++だった
© 2023 NTT DATA Corporation 50
誰でも修正できる
 言語面はなんとかできる
• 他者が書いたコードを直すという意味では普段と同じ
 低レイヤに関する知識が要求されることもある
• OS CPU メモリ ネットワーク 場合によってはアセンブリ言語
• 調べればなんとかなることも多い
© 2023 NTT DATA Corporation 51
ところで
どういう風に
開発するの?
© 2023 NTT DATA Corporation 52
エディタ IDE
 お好みで 何でもよい
 私の場合
• IDEを使っていたこともあったが
今はそのマシンにあるプレーンなエディタを使うだけ
• 加えてfindとgrepでほとんどの場合いけてしまっている
© 2023 NTT DATA Corporation 53
デバッグツール
 printデバッグでもほとんどの場合いける
 GDB
 CLion
• JetBrainsのC++用有償IDE
© 2023 NTT DATA Corporation 54
テスト
 jtreg
• Javaコードの独自テスティングフレームワーク
• JDK用リグレッションテストハーネス
 Google Test(gtest)
• C++コード用のテスティングフレームワーク
© 2023 NTT DATA Corporation 55
デモ: jtregのテスト実行
© 2023 NTT DATA Corporation 56
これで開発は
できそうだ…!
© 2023 NTT DATA Corporation 57
ところで
プルリクエストは
英語で出すんですよね?
© 2023 NTT DATA Corporation 58
英語力
 PRにはそれほど必要ない感じ
• 高校1,2年の内容が思い出せれば十分そう
• DeepL Google翻訳などを活用する
 提案 議論では長文が要求される
• このときはがんばる
© 2023 NTT DATA Corporation 59
仕事でPRは書いているけれど…
そもそもPRに
どんなことを書いたらいいの?
© 2023 NTT DATA Corporation 60
動くようにする ≠ 大規模OSSでPRをマージまで持っていく
 PRはすんなりマージされない
• レビューコメントはいくつもつく
• やりぬく力がいる
© 2023 NTT DATA Corporation 61
動くようにする ≠ 大規模OSSでPRをマージまで持っていく
 PRはすんなりマージされない
• レビューコメントはいくつもつく
• やりぬく力がいる
 OpenJDKは巨大なプロダクトである
• 修正が想像もしなかった部分に影響すると指摘されることもある
• 症状 修正方法 テスト内容 を文化が異なる国にいる
初対面のエンジニアに詳細に説明しなければならない
 PRで 何度も修正したりより詳しい説明を求められる
ことはよくある
© 2023 NTT DATA Corporation 62
何をしたのか ではなく なぜそうしたのか
 すべてをさらけ出すことになる
• この点はWebアプリ運用開発のときより厳しさを感じる
 バグなら再現手順を確立する
• 手順は余分なものを削ぎ落とし 可能な限りシンプルな手順にする
© 2023 NTT DATA Corporation 63
PRマージのイメージ
(Omitted)
© 2023 NTT DATA Corporation 64
継続しよう
 PRを出せば出すほど Javaのことがよりわかる
• 同時にまだまだ知らないことがたくさんあることがわかる
© 2023 NTT DATA Corporation 65
継続しよう
 PRを出せば出すほど Javaのことがよりわかる
• 同時にまだまだ知らないことがたくさんあることがわかる
 何よりもまずコードを書いていこう
• 読むだけよりももっと楽しい
• そのためにも修正 改善の題材を探すことが重要
 やり抜くことを継続すると ふと気づいたとき
思ってもいなかった場所にたどり着いている
© 2023 NTT DATA Corporation 66
質問
どんなことをしたら
コミッタになるの?
© 2023 NTT DATA Corporation 67
OpenJDKにおけるコミッタの定義
 コミッタ認定基準はOSSごとに異なる
 OpenJDKの開発者ロール
• レビュワ + コミッタで世界に300人+
コミッタ
Author
コントリビュータ
バグ登録権限など
開発者権限を保持
OpenJDKコミュニティにおける開発者ロール
レビュワ
© 2023 NTT DATA Corporation 68
 コミッタ = 無条件にすごい ではない
• もちろんコミッタにはすごい人も多いけれど
 コミッタ = 修正を最後までやり抜き それを何度もやった人
• すごいことをやる必要はない
• 言い換えると どんな人にもなれるチャンスがある
コミッタってすごいの?
© 2023 NTT DATA Corporation 69
コミッタ認定の流れ
 基準クリア -> 推薦 -> 投票 -> 認定
• 基準: コードに対して意味のある修正を 8回以上実施する
• 推薦: コミッタ以上が候補者をメールで推薦する
• 投票: コミッタ以上がメールで賛成か反対の票を入れる
• 認定: 反対票がなければコミッタ認定
© 2023 NTT DATA Corporation 70
コミッタ認定の流れ
 基準クリア -> 推薦 -> 投票 -> 認定
• 基準: コードに対して意味のある修正を 8回以上実施する
• 推薦: コミッタ以上が候補者をメールで推薦する
• 投票: コミッタ以上がメールで賛成か反対の票を入れる
• 認定: 反対票がなければコミッタ認定
 私の場合
• PRが14回マージされていた
• 何度かレビューしてくれていた米オラクル社の人から
突然推薦するとメールが来た
• 投票を経て2月に認定
© 2023 NTT DATA Corporation 71
そうは言っても…
1人で全部進められるか
不安…
© 2023 NTT DATA Corporation 72
メンタになってもらう
 OpenJDK開発は多人数 ワールドワイド 英語使用 難解
• 独力でやり遂げられる人は多くないはず
- 私はやりたい思いがありつつ 長年始められなかった
© 2023 NTT DATA Corporation 73
メンタになってもらう
 OpenJDK開発は多人数 ワールドワイド 英語使用 難解
• 独力でやり遂げられる人は多くないはず
- 私はやりたい思いがありつつ 長年始められなかった
 コントリビュート経験者に相談する
• このCCCにコミッタ以上のロールを持つ人は何人も来ている
• 1度F2Fで話しておけばソーシャルメディアでも相談しやすい
© 2023 NTT DATA Corporation 74
(私に限らず)
気になったセッションの
発表者に話しかけてみましょう!
© 2023 NTT DATA Corporation 75
私の場合: JavaカンファレンスとTwitterでのやり取り
 後に師匠となる人のセッションを聞き 衝撃を受ける
• Javaのことなのにセッションの半分が理解できない
 以降 師匠のセッションがあればそのイベントに出向く
• 当時関西在住 東京まで出てくる
© 2023 NTT DATA Corporation 76
私の場合: JavaカンファレンスとTwitterでのやり取り
 後に師匠となる人のセッションを聞き 衝撃を受ける
• Javaのことなのにセッションの半分が理解できない
 以降 師匠のセッションがあればそのイベントに出向く
• 当時関西在住 東京まで出てくる
 海外カンファレンスで師匠と実際に話す
 OpenJDKについてブログ投稿やツイートをすると
Twitterで助言をもらえるように
 転職し 師匠と同僚になる
• メンタになってもらう
© 2023 NTT DATA Corporation 77
コントリビュートして コミッタになって よかったこと
 Javaの歴史に自分も痕跡を残せたうれしさがある
© 2023 NTT DATA Corporation 78
コントリビュートして コミッタになって よかったこと
 Javaの歴史に自分も痕跡を残せたうれしさがある
 コミッタ向けイベントに参加できる
• OpenJDK Committer's Workshop
 OpenJDK開発者と知り合えた
• 日本語話者の開発者とも
 新しい技術領域に踏み出せた
© 2023 NTT DATA Corporation 79
まとめ
© 2023 NTT DATA Corporation 80
見えてきた必要な知識と技術とは
 知識も技術もあとからついてくる
 やり抜く力と継続する力こそが大切
 言い換えればどんな人だって歩き続ければ
そこにたどり着ける!
• そこはきっと自分が思い描く場所
© 2023 NTT DATA Corporation 81
本資料に記載されている会社名、商品名、又はサービス名は、各社の登録商標又は商標です。

Mais conteúdo relacionado

Mais procurados

9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...NTT DATA Technology & Innovation
 
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...NTT DATA Technology & Innovation
 
Java EE から Quarkus による開発への移行について
Java EE から Quarkus による開発への移行についてJava EE から Quarkus による開発への移行について
Java EE から Quarkus による開発への移行についてShigeru Tatsuta
 
Unified JVM Logging
Unified JVM LoggingUnified JVM Logging
Unified JVM LoggingYuji Kubota
 
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...Shinji Takao
 
トランザクションをSerializableにする4つの方法
トランザクションをSerializableにする4つの方法トランザクションをSerializableにする4つの方法
トランザクションをSerializableにする4つの方法Kumazaki Hiroki
 
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
PostgreSQL初心者がパッチを提案してからコミットされるまで(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL初心者がパッチを提案してからコミットされるまで(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL初心者がパッチを提案してからコミットされるまで(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL初心者がパッチを提案してからコミットされるまで(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能BuildKitの概要と最近の機能
BuildKitの概要と最近の機能Kohei Tokunaga
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話Kumazaki Hiroki
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Akihiro Suda
 
分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれKumazaki Hiroki
 
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugJava ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugMasatoshi Tada
 
Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)
Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)
Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)NTT DATA Technology & Innovation
 
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 

Mais procurados (20)

9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
 
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
pg_hint_planを知る(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
 
Java EE から Quarkus による開発への移行について
Java EE から Quarkus による開発への移行についてJava EE から Quarkus による開発への移行について
Java EE から Quarkus による開発への移行について
 
Unified JVM Logging
Unified JVM LoggingUnified JVM Logging
Unified JVM Logging
 
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
 
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
 
トランザクションをSerializableにする4つの方法
トランザクションをSerializableにする4つの方法トランザクションをSerializableにする4つの方法
トランザクションをSerializableにする4つの方法
 
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL 13でのpg_stat_statementsの改善について(第12回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQL初心者がパッチを提案してからコミットされるまで(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL初心者がパッチを提案してからコミットされるまで(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL初心者がパッチを提案してからコミットされるまで(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL初心者がパッチを提案してからコミットされるまで(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
Helidon 概要
Helidon 概要Helidon 概要
Helidon 概要
 
分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれ
 
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugJava ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsug
 
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
 
Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)
Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)
Kubernetes環境に対する性能試験(Kubernetes Novice Tokyo #2 発表資料)
 
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
 

Semelhante a OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)

おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップおすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップKoichiro Sumi
 
Let's Start Contributing to OpenJDK from Today!(Oracle Groundbreakers APAC Vi...
Let's Start Contributing to OpenJDK from Today!(Oracle Groundbreakers APAC Vi...Let's Start Contributing to OpenJDK from Today!(Oracle Groundbreakers APAC Vi...
Let's Start Contributing to OpenJDK from Today!(Oracle Groundbreakers APAC Vi...NTT DATA Technology & Innovation
 
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)NTT DATA Technology & Innovation
 
Windows 8 Developers カンファレンス
Windows 8 Developers カンファレンスWindows 8 Developers カンファレンス
Windows 8 Developers カンファレンスKaoru NAKAMURA
 
Intalio japan special cloud workshop
Intalio japan special cloud workshopIntalio japan special cloud workshop
Intalio japan special cloud workshopDaisuke Sugai
 
6万行の TypeScript 移行とその後
6万行の TypeScript 移行とその後6万行の TypeScript 移行とその後
6万行の TypeScript 移行とその後Shingo Sasaki
 
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)NTT DATA Technology & Innovation
 
ToolChainを使った次世代DevOps環境の作り方
ToolChainを使った次世代DevOps環境の作り方ToolChainを使った次世代DevOps環境の作り方
ToolChainを使った次世代DevOps環境の作り方Harada Kazuki
 
Windows 11とNPUで実現するWindowsのAI
Windows 11とNPUで実現するWindowsのAIWindows 11とNPUで実現するWindowsのAI
Windows 11とNPUで実現するWindowsのAITomokazu Kizawa
 
オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)
オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)
オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)NTT DATA Technology & Innovation
 
C#メタプログラミング概略 in 2021
C#メタプログラミング概略 in 2021C#メタプログラミング概略 in 2021
C#メタプログラミング概略 in 2021Atsushi Nakamura
 
ソフトウェア開発の現場風景
ソフトウェア開発の現場風景ソフトウェア開発の現場風景
ソフトウェア開発の現場風景Koichi ITO
 
2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについて2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについてMasahito Zembutsu
 
Cloud impact on IT industry (in Japanese)
Cloud impact on IT industry (in Japanese)Cloud impact on IT industry (in Japanese)
Cloud impact on IT industry (in Japanese)shojiro-tanaka
 
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)NTT DATA Technology & Innovation
 
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!Masaki Muranaka
 
Ricoh UCS for iPad でみる エンタープライズ アジャイル開発
Ricoh UCS for iPad でみる エンタープライズ アジャイル開発Ricoh UCS for iPad でみる エンタープライズ アジャイル開発
Ricoh UCS for iPad でみる エンタープライズ アジャイル開発Naoki Umehara
 
Introduction to NetOpsCoding#2
Introduction to NetOpsCoding#2Introduction to NetOpsCoding#2
Introduction to NetOpsCoding#2Taiji Tsuchiya
 
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)NTT DATA Technology & Innovation
 
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]David Buck
 

Semelhante a OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring) (20)

おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップおすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップ
 
Let's Start Contributing to OpenJDK from Today!(Oracle Groundbreakers APAC Vi...
Let's Start Contributing to OpenJDK from Today!(Oracle Groundbreakers APAC Vi...Let's Start Contributing to OpenJDK from Today!(Oracle Groundbreakers APAC Vi...
Let's Start Contributing to OpenJDK from Today!(Oracle Groundbreakers APAC Vi...
 
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
GraalVMを3つの主機能から眺めてみよう(Oracle Groundbreakers APAC Virtual Tour 2020 講演資料)
 
Windows 8 Developers カンファレンス
Windows 8 Developers カンファレンスWindows 8 Developers カンファレンス
Windows 8 Developers カンファレンス
 
Intalio japan special cloud workshop
Intalio japan special cloud workshopIntalio japan special cloud workshop
Intalio japan special cloud workshop
 
6万行の TypeScript 移行とその後
6万行の TypeScript 移行とその後6万行の TypeScript 移行とその後
6万行の TypeScript 移行とその後
 
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
 
ToolChainを使った次世代DevOps環境の作り方
ToolChainを使った次世代DevOps環境の作り方ToolChainを使った次世代DevOps環境の作り方
ToolChainを使った次世代DevOps環境の作り方
 
Windows 11とNPUで実現するWindowsのAI
Windows 11とNPUで実現するWindowsのAIWindows 11とNPUで実現するWindowsのAI
Windows 11とNPUで実現するWindowsのAI
 
オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)
オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)
オレ流のOpenJDKの開発環境(JJUG CCC 2019 Fall講演資料)
 
C#メタプログラミング概略 in 2021
C#メタプログラミング概略 in 2021C#メタプログラミング概略 in 2021
C#メタプログラミング概略 in 2021
 
ソフトウェア開発の現場風景
ソフトウェア開発の現場風景ソフトウェア開発の現場風景
ソフトウェア開発の現場風景
 
2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについて2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについて
 
Cloud impact on IT industry (in Japanese)
Cloud impact on IT industry (in Japanese)Cloud impact on IT industry (in Japanese)
Cloud impact on IT industry (in Japanese)
 
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
Java 18で入ったJVM関連の(やや細かめな)改善(JJUGナイトセミナー「Java 18 リリース記念イベント」発表資料)
 
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
 
Ricoh UCS for iPad でみる エンタープライズ アジャイル開発
Ricoh UCS for iPad でみる エンタープライズ アジャイル開発Ricoh UCS for iPad でみる エンタープライズ アジャイル開発
Ricoh UCS for iPad でみる エンタープライズ アジャイル開発
 
Introduction to NetOpsCoding#2
Introduction to NetOpsCoding#2Introduction to NetOpsCoding#2
Introduction to NetOpsCoding#2
 
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
 
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]
 

Mais de NTT DATA Technology & Innovation

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)NTT DATA Technology & Innovation
 
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方NTT DATA Technology & Innovation
 
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...NTT DATA Technology & Innovation
 
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)NTT DATA Technology & Innovation
 
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)NTT DATA Technology & Innovation
 
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...NTT DATA Technology & Innovation
 
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)NTT DATA Technology & Innovation
 
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)NTT DATA Technology & Innovation
 
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)NTT DATA Technology & Innovation
 
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)NTT DATA Technology & Innovation
 
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...NTT DATA Technology & Innovation
 
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)NTT DATA Technology & Innovation
 
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)NTT DATA Technology & Innovation
 
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...NTT DATA Technology & Innovation
 
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)NTT DATA Technology & Innovation
 
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)NTT DATA Technology & Innovation
 
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 

Mais de NTT DATA Technology & Innovation (20)

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
 
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
COPY FROMで異常データをスキップできるようになった話(第45回 PostgreSQLアンカンファレンス@オンライン 発表資料)
 
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
Cloud Skills Challenge 2023 winter 〜Azureを頑張る理由と頑張り方
 
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
Unlocking Transformation: Implementing GitOps Practices in Conservative Organ...
 
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
Databricksチューニングあれこれ(JEDAI 2023 X‘mas/忘年会 Meetup! LT登壇資料)
 
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
詳説探究!Cloud Native Databaseの現在地点(CloudNative Days Tokyo 2023 発表資料)
 
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
 
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
 
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
 
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
マネージドPostgreSQLの実現に向けたPostgreSQL機能向上(PostgreSQL Conference Japan 2023 発表資料)
 
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
最新機能までを総ざらい!PostgreSQLの注目機能を振り返る(第32回 中国地方DB勉強会 in 岡山 発表資料)
 
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
 
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
 
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
機械学習モデルを REST API としてサービングするシステム開発における上流プロセスの絞り込みと効果検証(PM学会2023年度秋季研究発表大会 発表資料)
 
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
PostgreSQL on Kubernetes: Realizing High Availability with PGO (Postgres Ibiz...
 
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
 
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
Prometheus Operator 入門(Kubernetes Novice Tokyo #26 発表資料)
 
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
ChatGPTのデータソースにPostgreSQLを使う(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
 

OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)

  • 1. © 2023 NTT DATA Corporation OpenJDKのコミッタってどんなことしたらなったの? 解決してきた技術課題の事例から見えてくる必要な知識と技術 2023年6月4日 JJUG CCC 2023 Spring 株式会社NTTデータ 技術革新統括本部 技術開発本部 阪田 浩一
  • 2. © 2023 NTT DATA Corporation 2 発表者 • 株式会社NTTデータ 所属 • OpenJDKコミッタ • Javaチャンピオン • Oracle ACE Pro (Java分野) Koichi Sakata 阪田 浩一 jyukutyo
  • 3. © 2023 NTT DATA Corporation 3 最初の疑問 Javaは 誰が 作っているの?
  • 4. © 2023 NTT DATA Corporation 4 前提として 多くのJDKがベースとする OpenJDKを取り上げると…
  • 5. © 2023 NTT DATA Corporation 5 ちょっと待って OpenJDKって 何なの?
  • 6. © 2023 NTT DATA Corporation 6 OpenJDK[1]とは何か  OpenJDKはオープンソースのJava SE 仕様の実装と その関連製品を開発する場  そのソースコードはGitHubにある[2] [1] https://openjdk.org/ [2] https://github.com/openjdk/
  • 7. © 2023 NTT DATA Corporation 7 OpenJDK[1]とは何か  OpenJDKはオープンソースのJava SE 仕様の実装と その関連製品を開発する場  そのソースコードはGitHubにある[2]  バイナリは提供しない • 自分でビルドする もしくは他の誰かがビルドしたバイナリを利用する • 多くのJDKはOpenJDKをベースとして作成したものである [1] https://openjdk.org/ [2] https://github.com/openjdk/ 2006 2023 Javaオープンソース化発表 Java 6リリース Java 20 リリース
  • 8. © 2023 NTT DATA Corporation 8 改めて最初の疑問 Javaは 誰が 作っているの?
  • 9. © 2023 NTT DATA Corporation 9 JDK 11から最新20までの課題解決数の割合(組織別) https://blogs.oracle.com/java/post/th e-arrival-of-java-20
  • 10. © 2023 NTT DATA Corporation 10 Java(OpenJDK)は誰が作っているのか  さまざまな企業と個人 • 企業が開発に参画している • 個人として参画している人も多くいる
  • 11. © 2023 NTT DATA Corporation 11 次の疑問 OpenJDK開発って 何をするの?
  • 12. © 2023 NTT DATA Corporation 12 OpenJDKの開発  一般的なOSSの開発と内容は同じ • 新機能追加 • 機能拡張 改善 • バグ修正  提案や意見交換はメーリングリスト[1]  開発はGitHub上[2] [1] https://mail.openjdk.org/mailman/listinfo [2] https://github.com/openjdk/jdk
  • 13. © 2023 NTT DATA Corporation 13 OpenJDKの内容物  Java APIの実装  Javaコンパイラ  Java仮想マシン(JVM) • ガベージコレクタ JITコンパイラなど  各種ツール • JDK Flight Recorder jcmd jhsdbなど [1] https://mail.openjdk.org/mailman/listinfo CAFE BABE 0000 クラスファイル クラスローダー サブシステム 実行時データエリア ヒープ … … 実行エンジン インタ プリタ JIT コンパイラ ガベージ コレクタ
  • 14. © 2023 NTT DATA Corporation 14 実装プログラミング言語 大まかに述べると  JVM : C++  JVM以外 : Java
  • 15. © 2023 NTT DATA Corporation 15 突然の提案 あなたもJava、 今すぐ開発しませ ん?
  • 16. © 2023 NTT DATA Corporation 16 それじゃあ 私にも Javaの開発が できるの?
  • 17. © 2023 NTT DATA Corporation 17 誰でもOpenJDK(Java)の開発に参加できる  色々なレベルの開発者がいる • すごい開発者だけ ではない  必要な能力はほんの少し • やり抜く力 • 継続する力  以下の能力は想像よりも重要ではない • 技術力 • 英語力
  • 18. © 2023 NTT DATA Corporation 18 開発に貢献する動機は何だっていい  技術力を高めたい  Javaに恩返ししたい  ワールドワイドで活動したい  JVMになりたい  ...
  • 19. © 2023 NTT DATA Corporation 19 貢献方法はいろいろある 1. プルリクエストを出す 2. リリース前の機能を試す 3. アイデアを提案する 4. 議論に参加する 5. イベントで登壇する 6. ブログに投稿する 7. ...
  • 20. © 2023 NTT DATA Corporation 20 貢献方法はいろいろある 1. プルリクエストを出す 2. リリース前の機能を試す 3. アイデアを提案する 4. 議論に参加する 5. イベントで登壇する 6. ブログに投稿する 7. ... 今日はこれ!
  • 21. © 2023 NTT DATA Corporation 21 ところで JVMとかJavaのAPIのバグって よく遭遇しますか?
  • 22. © 2023 NTT DATA Corporation 22 普通に使っていてもそんなにバグに遭遇しない  Java APIのバグ JVMのバグ • まったく遭遇したことがない人も多いと思う
  • 23. © 2023 NTT DATA Corporation 23 疑問 プルリクエストを出す題材は めったに見つけれらない?
  • 24. © 2023 NTT DATA Corporation 24 私もそうでした  当初の考え方: バグを見つけたら修正に挑戦しよう • 機会が運の問題になってしまう  発想の転換: 自分で見つけて直す • どうすれば修正対象を見つけられるか?
  • 25. © 2023 NTT DATA Corporation 25 じゃあ 今までと違う使い方を してみよう!
  • 26. © 2023 NTT DATA Corporation 26 今までと違う使い方をしてみる  異常系でするようなやり方で使ってみる  使ったことがないもの(API ツール)を使ってみる  異なる条件でビルドして使ってみる
  • 27. © 2023 NTT DATA Corporation 27 異常系でするようなやり方で使ってみる  私が修正した例: UL(Unified Logging) -Xlog[:[selections][:[output][:[decorators][:output-options]]]]
  • 28. © 2023 NTT DATA Corporation 28 異常系でするようなやり方で使ってみる  私が修正した例: UL(Unified Logging) -Xlog[:[selections][:[output][:[decorators][:output-options]]]] // Java 15以前 $ java -Xlog::::::foo::::::: // とくに警告もなく実行できる 5つ目以降のコロンは無効なので 警告を出した方がいいのでは // Java 16以降 $ java -Xlog::::::foo::::::: [0.003s][warning][logging] Ignoring excess -Xlog options: ":foo:::::::" // 実行はする
  • 29. © 2023 NTT DATA Corporation 29 使ったことがないものを使ってみる  ツールやAPI  私が修正した例: jcmd
  • 30. © 2023 NTT DATA Corporation 30 使ったことがないものを使ってみる  ツールやAPI  私が修正した例: jcmd ドメイン 内容 VM JVMの実行情報取得 ログ設定など Compiler JITコンパイラ関連 GC ガベージコレクション関連 Thread 現状スレッドダンプのみ JVMTI JVM Tool Interface関連 エージェントのロードなど JFR フライトレコード関連 ManagementAgent JMXエージェント関連 使い方: jcmd <pid> command ドメイン.操作 jcmdはとても多機能
  • 31. © 2023 NTT DATA Corporation 31 あれ?この機能ちゃんと動いてない  Java 16以前  実行中にjcmdでULログの設定変更をする  変更が成功したとメッセージが出るが 実際には変更されていない
  • 32. © 2023 NTT DATA Corporation 32 Java 16でのjcmdにおけるULログ設定バグ
  • 33. © 2023 NTT DATA Corporation 33 あれ?この機能ちゃんと動いてない  Java 16以前  実行中にjcmdでULログの設定変更をする  変更が成功したとメッセージが出るが 実際には変更されていない  そもそもこれは変更できない設定項目 なので成功ではなく 変更しないというメッセージを出すべき
  • 34. © 2023 NTT DATA Corporation 34 修正してみた
  • 35. © 2023 NTT DATA Corporation 35 Java 17でのjcmdにおけるULログ設定
  • 36. © 2023 NTT DATA Corporation 36 異なる条件でビルドして使ってみる  OSやライブラリなどを変えてビルドする  バージョンを最新などに変えてビルドする
  • 37. © 2023 NTT DATA Corporation 37 ビルド? OpenJDKって どうやってビルドするの?
  • 38. © 2023 NTT DATA Corporation 38 デモ: OpenJDKのビルド
  • 39. © 2023 NTT DATA Corporation 39 OpenJDKのビルド[1]  LinuxやmacOSは簡単  Windowsは少し手間がかかるかも • (数年前に一度やっただけでうろ覚え) • WSLでもできる  ネット上に多く関連投稿がある • 日本語でも [1] https://github.com/openjdk/jdk/blob/master/doc/building.md
  • 40. © 2023 NTT DATA Corporation 40 異なる条件でビルドして使ってみる  OSやライブラリなどを変えてビルドする  バージョンを最新などに変えてビルドする
  • 41. © 2023 NTT DATA Corporation 41 バージョンを最新などに変えてビルドする  私が修正した例 • GCC 10がリリースされたとき GCC 10でビルドしてみた
  • 42. © 2023 NTT DATA Corporation 42 バージョンを最新などに変えてビルドする  私が修正した例 • GCC 10がリリースされたとき GCC 10でビルドしてみた In file included from /home/jyukutyo/code/jdk/src/hotspot/share/classfile/systemDictionary.hpp:31, from /home/jyukutyo/code/jdk/src/hotspot/share/classfile/javaClasses.hpp:28, from /home/jyukutyo/code/jdk/src/hotspot/share/precompiled/precompiled.hpp:35: In member function 'void Symbol::byte_at_put(int, u1)', inlined from 'Symbol::Symbol(const u1*, int, int)' at /home/jyukutyo/code/jdk/src/hotspot/share/oops/symbol.cpp:55:16: /home/jyukutyo/code/jdk/src/hotspot/share/oops/symbol.hpp:130:18: error: writing 1 byte into a region of size 0 [-Werror=stringop-overflow=] 130 | _body[index] = value; | ~~~~~~~~~~~~~^~~~~~~ (omitted) 以前は出ていなかった 警告が新たに3つ出た
  • 43. © 2023 NTT DATA Corporation 43 警告の内容を確認する  抜粋 /home/jyukutyo/code/jdk/src/hotspot/share/oops/symbol.hpp:130:18: error: writing 1 byte into a region of size 0 [-Werror=stringop-overflow=] 130 | _body[index] = value; | ~~~~~~~~~~~~~^~~~~~~ /home/jyukutyo/code/jdk/src/java.base/share/native/libfdlibm/k_standard.c:743:19: error: 'exc.retval' may be used uninitialized in this function [-Werror=maybe- uninitialized] 743 | return exc.retval; | ~~~^~~~~~~ /home/jyukutyo/code/jdk/src/java.base/unix/native/libnet/NetworkInterface.c:974:13: /usr/include/x86_64-linux-gnu/bits/string_fortified.h:106:10: error: '__builtin_strncpy' output may be truncated copying 15 bytes from a string of length 15 [-Werror=stringop-truncation] 106 | return __builtin___strncpy_chk (__dest, __src, __len, __bos (__dest)); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  • 44. © 2023 NTT DATA Corporation 44 GCC 10での変更点 GCC 10 Release Series — Changes, New Features, and Fixes https://gcc.gnu.org/gcc-10/changes.html
  • 45. © 2023 NTT DATA Corporation 45 どうしても自分で 題材を見つけられないとき 何か他の方法はある?
  • 46. © 2023 NTT DATA Corporation 46  JBS(JDK Bug System) [1] バグトラッキングシステムを見てみる [1] https://bugs.openjdk.java.net/projects/JDK/issues/
  • 47. © 2023 NTT DATA Corporation 47 JBS  各PRには対応するJBSのイシューがある • というよりも JBSのイシューが先にあり それにPRを出すということ  イシューのラベル starterやclean-up は初級者向け • それらを題材にする
  • 48. © 2023 NTT DATA Corporation 48 題材を見つけたとして 誰でも修正できる?
  • 49. © 2023 NTT DATA Corporation 49 JavaからC++へ  私の場合 • 社会人歴 ≒ Java Webアプリの運用開発だった • JVMのコードが初C++だった
  • 50. © 2023 NTT DATA Corporation 50 誰でも修正できる  言語面はなんとかできる • 他者が書いたコードを直すという意味では普段と同じ  低レイヤに関する知識が要求されることもある • OS CPU メモリ ネットワーク 場合によってはアセンブリ言語 • 調べればなんとかなることも多い
  • 51. © 2023 NTT DATA Corporation 51 ところで どういう風に 開発するの?
  • 52. © 2023 NTT DATA Corporation 52 エディタ IDE  お好みで 何でもよい  私の場合 • IDEを使っていたこともあったが 今はそのマシンにあるプレーンなエディタを使うだけ • 加えてfindとgrepでほとんどの場合いけてしまっている
  • 53. © 2023 NTT DATA Corporation 53 デバッグツール  printデバッグでもほとんどの場合いける  GDB  CLion • JetBrainsのC++用有償IDE
  • 54. © 2023 NTT DATA Corporation 54 テスト  jtreg • Javaコードの独自テスティングフレームワーク • JDK用リグレッションテストハーネス  Google Test(gtest) • C++コード用のテスティングフレームワーク
  • 55. © 2023 NTT DATA Corporation 55 デモ: jtregのテスト実行
  • 56. © 2023 NTT DATA Corporation 56 これで開発は できそうだ…!
  • 57. © 2023 NTT DATA Corporation 57 ところで プルリクエストは 英語で出すんですよね?
  • 58. © 2023 NTT DATA Corporation 58 英語力  PRにはそれほど必要ない感じ • 高校1,2年の内容が思い出せれば十分そう • DeepL Google翻訳などを活用する  提案 議論では長文が要求される • このときはがんばる
  • 59. © 2023 NTT DATA Corporation 59 仕事でPRは書いているけれど… そもそもPRに どんなことを書いたらいいの?
  • 60. © 2023 NTT DATA Corporation 60 動くようにする ≠ 大規模OSSでPRをマージまで持っていく  PRはすんなりマージされない • レビューコメントはいくつもつく • やりぬく力がいる
  • 61. © 2023 NTT DATA Corporation 61 動くようにする ≠ 大規模OSSでPRをマージまで持っていく  PRはすんなりマージされない • レビューコメントはいくつもつく • やりぬく力がいる  OpenJDKは巨大なプロダクトである • 修正が想像もしなかった部分に影響すると指摘されることもある • 症状 修正方法 テスト内容 を文化が異なる国にいる 初対面のエンジニアに詳細に説明しなければならない  PRで 何度も修正したりより詳しい説明を求められる ことはよくある
  • 62. © 2023 NTT DATA Corporation 62 何をしたのか ではなく なぜそうしたのか  すべてをさらけ出すことになる • この点はWebアプリ運用開発のときより厳しさを感じる  バグなら再現手順を確立する • 手順は余分なものを削ぎ落とし 可能な限りシンプルな手順にする
  • 63. © 2023 NTT DATA Corporation 63 PRマージのイメージ (Omitted)
  • 64. © 2023 NTT DATA Corporation 64 継続しよう  PRを出せば出すほど Javaのことがよりわかる • 同時にまだまだ知らないことがたくさんあることがわかる
  • 65. © 2023 NTT DATA Corporation 65 継続しよう  PRを出せば出すほど Javaのことがよりわかる • 同時にまだまだ知らないことがたくさんあることがわかる  何よりもまずコードを書いていこう • 読むだけよりももっと楽しい • そのためにも修正 改善の題材を探すことが重要  やり抜くことを継続すると ふと気づいたとき 思ってもいなかった場所にたどり着いている
  • 66. © 2023 NTT DATA Corporation 66 質問 どんなことをしたら コミッタになるの?
  • 67. © 2023 NTT DATA Corporation 67 OpenJDKにおけるコミッタの定義  コミッタ認定基準はOSSごとに異なる  OpenJDKの開発者ロール • レビュワ + コミッタで世界に300人+ コミッタ Author コントリビュータ バグ登録権限など 開発者権限を保持 OpenJDKコミュニティにおける開発者ロール レビュワ
  • 68. © 2023 NTT DATA Corporation 68  コミッタ = 無条件にすごい ではない • もちろんコミッタにはすごい人も多いけれど  コミッタ = 修正を最後までやり抜き それを何度もやった人 • すごいことをやる必要はない • 言い換えると どんな人にもなれるチャンスがある コミッタってすごいの?
  • 69. © 2023 NTT DATA Corporation 69 コミッタ認定の流れ  基準クリア -> 推薦 -> 投票 -> 認定 • 基準: コードに対して意味のある修正を 8回以上実施する • 推薦: コミッタ以上が候補者をメールで推薦する • 投票: コミッタ以上がメールで賛成か反対の票を入れる • 認定: 反対票がなければコミッタ認定
  • 70. © 2023 NTT DATA Corporation 70 コミッタ認定の流れ  基準クリア -> 推薦 -> 投票 -> 認定 • 基準: コードに対して意味のある修正を 8回以上実施する • 推薦: コミッタ以上が候補者をメールで推薦する • 投票: コミッタ以上がメールで賛成か反対の票を入れる • 認定: 反対票がなければコミッタ認定  私の場合 • PRが14回マージされていた • 何度かレビューしてくれていた米オラクル社の人から 突然推薦するとメールが来た • 投票を経て2月に認定
  • 71. © 2023 NTT DATA Corporation 71 そうは言っても… 1人で全部進められるか 不安…
  • 72. © 2023 NTT DATA Corporation 72 メンタになってもらう  OpenJDK開発は多人数 ワールドワイド 英語使用 難解 • 独力でやり遂げられる人は多くないはず - 私はやりたい思いがありつつ 長年始められなかった
  • 73. © 2023 NTT DATA Corporation 73 メンタになってもらう  OpenJDK開発は多人数 ワールドワイド 英語使用 難解 • 独力でやり遂げられる人は多くないはず - 私はやりたい思いがありつつ 長年始められなかった  コントリビュート経験者に相談する • このCCCにコミッタ以上のロールを持つ人は何人も来ている • 1度F2Fで話しておけばソーシャルメディアでも相談しやすい
  • 74. © 2023 NTT DATA Corporation 74 (私に限らず) 気になったセッションの 発表者に話しかけてみましょう!
  • 75. © 2023 NTT DATA Corporation 75 私の場合: JavaカンファレンスとTwitterでのやり取り  後に師匠となる人のセッションを聞き 衝撃を受ける • Javaのことなのにセッションの半分が理解できない  以降 師匠のセッションがあればそのイベントに出向く • 当時関西在住 東京まで出てくる
  • 76. © 2023 NTT DATA Corporation 76 私の場合: JavaカンファレンスとTwitterでのやり取り  後に師匠となる人のセッションを聞き 衝撃を受ける • Javaのことなのにセッションの半分が理解できない  以降 師匠のセッションがあればそのイベントに出向く • 当時関西在住 東京まで出てくる  海外カンファレンスで師匠と実際に話す  OpenJDKについてブログ投稿やツイートをすると Twitterで助言をもらえるように  転職し 師匠と同僚になる • メンタになってもらう
  • 77. © 2023 NTT DATA Corporation 77 コントリビュートして コミッタになって よかったこと  Javaの歴史に自分も痕跡を残せたうれしさがある
  • 78. © 2023 NTT DATA Corporation 78 コントリビュートして コミッタになって よかったこと  Javaの歴史に自分も痕跡を残せたうれしさがある  コミッタ向けイベントに参加できる • OpenJDK Committer's Workshop  OpenJDK開発者と知り合えた • 日本語話者の開発者とも  新しい技術領域に踏み出せた
  • 79. © 2023 NTT DATA Corporation 79 まとめ
  • 80. © 2023 NTT DATA Corporation 80 見えてきた必要な知識と技術とは  知識も技術もあとからついてくる  やり抜く力と継続する力こそが大切  言い換えればどんな人だって歩き続ければ そこにたどり着ける! • そこはきっと自分が思い描く場所
  • 81. © 2023 NTT DATA Corporation 81 本資料に記載されている会社名、商品名、又はサービス名は、各社の登録商標又は商標です。