SlideShare a Scribd company logo
1 of 42
© 2020 NTT DATA Corporation 1 © 2020 NTT DATA Corporation
OSSやってみる
~OpenJDKの場合~
2020年02月16日
株式会社NTTデータ 末永 恭正
#javajo
© 2020 NTT DATA Corporation 2 #javajo
OSS、使ってますか?
© 2020 NTT DATA Corporation 3 #javajo
使うからこそ思うこと
• こうだったらもっと使いやすいのに
• この部分、こう書きかえればもっとよく動くんじゃ?
• ここの動き、ヘンじゃね?
• このマニュアルわかりにくい
© 2020 NTT DATA Corporation 4 #javajo
OSSやってみる
チャンス!!!
© 2020 NTT DATA Corporation 5 #javajo
いろいろな貢献
• 疑問をぶつける
• 新機能の提案をする
• バグ報告をする
自作のプログラムを公開する/パッチを出すだけがOSS活動ではない!
何か言ってみる パッチ出してみる
© 2020 NTT DATA Corporation 6 #javajo
ドキュメント修正だって立派な貢献!
• 使いたい/作りたい人の基本となるもの
• ユーザー/開発者獲得の大きなポイント
• 開発に携わっていないからこそ気づくことだってある
Windows Terminalの場合:
© 2020 NTT DATA Corporation 7 #javajo
「思ったこと」が大きな結果に繋がることも
• 自分が思ったことは他の人も思っているかもしれない
• 単に声を上げていないだけかもしれない
• 開発者にとって外部からの声は気づきの宝庫!
• 開発者は見えすぎていて、”わからないこと”が”わからない”
© 2020 NTT DATA Corporation 8 #javajo
そうは言っても
いろいろ不安が…
© 2020 NTT DATA Corporation 9 #javajo
腕に自信がない…
• 根拠に基づく話をすればいい
• コミッタだって人間→間違える
• 根拠:オフィシャルドキュメントとか
• パッチの場合、レビューで指摘されたことを
しっかり納得して反映していけばいい
• いろいろ教えてもらえるいいチャンス!
© 2020 NTT DATA Corporation 10 #javajo
英語つらい…
• 便利サイトに頼ってみる
• 英辞郎: https://www.alc.co.jp/
• Google翻訳: https://translate.google.co.jp/
• 外国の開発者は理解しようとしてくれる
• 困ったらコードを引用すればいい
• テキストベースのコミュニケーションならイケる!
• 会話じゃないからリアルタイム性は求められない
• コメント文の表現とかはレビュー時に直してくれる!
© 2020 NTT DATA Corporation 11 #javajo
OSS活動やってみる!
その前に…
© 2020 NTT DATA Corporation 12 #javajo
必要なことをチェックしておこう
• 報告、提案、議論の出し方
• GitHub Issue、Google Groups、メール、etc…
• 公式リポジトリ
• GitHubがオフィシャルとは限らない
• 同意書の要否
• CLA(Contributor License Agreement)と呼ばれるもの
• 企業発OSSはCLAを求めることが多い(気がする)
• その他、コミュニティの「流儀」
• (GitHubプロジェクトなら)基本的なことはREADME.mdや
CONTRIBUTING.mdに書いてあることも
© 2020 NTT DATA Corporation 13 #javajo
OSS活動やってみる!
~OpenJDKの場合~
© 2020 NTT DATA Corporation 14 #javajo
OpenJDK
• https://openjdk.java.net/
• オープンソースなJava実装
• Sun JDK(Oracle買収前)がオープンソースになった
• ライセンスはGPLv2 Classpath Exception
• 様々な会社がOpenJDKのビルドを出している
• Red Hat、Amazon、SAP、etc…
• コミュニティとしてオフィシャルのバイナリは出していない
• 最近のJavaのリファレンス実装的なもの
• Oracle JDKもOpenJDKがベース
• なにかと話題のGraalVMのベースにもなっている
© 2020 NTT DATA Corporation 15 #javajo
コントリビューター視点でのOpenJDKの特徴
• コード管理がMercurial
• http://hg.openjdk.java.net/
• GitHubはクローン(2020/02現在)
• IssueやPull Requestを現時点では受け付けていない
• GitHubへの移行を検討中ではある
画面左側のリンクから各プロジェクトのリポジトリを参照する
© 2020 NTT DATA Corporation 16 #javajo
コントリビューター視点でのOpenJDKの特徴
• バグ管理はJIRA
• https://bugs.openjdk.java.net/
• コミュニティでの権限がないと書き込み不可
© 2020 NTT DATA Corporation 17 #javajo
コントリビューター視点でのOpenJDKの特徴
• 議論がML
• https://mail.openjdk.java.net/
• 出し先を自分で気を付けなければいけない
• 不適切な場合でも、受け取った人が正しいところへ
CCしてくれることがよくある
とにかく数が多い!
(ARCHIVED(新規投稿不可)も残されている)
© 2020 NTT DATA Corporation 18 #javajo
コントリビューター視点でのOpenJDKの特徴
• コントリビューションには
OCA(Oracle Contributor Agreement)の提出が必要
• 議論するだけなら不要
© 2020 NTT DATA Corporation 19 #javajo
OpenJDKコミュニティの人たち
Project
Lead
Reviewer
Committer
Author
Contributor
※上位者は下位者の権限を継承する
© 2020 NTT DATA Corporation 20 #javajo
Contributor
• パッチを出す人
• レビュー資材作成やPushに
Sponsorの協力が必要
Project
Lead
Reviewer
Committer
Author
Contributor
https://openjdk.java.net/bylaws#contributor
© 2020 NTT DATA Corporation 21 #javajo
Contributorとしてパッチがコミットされると…
© 2020 NTT DATA Corporation 22 #javajo
Author
• コミットを作れる人
• 以下へのアクセス権を持つ
• バグ管理システム(JBS)
• コードレビューサーバ
• PushはSponsorに依頼
• hg exportコマンド
• 2個以上の「ちゃんとした」
コミットを持つ人がProject
Leadにメールするとなれる
Project
Lead
Reviewer
Committer
Author
Contributor
https://openjdk.java.net/bylaws#author
© 2020 NTT DATA Corporation 23 #javajo
Committer
• リポジトリにPushできる人
• Sponsorとして支援も可
• Submit Repoの利用権あり
• 8個以上の「ちゃんとした」
コミットを持つ人が投票で
役割を与えられる
• 必ずしも
Authorである必要はない
Project
Lead
Reviewer
Committer
Author
Contributor
https://openjdk.java.net/bylaws#committer
© 2020 NTT DATA Corporation 24 #javajo
Reviewer
• 修正のレビューをする人
• Reviewerの同意がないと、
超緊急なパッチでも
Pushしてはいけない
• 32個以上の
「ちゃんとした」コミット
を持つCommitterが投票で
役割を与えられる
Project
Lead
Reviewer
Committer
Author
Contributor
https://openjdk.java.net/bylaws#reviewer
© 2020 NTT DATA Corporation 25 #javajo
Project Lead
Project
Lead
Reviewer
Committer
Author
Contributor
• OpenJDK配下の
開発プロジェクトリーダー
• 開発の方向性や活動に
責任を持つ
• プロジェクト毎に1人
• たまに人が代わる
https://openjdk.java.net/bylaws#project-lead
© 2020 NTT DATA Corporation 26 #javajo
パッチがマージされるまで
© 2020 NTT DATA Corporation 27 #javajo
ネタ発見!
JBSに登録
パッチを作る
Submit Repoでテスト
コードレビューサーバへUp
MLでレビュー
コミット
プッシュ
(バックポート)
基本的な流れ
パッチづくり&改善
(繰り返し)
修正する
© 2020 NTT DATA Corporation 28 #javajo
JBSに登録
基本的な流れ:問題・改善の登録
• まずはチケット番号を取る
• JDK-xxxxxxxの形式
• Author以上でないと
JBSに書き込めない
• Contributorはここから
Sponsorが必要
• つまり、何か見つけた時点で
MLで議論する必要がある
© 2020 NTT DATA Corporation 29 #javajo
基本的な流れ:パッチづくりからレビューまで
• パッチを作ったら
Submit RepoへPush
• Committer以上が使える
• パッチを
コードレビューサーバへUp
• webrev形式
• 修正箇所に関連する議論を行う
MLへレビュー依頼を送信
• 最低でもReviewer×1以上の
同意をもらうまでサイクルを繰り返す
パッチを作る
Submit Repoでテスト
コードレビューサーバへUp
MLでレビュー
© 2020 NTT DATA Corporation 30 #javajo
Submit Repo
• 絶対にコケてはいけないテストを
自動で行ってくれるリポジトリ
• http://hg.openjdk.java.net/jdk/submit
• 試験対象はOracle JDKがサポートするプラットフォーム
• Linux x64、Solaris SPARC V9、Windows x64、macOS
• レビューはSubmit Repoのテストが終わってから
回すのがマナー
• 試験結果はメールで返ってくる
© 2020 NTT DATA Corporation 31 #javajo
Submit Repoの結果メール
失敗している場合 成功している場合
© 2020 NTT DATA Corporation 32 #javajo
コードレビューサーバ
• http://cr.openjdk.java.net/~<ユーザー>/
• Author以上が利用できる
• OpenJDKのパッチレビューは
webrevをここへUpすることで行われる
• webrev: OpenJDKコミュニティのレビューフォーマット
© 2020 NTT DATA Corporation 33 #javajo
webrev
© 2020 NTT DATA Corporation 34 #javajo
基本的な流れ:修正の反映
• Committer以上の仕事
• レビューでOKが出たら
コミットしてPushする
• バックポートすべき修正は
JBSでリクエストを作る
• 基本的にはJBSチケットに
ラベルを付け、理由等を
書き込むだけ
コミット
プッシュ
(バックポート)
© 2020 NTT DATA Corporation 35 #javajo
バックポートの例
① jdk<バージョン>-fix-requestラベルをつける
② バックポートしたい理由や
テストについてコメント欄に書く
③ jdk<バージョン>-fix-yesラベルが
ついたらバックポートOK
© 2020 NTT DATA Corporation 36 #javajo
OpenJDKはじめの一歩
© 2020 NTT DATA Corporation 37 #javajo
コントリビューターとしてのパッチ提案の流れ
1. OCAを提出する
2. 問題と、それを修正するパッチを
メール本文にベタ書きしたものを議論対象のMLに流す
3. 修正にポジティブな感触なら(まだいなければ)
Sponsorの募集とJBSへの登録をお願いする
4. コメントを反映してはパッチ送って…を繰り返す
– Sponsorとの共同作業
5. Sponsorに完成版パッチをPushしてもらう
© 2020 NTT DATA Corporation 38 #javajo
ネタを見つけるコツ
© 2020 NTT DATA Corporation 39 #javajo
再掲:使うからこそ思うこと
• こうだったらもっと使いやすいのに
• この部分、こう書きかえればもっとよく動くんじゃ?
• ここの動き、ヘンじゃね?
• このマニュアルわかりにくい
実はこれこそがネタ!
※感じ方には個人差があります
© 2020 NTT DATA Corporation 40 #javajo
ネタは日々の生活の中に
• プログラマの人
• 使いにくい、動きがヘン、ドキュメントが間違ってる
• 運用の人
• 安定性、メトリクスのとりやすさ
• トラブルシューターの人
• デバッグのしやすさ、バグ修正
© 2020 NTT DATA Corporation 41 #javajo
starterラベル
• コントリビューションのはじめの一歩
• 他コミュニティでも同様の仕組みがあることも
• たまに高難度なものが混ざっているので、注意!
© 2020 NTT DATA Corporation本資料に記載されている会社名、商品名、又はサービス名は、各社の登録商標又は商標です。

