Upgrade to Pro — share decks privately, control downloads, hide ads and more …

はじめての OSS コントリビューション 〜小さな PR が世界を変える〜

Avatar for Chihiro Ito Chihiro Ito
November 15, 2025

はじめての OSS コントリビューション 〜小さな PR が世界を変える〜

Avatar for Chihiro Ito

Chihiro Ito

November 15, 2025
Tweet

More Decks by Chihiro Ito

Other Decks in Technology

Transcript

  1. 伊藤ちひろ (Chihiro Ito) 技術営業@ Red Hat OpenJDK コミッタ Quarkus コントリビュータ

    日本Javaユーザグループ 幹事   : @chiroito 自己紹介 Profile 2
  2. たとえば、空白を2文字追加するような修正でもOK 9 OpenJDK : Missing spaces in log message during

    heap expansion https://hg.openjdk.org/jdk10/jdk10/hotspot/rev/82e8b5c2c090
  3. たとえば、空白を2文字追加するような修正でもOK 10 OpenJDK : Missing spaces in log message during

    heap expansion https://hg.openjdk.org/jdk10/jdk10/hotspot/rev/82e8b5c2c090 修正したコード テストコード
  4. 12 OSSの開発者向けの内 部資料や、ユーザ向け の外部資料がある。 OSSのコード。実行する 環境によって、異なる コードが動くこともある。 コード ドキュメント コードのビルドや、コード

    を修正するのに便利な ツールなどがある 開発ツール OSSのテストコード。テス トを実行する環境によっ て、実行するテスト内容 が違うこともある テストコード 貢献の対象 対象はコードだけではなく、なんでも良い
  5. どんな貢献ができるのか 13 種類と対象を組み合わせると、いろいろな貢献が考えられる カテゴリ 例 コードのバグ修正 既存バグを修正 自分で発見したバグを修正 テストのバグ修正 Windowsなど特定の環境で失敗するテストを修正

    コード改善 不親切なエラーメッセージを分かりやすいものに改善 開発ツール改善 内部ツール(shell)をWindows Subsystem for Linuxに対応 ドキュメント改善 サンプルソースコードの不足部分を追加
  6. 例:ドキュメントの改善 14 Quarkus : Add more detail code and procedures

    on hibernate-orm-panache doc https://github.com/quarkusio/quarkus/pull/31364 既存のドキュメントが、QuarkusとJPAに精通していないと難しかったので補足 • 省略されたインポートを追加 • 手順を守ると違う結果になるため、コメントを追記
  7. 例:ドキュメントの改善 15 Quarkus : Add more detail code and procedures

    on hibernate-orm-panache doc https://github.com/quarkusio/quarkus/pull/31364 サンプルコードを修正 コメントを追加
  8. 例:WSLでIntellij IDEA対応 16 OpenJDK : idea.sh script doesn't work on

    WSL 1 and 2 https://bugs.openjdk.org/browse/JDK-8250818 IntelliJ IDEAで開発するためのスクリプトが WSLでは動かなかったので修正
  9. 例:WSLでIntellij IDEA対応 17 OpenJDK : idea.sh script doesn't work on

    WSL 1 and 2 https://bugs.openjdk.org/browse/JDK-8250818
  10. 例:エラーメッセージ改善 18 OpenJDK : Error messages are confusing when options

    conflict in -XX:StartFlightRecording https://bugs.openjdk.org/browse/JDK-8288783 https://github.com/openjdk/jdk/pull/9302 エラーメッセージが不親切だったので、具体的にどれが問題なのかを出力するように修正
  11. 例:エラーメッセージ改善 19 OpenJDK : Error messages are confusing when options

    conflict in -XX:StartFlightRecording https://bugs.openjdk.org/browse/JDK-8288783 https://github.com/openjdk/jdk/pull/9302 コードは省略 修正前: Duplicates in diagnostic command arguments 修正後: Options name, disk and filename can only be specified once with -XX:StartFlightRecording
  12. 22 https://openjdk.org/bylaws https://openjdk.org/projects/ 一定サイズ以上のPRを 32以上したのち、他のレ ビュアから投票 Reviewer レビュア 一定サイズ以上のPRを 8つ以上したのち他のコ

    ミッタから投票 Contributor コントリビュータ Committer コミッタ 役割が定義されていることもある 一定サイズ以上のPRを 2つ以上したのち申請 Author オーサー OpenJDKの場合は、3つの役割が定義されている OpenJDKの開発者
  13. 25 どのOSSをやればいいの? 自分が一番興味のあるものを探してみましょう Javaに関連するOSSの例: Javaは、OpenJDK / GraalVM / OpenJ9 など

    Jakarta EEは、WildFly / Glassfish / Open Liberty など フレームワークは、 Quarkus / Micronaut / Spring など ライブラリならたくさんあります
  14. コミュニティ文化とやり取り 30 AIを駆使して、英語を理解し、良い感じの英語を作ってもらおう ▸ OSSの会話は「テキスト文化」 ・ 翻訳や AI を活用する ▸

    感謝の気持ちを忘れない ・ 何かしてもらったら「ありがとう」を伝える ▸ Reviewで落とされてもケンカ腰にならない ・ 成長の機会として、何がダメなのかをきちんと受け取る ▸ レビュアは敵ではない。 ・ 味方になるようにコミュニケーションを取る
  15. いつやってるの? 33 趣味の時間は非常に貴重なので無駄にはしない 日 本 +9 am pm 0 1

    2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 趣味の時間 寝る時間 家事などの時間 仕事の時間 • 仕事をすぐに終わらせる • あとで振り返りやすいようにメモを取る • 移動時間はGitHubで調べ物、ChatGPTに相談、メモを振り返る
  16. 有識者が活動してる時間を活用 34 時差を活用して相談する 日 本 +9 E U +1 N

    Y -5 S F -8 am pm 0 1 2 3 4 5 6 7 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11 EUと米国東海岸の人 たちとチャット 米国西海岸の人たちと チャット 趣味の時間 寝る時間 家事などの時間 仕事の時間 ここで質問を 投げて寝る
  17. 同じことを繰り返さない 35 1回でうまくいくことなんてほとんどないが、同じ失敗はしないようにする 同じ事を繰り返したり、何をしてるか分からない時間を避ける 以下をメモしておく ▸ 調べた情報をコピペしてまとめておく ▸ 気になったAPIなどは全てメモ ▸

    まずは複数の実装案を洗い出し ▸ どう実装したらどうなったか(成功?失敗?) ▸ 失敗ならなにが問題と考えられるか 実装案が尽きた場合は、上記内容をAIに渡して、新たな視点をもらう 万策尽きたら有識者に相談して、新たな視点をもらう メモの例
  18. ビルドを時短する 36 十分なリソースを割り当てつつも、無駄な処理を実行しない ビルドしたいモジュールが依存するものだけを対象 mvn install -pl ビルドしたいモジュールまでのパス -am 全体のビルドが失敗した後に失敗したところからやり直す

    mvn install -rf :ビルドを再開したいモジュール テストのコンパイルと実行を省略 mvn install -Dmaven.test.skip=true OSSが提供している省略オプション(例:Quarkus) mvn install -Dquickly 全CPUコアを使ってほしいので、 MAVEN_OPTS環境変数に -T 1C を設定
  19. コミュニケーション 38 事実を箇条書きにしてAIに渡し、文を書いてもらう ▸ 事実と予想を分ける ▸ 主語と目的語を明確にする ▸ 複文にせず短文で書く ▸

    能動態と受動態を明確にする あとはAIに良い感じの英語を作ってもらう。 返事がきたらAIに渡して上記を繰り返す。 GitHub AI