More Related Content

More from 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
 
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス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
 
どうする計画駆動型スクラム(スクラムフェス大阪2023 発表資料)
どうする計画駆動型スクラム(スクラムフェス大阪2023 発表資料)どうする計画駆動型スクラム(スクラムフェス大阪2023 発表資料)
どうする計画駆動型スクラム(スクラムフェス大阪2023 発表資料)NTT DATA Technology & Innovation
 
YugabyteDBの拡張機能(YugabyteDB Meetup #2 発表資料)
YugabyteDBの拡張機能(YugabyteDB Meetup #2 発表資料)YugabyteDBの拡張機能(YugabyteDB Meetup #2 発表資料)
YugabyteDBの拡張機能(YugabyteDB Meetup #2 発表資料)NTT DATA Technology & Innovation
 
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...NTT DATA Technology & Innovation
 
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)NTT DATA Technology & Innovation
 
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)NTT DATA Technology & Innovation
 
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)NTT DATA Technology & Innovation
 
明日から始める! ソフトウェアのグリーン化(GSF MeetUp Tokyo 発表資料)
明日から始める! ソフトウェアのグリーン化(GSF MeetUp Tokyo 発表資料)明日から始める! ソフトウェアのグリーン化(GSF MeetUp Tokyo 発表資料)
明日から始める! ソフトウェアのグリーン化(GSF MeetUp Tokyo 発表資料)NTT DATA Technology & Innovation
 

More from NTT DATA Technology & Innovation (20)

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年度秋季研究発表大会 発表資料)
 
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス2023 発表資料)
ChatGPTのデータソースにPostgreSQLを使う[詳細版](オープンデベロッパーズカンファレンス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アンカンファレンス@オンライン 発表資料)
 
どうする計画駆動型スクラム(スクラムフェス大阪2023 発表資料)
どうする計画駆動型スクラム(スクラムフェス大阪2023 発表資料)どうする計画駆動型スクラム(スクラムフェス大阪2023 発表資料)
どうする計画駆動型スクラム(スクラムフェス大阪2023 発表資料)
 
YugabyteDBの拡張機能(YugabyteDB Meetup #2 発表資料)
YugabyteDBの拡張機能(YugabyteDB Meetup #2 発表資料)YugabyteDBの拡張機能(YugabyteDB Meetup #2 発表資料)
YugabyteDBの拡張機能(YugabyteDB Meetup #2 発表資料)
 
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
PGOを用いたPostgreSQL on Kubernetes入門(Open Source Conference 2023 Online/Hokkaido...
 
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)
GraalVMでのFlight Recorderを使ったパフォーマンス解析(JJUG CCC 2023 Spring)
 
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
 
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
明日から始める! ソフトウェアのグリーン化(GSF MeetUp Tokyo 発表資料)
明日から始める! ソフトウェアのグリーン化(GSF MeetUp Tokyo 発表資料)明日から始める! ソフトウェアのグリーン化(GSF MeetUp Tokyo 発表資料)
明日から始める! ソフトウェアのグリーン化(GSF MeetUp Tokyo 発表資料)
 

OSSやってみる ~OpenJDKの場合~(Java女子部 OSS開発はじめのいっぽ勉強会 講演資料)

  • 1. © 2020 NTT DATA Corporation 1 © 2020 NTT DATA Corporation OSSやってみる ~OpenJDKの場合~ 2020年02月16日 株式会社NTTデータ 末永 恭正 #javajo
  • 2. © 2020 NTT DATA Corporation 2 #javajo OSS、使ってますか?
  • 3. © 2020 NTT DATA Corporation 3 #javajo 使うからこそ思うこと • こうだったらもっと使いやすいのに • この部分、こう書きかえればもっとよく動くんじゃ? • ここの動き、ヘンじゃね? • このマニュアルわかりにくい
  • 4. © 2020 NTT DATA Corporation 4 #javajo OSSやってみる チャンス!!!
  • 5. © 2020 NTT DATA Corporation 5 #javajo いろいろな貢献 • 疑問をぶつける • 新機能の提案をする • バグ報告をする 自作のプログラムを公開する/パッチを出すだけがOSS活動ではない! 何か言ってみる パッチ出してみる
  • 6. © 2020 NTT DATA Corporation 6 #javajo ドキュメント修正だって立派な貢献! • 使いたい/作りたい人の基本となるもの • ユーザー/開発者獲得の大きなポイント • 開発に携わっていないからこそ気づくことだってある Windows Terminalの場合:
  • 7. © 2020 NTT DATA Corporation 7 #javajo 「思ったこと」が大きな結果に繋がることも • 自分が思ったことは他の人も思っているかもしれない • 単に声を上げていないだけかもしれない • 開発者にとって外部からの声は気づきの宝庫! • 開発者は見えすぎていて、”わからないこと”が”わからない”
  • 8. © 2020 NTT DATA Corporation 8 #javajo そうは言っても いろいろ不安が…
  • 9. © 2020 NTT DATA Corporation 9 #javajo 腕に自信がない… • 根拠に基づく話をすればいい • コミッタだって人間→間違える • 根拠:オフィシャルドキュメントとか • パッチの場合、レビューで指摘されたことを しっかり納得して反映していけばいい • いろいろ教えてもらえるいいチャンス!
  • 10. © 2020 NTT DATA Corporation 10 #javajo 英語つらい… • 便利サイトに頼ってみる • 英辞郎: https://www.alc.co.jp/ • Google翻訳: https://translate.google.co.jp/ • 外国の開発者は理解しようとしてくれる • 困ったらコードを引用すればいい • テキストベースのコミュニケーションならイケる! • 会話じゃないからリアルタイム性は求められない • コメント文の表現とかはレビュー時に直してくれる!
  • 11. © 2020 NTT DATA Corporation 11 #javajo OSS活動やってみる! その前に…
  • 12. © 2020 NTT DATA Corporation 12 #javajo 必要なことをチェックしておこう • 報告、提案、議論の出し方 • GitHub Issue、Google Groups、メール、etc… • 公式リポジトリ • GitHubがオフィシャルとは限らない • 同意書の要否 • CLA(Contributor License Agreement)と呼ばれるもの • 企業発OSSはCLAを求めることが多い(気がする) • その他、コミュニティの「流儀」 • (GitHubプロジェクトなら)基本的なことはREADME.mdや CONTRIBUTING.mdに書いてあることも
  • 13. © 2020 NTT DATA Corporation 13 #javajo OSS活動やってみる! ~OpenJDKの場合~
  • 14. © 2020 NTT DATA Corporation 14 #javajo OpenJDK • https://openjdk.java.net/ • オープンソースなJava実装 • Sun JDK(Oracle買収前)がオープンソースになった • ライセンスはGPLv2 Classpath Exception • 様々な会社がOpenJDKのビルドを出している • Red Hat、Amazon、SAP、etc… • コミュニティとしてオフィシャルのバイナリは出していない • 最近のJavaのリファレンス実装的なもの • Oracle JDKもOpenJDKがベース • なにかと話題のGraalVMのベースにもなっている
  • 15. © 2020 NTT DATA Corporation 15 #javajo コントリビューター視点でのOpenJDKの特徴 • コード管理がMercurial • http://hg.openjdk.java.net/ • GitHubはクローン(2020/02現在) • IssueやPull Requestを現時点では受け付けていない • GitHubへの移行を検討中ではある 画面左側のリンクから各プロジェクトのリポジトリを参照する
  • 16. © 2020 NTT DATA Corporation 16 #javajo コントリビューター視点でのOpenJDKの特徴 • バグ管理はJIRA • https://bugs.openjdk.java.net/ • コミュニティでの権限がないと書き込み不可
  • 17. © 2020 NTT DATA Corporation 17 #javajo コントリビューター視点でのOpenJDKの特徴 • 議論がML • https://mail.openjdk.java.net/ • 出し先を自分で気を付けなければいけない • 不適切な場合でも、受け取った人が正しいところへ CCしてくれることがよくある とにかく数が多い! (ARCHIVED(新規投稿不可)も残されている)
  • 18. © 2020 NTT DATA Corporation 18 #javajo コントリビューター視点でのOpenJDKの特徴 • コントリビューションには OCA(Oracle Contributor Agreement)の提出が必要 • 議論するだけなら不要
  • 19. © 2020 NTT DATA Corporation 19 #javajo OpenJDKコミュニティの人たち Project Lead Reviewer Committer Author Contributor ※上位者は下位者の権限を継承する
  • 20. © 2020 NTT DATA Corporation 20 #javajo Contributor • パッチを出す人 • レビュー資材作成やPushに Sponsorの協力が必要 Project Lead Reviewer Committer Author Contributor https://openjdk.java.net/bylaws#contributor
  • 21. © 2020 NTT DATA Corporation 21 #javajo Contributorとしてパッチがコミットされると…
  • 22. © 2020 NTT DATA Corporation 22 #javajo Author • コミットを作れる人 • 以下へのアクセス権を持つ • バグ管理システム(JBS) • コードレビューサーバ • PushはSponsorに依頼 • hg exportコマンド • 2個以上の「ちゃんとした」 コミットを持つ人がProject Leadにメールするとなれる Project Lead Reviewer Committer Author Contributor https://openjdk.java.net/bylaws#author
  • 23. © 2020 NTT DATA Corporation 23 #javajo Committer • リポジトリにPushできる人 • Sponsorとして支援も可 • Submit Repoの利用権あり • 8個以上の「ちゃんとした」 コミットを持つ人が投票で 役割を与えられる • 必ずしも Authorである必要はない Project Lead Reviewer Committer Author Contributor https://openjdk.java.net/bylaws#committer
  • 24. © 2020 NTT DATA Corporation 24 #javajo Reviewer • 修正のレビューをする人 • Reviewerの同意がないと、 超緊急なパッチでも Pushしてはいけない • 32個以上の 「ちゃんとした」コミット を持つCommitterが投票で 役割を与えられる Project Lead Reviewer Committer Author Contributor https://openjdk.java.net/bylaws#reviewer
  • 25. © 2020 NTT DATA Corporation 25 #javajo Project Lead Project Lead Reviewer Committer Author Contributor • OpenJDK配下の 開発プロジェクトリーダー • 開発の方向性や活動に 責任を持つ • プロジェクト毎に1人 • たまに人が代わる https://openjdk.java.net/bylaws#project-lead
  • 26. © 2020 NTT DATA Corporation 26 #javajo パッチがマージされるまで
  • 27. © 2020 NTT DATA Corporation 27 #javajo ネタ発見! JBSに登録 パッチを作る Submit Repoでテスト コードレビューサーバへUp MLでレビュー コミット プッシュ (バックポート) 基本的な流れ パッチづくり&改善 (繰り返し) 修正する
  • 28. © 2020 NTT DATA Corporation 28 #javajo JBSに登録 基本的な流れ:問題・改善の登録 • まずはチケット番号を取る • JDK-xxxxxxxの形式 • Author以上でないと JBSに書き込めない • Contributorはここから Sponsorが必要 • つまり、何か見つけた時点で MLで議論する必要がある
  • 29. © 2020 NTT DATA Corporation 29 #javajo 基本的な流れ:パッチづくりからレビューまで • パッチを作ったら Submit RepoへPush • Committer以上が使える • パッチを コードレビューサーバへUp • webrev形式 • 修正箇所に関連する議論を行う MLへレビュー依頼を送信 • 最低でもReviewer×1以上の 同意をもらうまでサイクルを繰り返す パッチを作る Submit Repoでテスト コードレビューサーバへUp MLでレビュー
  • 30. © 2020 NTT DATA Corporation 30 #javajo Submit Repo • 絶対にコケてはいけないテストを 自動で行ってくれるリポジトリ • http://hg.openjdk.java.net/jdk/submit • 試験対象はOracle JDKがサポートするプラットフォーム • Linux x64、Solaris SPARC V9、Windows x64、macOS • レビューはSubmit Repoのテストが終わってから 回すのがマナー • 試験結果はメールで返ってくる
  • 31. © 2020 NTT DATA Corporation 31 #javajo Submit Repoの結果メール 失敗している場合 成功している場合
  • 32. © 2020 NTT DATA Corporation 32 #javajo コードレビューサーバ • http://cr.openjdk.java.net/~<ユーザー>/ • Author以上が利用できる • OpenJDKのパッチレビューは webrevをここへUpすることで行われる • webrev: OpenJDKコミュニティのレビューフォーマット
  • 33. © 2020 NTT DATA Corporation 33 #javajo webrev
  • 34. © 2020 NTT DATA Corporation 34 #javajo 基本的な流れ:修正の反映 • Committer以上の仕事 • レビューでOKが出たら コミットしてPushする • バックポートすべき修正は JBSでリクエストを作る • 基本的にはJBSチケットに ラベルを付け、理由等を 書き込むだけ コミット プッシュ (バックポート)
  • 35. © 2020 NTT DATA Corporation 35 #javajo バックポートの例 ① jdk<バージョン>-fix-requestラベルをつける ② バックポートしたい理由や テストについてコメント欄に書く ③ jdk<バージョン>-fix-yesラベルが ついたらバックポートOK
  • 36. © 2020 NTT DATA Corporation 36 #javajo OpenJDKはじめの一歩
  • 37. © 2020 NTT DATA Corporation 37 #javajo コントリビューターとしてのパッチ提案の流れ 1. OCAを提出する 2. 問題と、それを修正するパッチを メール本文にベタ書きしたものを議論対象のMLに流す 3. 修正にポジティブな感触なら(まだいなければ) Sponsorの募集とJBSへの登録をお願いする 4. コメントを反映してはパッチ送って…を繰り返す – Sponsorとの共同作業 5. Sponsorに完成版パッチをPushしてもらう
  • 38. © 2020 NTT DATA Corporation 38 #javajo ネタを見つけるコツ
  • 39. © 2020 NTT DATA Corporation 39 #javajo 再掲:使うからこそ思うこと • こうだったらもっと使いやすいのに • この部分、こう書きかえればもっとよく動くんじゃ? • ここの動き、ヘンじゃね? • このマニュアルわかりにくい 実はこれこそがネタ! ※感じ方には個人差があります
  • 40. © 2020 NTT DATA Corporation 40 #javajo ネタは日々の生活の中に • プログラマの人 • 使いにくい、動きがヘン、ドキュメントが間違ってる • 運用の人 • 安定性、メトリクスのとりやすさ • トラブルシューターの人 • デバッグのしやすさ、バグ修正
  • 41. © 2020 NTT DATA Corporation 41 #javajo starterラベル • コントリビューションのはじめの一歩 • 他コミュニティでも同様の仕組みがあることも • たまに高難度なものが混ざっているので、注意!
  • 42. © 2020 NTT DATA Corporation本資料に記載されている会社名、商品名、又はサービス名は、各社の登録商標又は商標です。