SlideShare a Scribd company logo
© 2022 NTT DATA Corporation
OSSプロジェクトへのコントリビューション はじめの一歩を踏み出そ
う!
- ちょいちょいApache Sparkの紹介をはさみながら -
2022/3/11
株式会社NTTデータ 技術開発本部
猿田 浩輔
オープンソースカンファレンス2022 Online/Spring
2
© 2022 NTT DATA Corporation
$ whoami
 猿田 浩輔
 株式会社NTTデータ 技術開発本部
 Apache Sparkコミッタ & PMCメンバ
 Hadoop/Sparkなど、OSSミドル関連のR&Dや技術支援
 普及活動の一環で講演や書籍執筆なども
 Twitter: @raspberry1123
3
© 2022 NTT DATA Corporation
こんなチームメンバがいるところで働いています
Apache Hadoopコミッタ
• Hadoopの継続的な品質改善
• HTrace のモジュール開発
• HDFSにトレーシング機能を追加
• Hadoop→PostgreSQL高速ロード対応
• 非同期レプリケーションの実現
• 同期レプリケーションの実現
• カスケードレプリケーションの実現
• pg_bigm(全文検索モジュール)の開発
岩崎 正剛
Apache Sparkコミッタ
Apache Bahirコミッタ
• Spark内部タスクの可視化
(Timeline Viewer)
• Sparkメトリクス機能改善
• SparkとYARNの連係動作の改善
猿田 浩輔
PostgreSQLコミッタ
藤井 雅雄
Apache BigTop PMC コミッタ
Apache Yetus PMC/コミッタ
Apache Airflow コミッタ
Apache Thrift コミッタ
関 堅吾
• JVMデバッガの改善、拡充
• JVM運用機能の改善、拡充
• JVMロギング機能の改善
• HeapStatsの開発
末永 恭正
OpenJDK レビュワー
IcedTea コミッタ
阪田 浩一
Java Champion
今喋ってる人
4
© 2022 NTT DATA Corporation
本日のお話 - OSS開発プロジェクトに参加してみよう! -
 OSSをただ使うだけなのはもったいない!
 開発コミュニティと関わることで、OSSのメリットをもっと享受できる。
 情報収集
 開発への参加
 これまでいくつかのOSS開発プロジェクトに関わってきた経験を基に、OSSのメリットを活かし
た、開発プロジェクトとの関わり方をご紹介
© 2022 NTT DATA Corporation
情報収集してみよう
6
© 2022 NTT DATA Corporation
情報収集
 コミュニティと関わることで得られる情報がある
 開発動向
 不具合などの情報
 使っていて困ったことを共有/質問できる
 情報収集の仕方も色々
 メーリングリストやフォーラム、Slackの活用
• コミュニティが運営しているものや、ユーザ会が運営しているものもある
• ユーザ向けのものと、開発者向けのものが分けられている場合は用途に応じて使
い分ける
• 開発者向けのものであっても、コミッタ以外でも参加できるものが多い
 イベントへの参加
 GitHubやJIRAなどから不具合の情報を収集したり、開発状況を覗いてみる
7
© 2022 NTT DATA Corporation
イベントへの参加
 メジャーなOSSだと、日本でもユーザ会があることが多く、ユーザ会主導のイベ
ントなども開催されている
 日本〜ユーザ会や日本〜ユーザグループなど
 イベントはconnpassやTECH PLAYなどで探せば色々見つかる
• https://connpass.com
• http://techplay.jp
 大きなOSSプロジェクトだと、世界規模の年次イベントが開催されるものもあ
る
 世界中のユーザや開発者と繋がりを作る機会
 昨今はオンラインかつ無料で参加できるイベントも増えてきており、参加
のハードルが下がった印象
 言語的なハードルは頑張って飛び越える必要はある・・・
8
© 2022 NTT DATA Corporation
突然の宣伝: Spark関連のイベント(Data + AI Summit)のご紹介
 Sparkコミュニティ最大のイベント
 2013年から始まるイベント。当時の名称はSpark Summit
 世界中の開発者やユーザや開発者が一堂に会して、ユースケースや最新動向などが発表
される(2020年6月からはオンラインでの実施)
 直近開催されたのはDATA + AI Summit 2021
 F2Fで開発者と議論やコネクションづくりができる機会でもある
 割と大きめの機能追加などを考えているのであれば、F2Fだと話が早かったり
 2020年からはオンライン開催になったが、コミュニケーションがとりやすいプラットフォー
ムが活用されており一方通行にならないようにイベントが運営されている
 次回は6/27 - 6/30 (PDT)開催のDATA + AI Summit 2022
 リアル / オンラインのハイブリッド開催
 https://databricks.com/dataaisummit
© 2022 NTT DATA Corporation
開発に貢献してみよう
10
© 2022 NTT DATA Corporation
開発者としてコミュニティに関わる意義やモチベーション
 開発に関わることで、自分たちが使うものをよりよく育てることにつながる
 日本人の感覚(品質や細かい部分の作りこみ)を自分たちが使うOSSの改善に活か
してほしい
• 安定性、運用のしやすさや、いざという時のトラブルシュートのしやすさなど
 コミュニティに向かって声を上げないと伝わらない
• 必要なものは必要だと伝えることが大事
 パッチがマージされるとリリースノートにクレジットされるプロジェクトもある
11
© 2022 NTT DATA Corporation
開発者としての参加の仕方もいろいろ
 開発に参加する方法はパッチ投稿だけじゃない!
 不具合の報告や機能追加提案、改善提案なども立派な貢献
• 自分たちでパッチを書かなくても、登録するだけでもよい
• 声を上げることが大事(ただし機能追加や改善提案の場合は必然性もセットで)
• ただし、脆弱性の報告は適切な手順を踏むべし
• 報告は必要だがいきなり公開しない
• プロジェクトごとに手順が定められていることが多い。わらなければ報告の仕方
を聞いてみるのがよい
 パッチのレビュー
 メーリングリスト/フォーラム/Slack上での議論への参加
• コミッタ以外でも議論に参加できるプロジェクトは多い
• ユーザ視点からの意見はプロダクトの改善にとって重要
12
© 2022 NTT DATA Corporation
パッチを寄贈して開発に貢献する
 バグ修正 / 機能追加 / ドキュメントの修正などを行い、パッチをコミュニティに還元しよう
 秘蔵のパッチを適用し続けたOSSを運用し続けるメリットはあまりない
 メインストリームから乖離する
• それ、全部自分たちで保守し続けるんですか?
• 秘蔵パッチを当てたバイナリでトラブルが起こっても、コミュニティの人たちは普
通は面倒を見てくれない・・・
• マージコンフリクトだらけでバージョンアップが困難になる
• いつのまにかバージョンアップ不能なほどつぎはぎだらけに・・・
 パッチの品質
• 場当たり的なパッチ (当面の問題は解決しているが、別の部分に悪影響をもた
らしているかも・・・?)
• コミッタを含む、コミュニティの人たちからレビューを受けたほうが良い
13
© 2022 NTT DATA Corporation
そうは言っても参加のハードルが高いのでは?
 でも、パッチを投稿しようにもコードとか書けないし・・・。
 ドキュメントの修正やブラッシュアップのパッチならコードが書けなくても大丈夫
 やりとりは英語なんでしょ?
 世界中で使われているOSSだと英語が共通言語なことが多い・・・。でも大丈夫。意
外と通じる!
 マサカリとか飛んでくるんじゃないかと・・・
 プロジェクトごとに厳しさの濃淡はあるかもしれませんが・・・
 コードレビューでおびただしい指摘を受けることもあるが、多くの場合は紳士的にコード
やアプローチの良し悪しについての指摘に閉じている
 間違えても大丈夫
 手順やお作法がありそれに則って進めるべきだが、間違えていたら教えてくれる
 パッチを寄贈してみたいがネタがない・・・という場合は?
 誰でも実践できる、ネタ探しのヒントを次のページからお伝えします
© 2022 NTT DATA Corporation
明日から誰でも実践できる
パッチネタの見つけかた
15
© 2022 NTT DATA Corporation
パッチを寄贈する前に
 最低限必要なこと
 対象となるOSSを自分で動かせる
• コード修正後の動作確認や、バグの再現など、色々な局面で動かす必要が出
てくる
 自分でビルドできる
• ビルドできないことには、コンパイルが通るか確認できない
• 大抵の場合、リポジトリに開発者向けのREADMEや、公式Webサイトの開発
者向けページに手順が記載されている
 パッチの投稿手順を確認しておく
 プロジェクトごとにお作法が定められていることが多いので、パッチを投稿する前に確
認しておくべし
 プロジェクトのWebサイトでコントリビュータ向けの説明されていたり、ソースツリーのトッ
プにCONTRIBUTION.mdなどわかりやすいテキストがあることが多い。
16
© 2022 NTT DATA Corporation
明日から誰でもできる、パッチネタ発見のヒント
1. ドキュメントやソースコードを読んで動かしてみる
2. オープンになっている問題に挑戦する
3. 依存ライブラリをメンテナンスする
4. 真似してみる
5. 新しい実行環境やビルド環境をサポートするタイミングで発生するタスクを手分けして解決
6. Flakyなテストに立ち向かう
17
© 2022 NTT DATA Corporation
ドキュメントやソースコードを読んで動かしてみる
 対象となるOSSをよく知るという意味でも、最初のステップとしておすすめ
 動かしてみると、ドキュメントの内容と異なる挙動をしたり、Exampleが動かないというケー
スもある
 ドキュメントが追いついていないことは割とありがちな印象
 ソースコードを見てみたら、ドキュメントにない機能が実装されていることに気づくこがある
 新しい機能や、相対的にあまり使われていない機能は、不具合が見つかりやすい傾向が
ある
 まだ荒削りな部分が残っている可能性がある
 新しい機能はリリースノートなどで確認すべし
 中には実験的に追加された機能であることが明記されている場合もあるので、そう
いった情報から安定性を推し量ることもできる
18
© 2022 NTT DATA Corporation
オープンになっている問題に挑戦する
 報告されているが、誰も解決に着手していない問題(オープンな問題)を探して取り組む
 報告されている内容から、「本当に問題か」判断できるとよい
 単にユーザが使い方を間違えていたり、新しいバージョンでは解決していることもある
 報告した人物のプロファイルから、問題の確度を推し量ることもできる
• コミッタ
• 熱心なコントリビュータ
• 使い倒しているユーザ
 プライオリティはわかることが多いが、実装難易度は読み取りづらいこともある
 対象となるOSSの実装レベルでの理解が深まると、内容から難易度を読み取る「嗅
覚」が養われる
 報告されている問題を、自分の環境で再現できるスキルは必要
19
© 2022 NTT DATA Corporation
依存ライブラリをメンテナンスする
 巨大なOSSプロジェクトでは、さまざまなライブラリに依存していることが多いため、これらのメ
ンテナンスも必要
 依存ライブラリに次のようなアップデートがあった場合はバージョンアップの検討の余地がある
 プロジェクトが依存しているバージョンがEOLになっている場合
 プロジェクトに有用な新機能が追加されたバージョンがリリースされた場合
 プロジェクトが影響を受けるバグフィックスが適用されたバージョンがリリースされた場合
 依存ライブラリにCVEが報告され、対策済みのバージョンがリリースされている場合
 CVEの情報収集の仕方
 オフィシャルには各ライブラリ開発プロジェクトやMITREからのアナウンスがある
 他のOSSプロジェクトが脆弱性脆弱性対策をしているのを見て気づくこともある
 そのほかTwitterなど色々な情報ソースから把握できる
20
© 2022 NTT DATA Corporation
真似してみる
 他の人が寄贈したパッチを真似してみる
 GitHubのプルリクエストやメーリングリストに投稿されたパッチなど、日頃から観察した
り、レビューに参加するとよい
 似ている部分に対するパッチも真似しやすい
• 複数の言語バインディングやファイルフォーマット、JDBCドライバなどをサポートして
いる場合など
• 各言語でのAPIカバレッジを向上させたり、どのファイルフォーマットでも同じ
ユーザビリティを達成する
 その他、気づかなかった貢献の仕方が見つかることもある
 他の似ているプロダクトを真似してみる
 例えばSQLをサポートしているプロダクトであれば、ANSI Standardで定義されてい
る構文やビルトイン関数のサポートなど
 標準ではないものの、他のDBMSでサポートされている便利なビルトイン関数のサ
ポートなど
21
© 2022 NTT DATA Corporation
新しい実行環境やビルド環境をサポートするタイミングで発生するタスクを手分けして解決
 新しい実行環境やビルド環境をサポートするにあたっては、やることが山ほどあることが多い
 例えばHadoopではJava9でのビルドをサポートする過程で大量のタスクが発生した
 Java9からモジュール機構が導入されたり、許容されない変数名など非互換が少な
くなかったため、移行は大変だった模様
 Sparkでも、Java11やScala 2.13での実行をサポートするのは一苦労だった
 Scala 2.12から2.13にかけて、コレクションライブラリ周りで互換性を壊す変更が加
えられたため、Sparkがわも変更が必要な箇所が多かった
 今後Scala 3対応でも苦労しそうな予感
 今だとJava 17対応を進めているプロジェクトも出てきた
 Sparkでも着々と進めている
 やることが多いので、機会を見逃さなければ貢献できるチャンス
 タスクの一部を引き受けることで貢献する
22
© 2022 NTT DATA Corporation
Flakyなテストに立ち向かう
 Flakyなテストとは?
 大抵はパスするが、たまに失敗するテスト
 再実行するとパスしたりするので厄介
 CIが健全な状態にならないので、Flakyなテストが多いとプロジェクト的には困る
 GitHubでホストされているプロジェクトだと、ビルドステータスが×になっているコミットに注目
する
 当該コミットでの修正とは関係のないテストが失敗している場合はflakyな臭い
 (いつもそうとは限らないが)マルチスレッド/マルチプロセス絡みの競合に起因していることが
多い印象
 Flakyな挙動の原因になっているのはテストそのものの場合もあれば、本体のコード
の場合もある。
 どのようなメカニズムでテストが失敗するのか把握し、適切なツールの活用を活用して
粘り強く解決する
23
© 2022 NTT DATA Corporation
より円滑に進めるために
 開発に関わっている人たちを知る
 コミッタ
 アクティブなコントリビュータ
 使い倒しているユーザ
 粘り強さも重要
 議論が長期化す場合や、バグの再現に苦労する場合もあるが、「考えながら」粘り
強くやり遂げる
 バグフィックスや機能開発をするのであれば、デバッグ手段は色々持っておくと便利
 デバッガ
 パケットキャプチャ
 リソース統計収集ツール
© 2022 NTT DATA Corporation
コミュニケーションの仕方や
コミュニティでのふるまい方
25
© 2022 NTT DATA Corporation
英語でのコミュニケーション
 メジャーなOSS開発プロジェクトでの公用語は英語であることが多いが、意外と簡単な英
語でも通じる!
 私も英語は苦手だが、なんとか(?)やれている・・・。
 語順と時制が合っていれば大体通じる
 時制の間違いも、特に混乱をきたさない場合は大体空気を読んでくれる
 複雑なことを説明する際無理に長い文章にせず、箇条書きに
すると伝わりやすい
 他人が使っているフレーズをまねるのもよし
 GitHubや上での議論やメーリングリストでのやりとり
 もし自分の理解が怪しい時には、素直に確認すればOK
 You mean 〜 right? (〜ってこと?)
 Could you elaborate on that? (詳しく説明してもらえますか?)
 とはいえ、英語上達の努力を怠ってはいけない・・・
26
© 2022 NTT DATA Corporation
(余談) GitHubやJIRA上でよく見かける略語
略語 元々の表現 意味 シチュエーション
LGTM / SGTM Looks / Seems good
to me
よさそうです パッチやアイディアなどに
ついてのコメント。主にレ
ビュアーやコミッタが使う
IMO / IMHO In my (humble)
opinion
私の考えでは〜 議論の中で使われる。
意見が対立した時など
FYI For your information 補足情報など
AFAIK As far as I know 知る限り〜 わりとどこでも
BTW By the way ところで 話題転換
a.k.a Also known as 〜としても知られていま
す
わりとどこでも
更に知りたい方はこちら(Spark界隈ではお目にかかったことが無いものもありますが・・・)
http://qiita.com/uasi/items/86c3a09d17792ab62dfe
27
© 2022 NTT DATA Corporation
コミュニティと関わる上で気をつけた方が良いこと
 いきなり巨大なパッチを投稿しない
 レビューする人も大変
 分割できるものは分割したり、大きな機能は事前にMLで議論するのが良い
 実効的な影響のない変更を加えるパッチは避ける(意外とある)
 例えば変数名のタイポや無駄なimport文の除去など・・・
 何かの修正のついでに一緒に直したりするのがよい
 ユーザの目に触れるような、ドキュメントのタイポ修正は受け入れられるはず
 他人を罵倒しない
 粗悪なコードを憎んで人を憎まず。客観的に、コードのどの部分がどうよくないのか、ど
う修正した方が良いのか指摘するとOK
 あまり見たことないが・・・
© 2022 NTT DATA Corporation
まとめ
29
© 2022 NTT DATA Corporation
まとめ
 OSSは使うだけでなく、コミュニティに参加することでさらにメリットを享受できる
 情報収集
 開発への参加
 情報収集の手段としてコミュニティに関わることもできる
 メーリングリスト/フォーラム/Slack
 イベントの参加
 開発への参加の仕方もいろいろある
 不具合の報告や要望の提案
 開発の議論への参加
 パッチの寄贈
 誰でも明日から実践できる、パッチネタの見つけ方もある
 日本からもっとOSSへのコントリビューションを・・・!
© 2022 NTT DATA Corporation
本資料に記載されている会社名、商品名、又はサービス名は、各社の登録商標又は商標です。

More Related Content

PDF
PostgreSQL 15 開発最新情報
Masahiko Sawada
 
PDF
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
NTT DATA Technology & Innovation
 
PDF
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
NTT DATA Technology & Innovation
 
PDF
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
NTT DATA Technology & Innovation
 
PPTX
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
NTT DATA Technology & Innovation
 
PDF
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
NTT DATA Technology & Innovation
 
PPTX
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
NTT DATA Technology & Innovation
 
PPTX
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL 15 開発最新情報
Masahiko Sawada
 
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
NTT DATA Technology & Innovation
 
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
NTT DATA Technology & Innovation
 
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発...
NTT DATA Technology & Innovation
 
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
NTT DATA Technology & Innovation
 
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 

What's hot (20)

PDF
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PPTX
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
NTT DATA Technology & Innovation
 
PDF
BuildKitの概要と最近の機能
Kohei Tokunaga
 
PDF
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
NTT DATA OSS Professional Services
 
PPTX
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
NTT DATA Technology & Innovation
 
PPTX
世の中のPostgreSQLエンジニアのpsql設定(第34回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PDF
コンテナにおけるパフォーマンス調査でハマった話
Yuta Shimada
 
PDF
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
NTT DATA Technology & Innovation
 
PDF
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
NTT DATA Technology & Innovation
 
PDF
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
Preferred Networks
 
PDF
20180729 Preferred Networksの機械学習クラスタを支える技術
Preferred Networks
 
PDF
なぜ貴方のモダナイゼーションは評価されないのか ~傾向と対策~ (CloudNative Days Tokyo 2022 発表資料)
NTT DATA Technology & Innovation
 
PDF
Oracle GoldenGate入門
オラクルエンジニア通信
 
PDF
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
Hironobu Suzuki
 
PPTX
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
NTT DATA Technology & Innovation
 
PDF
コンテナの作り方「Dockerは裏方で何をしているのか?」
Masahito Zembutsu
 
PDF
分散トレーシング技術について(Open tracingやjaeger)
NTT Communications Technology Development
 
PDF
HAクラスタで PostgreSQLレプリケーション構成の 高可用化
Takatoshi Matsuo
 
PPTX
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
NTT DATA Technology & Innovation
 
PPTX
PostgreSQL 14 モニタリング新機能紹介(PostgreSQL カンファレンス #24、2021/06/08)
NTT DATA Technology & Innovation
 
統計情報のリセットによるautovacuumへの影響について(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
NTT DATA Technology & Innovation
 
BuildKitの概要と最近の機能
Kohei Tokunaga
 
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
NTT DATA OSS Professional Services
 
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
NTT DATA Technology & Innovation
 
世の中のPostgreSQLエンジニアのpsql設定(第34回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
コンテナにおけるパフォーマンス調査でハマった話
Yuta Shimada
 
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
NTT DATA Technology & Innovation
 
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
Preferred Networks
 
20180729 Preferred Networksの機械学習クラスタを支える技術
Preferred Networks
 
なぜ貴方のモダナイゼーションは評価されないのか ~傾向と対策~ (CloudNative Days Tokyo 2022 発表資料)
NTT DATA Technology & Innovation
 
Oracle GoldenGate入門
オラクルエンジニア通信
 
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
Hironobu Suzuki
 
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
NTT DATA Technology & Innovation
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
Masahito Zembutsu
 
分散トレーシング技術について(Open tracingやjaeger)
NTT Communications Technology Development
 
HAクラスタで PostgreSQLレプリケーション構成の 高可用化
Takatoshi Matsuo
 
CloudNativePGを動かしてみた! ~PostgreSQL on Kubernetes~(第34回PostgreSQLアンカンファレンス@オンライ...
NTT DATA Technology & Innovation
 
PostgreSQL 14 モニタリング新機能紹介(PostgreSQL カンファレンス #24、2021/06/08)
NTT DATA Technology & Innovation
 
Ad

Similar to OSSプロジェクトへのコントリビューション はじめの一歩を踏み出そう!(Open Source Conference 2022 Online/Spring 発表資料) (20)

PDF
SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~
NTT DATA OSS Professional Services
 
PPTX
レベル1エンジニア、最強コミッタに憧れコミュニティ活動を始める ~Apache Spark: 初めてのパッチ編~(Open Source Conferen...
NTT DATA Technology & Innovation
 
PDF
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
NTT DATA Technology & Innovation
 
PPTX
Let's Start Contributing to OpenJDK from Today!(Oracle Groundbreakers APAC Vi...
NTT DATA Technology & Innovation
 
PDF
Sparkコミュニティに飛び込もう!(Spark Meetup Tokyo 2015 講演資料、NTTデータ 猿田 浩輔)
NTT DATA OSS Professional Services
 
PPTX
大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発...
NTT DATA Technology & Innovation
 
PDF
せっかくのOSSなんだし、ソースコード読むよね? 〜Apache Kafkaを例にしたOSSソースコードリーディングの基本〜 (Open Source C...
NTT DATA Technology & Innovation
 
PDF
データが覗いたOpenStack Summit Vancouver
Kentaro Takeda
 
PDF
研究を基にしたオープンソース開発チェックポイント
Recruit Technologies
 
PDF
Hadoop ecosystem NTTDATA osc15tk
NTT DATA OSS Professional Services
 
PDF
分散処理基盤Apache Hadoop入門とHadoopエコシステムの最新技術動向 (オープンソースカンファレンス 2015 Tokyo/Spring 講...
NTT DATA OSS Professional Services
 
PDF
分散処理基盤Apache Hadoopの現状と、NTTデータのHadoopに対する取り組み
NTT DATA OSS Professional Services
 
PDF
脆弱性の探し方 ~発見と対応のノウハウ in NTTDATA~
apkiban
 
PDF
Osc 2021 fall_tis_変化に強いチーム育成のための取り組み紹介
Daisuke Ikeda
 
PDF
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...
NTT DATA Technology & Innovation
 
PDF
OpenCloudCampus : Cloud Technologies Meeting (OpenStack)
Masanori Itoh
 
PDF
OpenStackアップストリーム活動実践 中級
Takashi Natsume
 
PDF
PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PDF
20170303 java9 hadoop
NTT DATA OSS Professional Services
 
PPTX
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...
NTT DATA Technology & Innovation
 
SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~
NTT DATA OSS Professional Services
 
レベル1エンジニア、最強コミッタに憧れコミュニティ活動を始める ~Apache Spark: 初めてのパッチ編~(Open Source Conferen...
NTT DATA Technology & Innovation
 
OpenJDKのコミッタってどんなことしたらなったの?解決してきた技術課題の事例から見えてくる必要な知識と技術(JJUG CCC 2023 Spring)
NTT DATA Technology & Innovation
 
Let's Start Contributing to OpenJDK from Today!(Oracle Groundbreakers APAC Vi...
NTT DATA Technology & Innovation
 
Sparkコミュニティに飛び込もう!(Spark Meetup Tokyo 2015 講演資料、NTTデータ 猿田 浩輔)
NTT DATA OSS Professional Services
 
大規模データ処理の定番OSS Hadoop / Spark 最新動向 - 2021秋 -(db tech showcase 2021 / ONLINE 発...
NTT DATA Technology & Innovation
 
せっかくのOSSなんだし、ソースコード読むよね? 〜Apache Kafkaを例にしたOSSソースコードリーディングの基本〜 (Open Source C...
NTT DATA Technology & Innovation
 
データが覗いたOpenStack Summit Vancouver
Kentaro Takeda
 
研究を基にしたオープンソース開発チェックポイント
Recruit Technologies
 
Hadoop ecosystem NTTDATA osc15tk
NTT DATA OSS Professional Services
 
分散処理基盤Apache Hadoop入門とHadoopエコシステムの最新技術動向 (オープンソースカンファレンス 2015 Tokyo/Spring 講...
NTT DATA OSS Professional Services
 
分散処理基盤Apache Hadoopの現状と、NTTデータのHadoopに対する取り組み
NTT DATA OSS Professional Services
 
脆弱性の探し方 ~発見と対応のノウハウ in NTTDATA~
apkiban
 
Osc 2021 fall_tis_変化に強いチーム育成のための取り組み紹介
Daisuke Ikeda
 
Hadoop/Spark を使うなら Bigtop を使い熟そう! ~並列分散処理基盤のいま、から Bigtop の最近の取り組みまで一挙ご紹介~(Ope...
NTT DATA Technology & Innovation
 
OpenCloudCampus : Cloud Technologies Meeting (OpenStack)
Masanori Itoh
 
OpenStackアップストリーム活動実践 中級
Takashi Natsume
 
PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
20170303 java9 hadoop
NTT DATA OSS Professional Services
 
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...
NTT DATA Technology & Innovation
 
Ad

More from NTT DATA Technology & Innovation (20)

PDF
PostgreSQL18新機能紹介(db tech showcase 2025 発表資料)
NTT DATA Technology & Innovation
 
PDF
PGConf.dev 2025 参加レポート (JPUG総会併設セミナー2025 発表資料)
NTT DATA Technology & Innovation
 
PDF
Can We Use Rust to Develop Extensions for PostgreSQL? (POSETTE: An Event for ...
NTT DATA Technology & Innovation
 
PDF
つくって壊して直して学ぶ Database on Kubernetes (CloudNative Days Summer 2025 発表資料)
NTT DATA Technology & Innovation
 
PDF
2025年現在のNewSQL (最強DB講義 #36 発表資料)
NTT DATA Technology & Innovation
 
PDF
Java in Japan: A Journey of Community, Culture, and Global Integration (JavaO...
NTT DATA Technology & Innovation
 
PDF
Unveiling the Hidden Layers of Java Class Files: Beyond Bytecode (Devnexus 2025)
NTT DATA Technology & Innovation
 
PDF
論理レプリケーションのアーキテクチャ (第52回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PDF
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
NTT DATA Technology & Innovation
 
PDF
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
NTT DATA Technology & Innovation
 
PDF
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
NTT DATA Technology & Innovation
 
PDF
pgbenchのスレッドとクライアント (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PDF
PostgreSQLのgitレポジトリから見える2024年の開発状況 (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PDF
ストリーム処理はデータを失うから怖い?それ、何とかできますよ! 〜Apahe Kafkaを用いたストリーム処理における送達保証〜 (Open Source...
NTT DATA Technology & Innovation
 
PDF
生成AI時代のPostgreSQLハイブリッド検索 (第50回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PDF
DAIS2024参加報告 ~Spark中心にしらべてみた~ (JEDAI DAIS Recap 講演資料)
NTT DATA Technology & Innovation
 
PDF
PostgreSQLのHTAP適応について考える (PostgreSQL Conference Japan 2024 講演資料)
NTT DATA Technology & Innovation
 
PDF
静かに変わってきたクラスファイルを詳細に調べて楽しむ(JJUG CCC 2024 Fall講演資料)
NTT DATA Technology & Innovation
 
PDF
Gartnerも注目するグリーンソフトウェアの実現に向けて (Green Software Foundation Global Summit 2024 T...
NTT DATA Technology & Innovation
 
PDF
パーティションのATTACH時の注意ポイント (第49回PostgreSQLアンカンファレンス@東京 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL18新機能紹介(db tech showcase 2025 発表資料)
NTT DATA Technology & Innovation
 
PGConf.dev 2025 参加レポート (JPUG総会併設セミナー2025 発表資料)
NTT DATA Technology & Innovation
 
Can We Use Rust to Develop Extensions for PostgreSQL? (POSETTE: An Event for ...
NTT DATA Technology & Innovation
 
つくって壊して直して学ぶ Database on Kubernetes (CloudNative Days Summer 2025 発表資料)
NTT DATA Technology & Innovation
 
2025年現在のNewSQL (最強DB講義 #36 発表資料)
NTT DATA Technology & Innovation
 
Java in Japan: A Journey of Community, Culture, and Global Integration (JavaO...
NTT DATA Technology & Innovation
 
Unveiling the Hidden Layers of Java Class Files: Beyond Bytecode (Devnexus 2025)
NTT DATA Technology & Innovation
 
論理レプリケーションのアーキテクチャ (第52回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
NTT DATA Technology & Innovation
 
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
NTT DATA Technology & Innovation
 
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
NTT DATA Technology & Innovation
 
pgbenchのスレッドとクライアント (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLのgitレポジトリから見える2024年の開発状況 (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
ストリーム処理はデータを失うから怖い?それ、何とかできますよ! 〜Apahe Kafkaを用いたストリーム処理における送達保証〜 (Open Source...
NTT DATA Technology & Innovation
 
生成AI時代のPostgreSQLハイブリッド検索 (第50回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
DAIS2024参加報告 ~Spark中心にしらべてみた~ (JEDAI DAIS Recap 講演資料)
NTT DATA Technology & Innovation
 
PostgreSQLのHTAP適応について考える (PostgreSQL Conference Japan 2024 講演資料)
NTT DATA Technology & Innovation
 
静かに変わってきたクラスファイルを詳細に調べて楽しむ(JJUG CCC 2024 Fall講演資料)
NTT DATA Technology & Innovation
 
Gartnerも注目するグリーンソフトウェアの実現に向けて (Green Software Foundation Global Summit 2024 T...
NTT DATA Technology & Innovation
 
パーティションのATTACH時の注意ポイント (第49回PostgreSQLアンカンファレンス@東京 発表資料)
NTT DATA Technology & Innovation
 

Recently uploaded (11)

PDF
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
 
PDF
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
 
PDF
20250729_Devin-for-Enterprise
Masaki Yamakawa
 
PDF
LoRaWAN ウェザーステーションキット v3 -WSC3-L 日本語ユーザーマニュアル
CRI Japan, Inc.
 
PDF
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
 
PDF
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
 
PPTX
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
 
PDF
20250730_QiitaBash_LT登壇資料_PDC_Kurashina.pdf
pdckurashina
 
PDF
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
 
PPTX
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
 
PDF
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
 
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
 
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
 
20250729_Devin-for-Enterprise
Masaki Yamakawa
 
LoRaWAN ウェザーステーションキット v3 -WSC3-L 日本語ユーザーマニュアル
CRI Japan, Inc.
 
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
 
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
 
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
 
20250730_QiitaBash_LT登壇資料_PDC_Kurashina.pdf
pdckurashina
 
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
 
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
 
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
 

OSSプロジェクトへのコントリビューション はじめの一歩を踏み出そう!(Open Source Conference 2022 Online/Spring 発表資料)

  • 1. © 2022 NTT DATA Corporation OSSプロジェクトへのコントリビューション はじめの一歩を踏み出そ う! - ちょいちょいApache Sparkの紹介をはさみながら - 2022/3/11 株式会社NTTデータ 技術開発本部 猿田 浩輔 オープンソースカンファレンス2022 Online/Spring
  • 2. 2 © 2022 NTT DATA Corporation $ whoami  猿田 浩輔  株式会社NTTデータ 技術開発本部  Apache Sparkコミッタ & PMCメンバ  Hadoop/Sparkなど、OSSミドル関連のR&Dや技術支援  普及活動の一環で講演や書籍執筆なども  Twitter: @raspberry1123
  • 3. 3 © 2022 NTT DATA Corporation こんなチームメンバがいるところで働いています Apache Hadoopコミッタ • Hadoopの継続的な品質改善 • HTrace のモジュール開発 • HDFSにトレーシング機能を追加 • Hadoop→PostgreSQL高速ロード対応 • 非同期レプリケーションの実現 • 同期レプリケーションの実現 • カスケードレプリケーションの実現 • pg_bigm(全文検索モジュール)の開発 岩崎 正剛 Apache Sparkコミッタ Apache Bahirコミッタ • Spark内部タスクの可視化 (Timeline Viewer) • Sparkメトリクス機能改善 • SparkとYARNの連係動作の改善 猿田 浩輔 PostgreSQLコミッタ 藤井 雅雄 Apache BigTop PMC コミッタ Apache Yetus PMC/コミッタ Apache Airflow コミッタ Apache Thrift コミッタ 関 堅吾 • JVMデバッガの改善、拡充 • JVM運用機能の改善、拡充 • JVMロギング機能の改善 • HeapStatsの開発 末永 恭正 OpenJDK レビュワー IcedTea コミッタ 阪田 浩一 Java Champion 今喋ってる人
  • 4. 4 © 2022 NTT DATA Corporation 本日のお話 - OSS開発プロジェクトに参加してみよう! -  OSSをただ使うだけなのはもったいない!  開発コミュニティと関わることで、OSSのメリットをもっと享受できる。  情報収集  開発への参加  これまでいくつかのOSS開発プロジェクトに関わってきた経験を基に、OSSのメリットを活かし た、開発プロジェクトとの関わり方をご紹介
  • 5. © 2022 NTT DATA Corporation 情報収集してみよう
  • 6. 6 © 2022 NTT DATA Corporation 情報収集  コミュニティと関わることで得られる情報がある  開発動向  不具合などの情報  使っていて困ったことを共有/質問できる  情報収集の仕方も色々  メーリングリストやフォーラム、Slackの活用 • コミュニティが運営しているものや、ユーザ会が運営しているものもある • ユーザ向けのものと、開発者向けのものが分けられている場合は用途に応じて使 い分ける • 開発者向けのものであっても、コミッタ以外でも参加できるものが多い  イベントへの参加  GitHubやJIRAなどから不具合の情報を収集したり、開発状況を覗いてみる
  • 7. 7 © 2022 NTT DATA Corporation イベントへの参加  メジャーなOSSだと、日本でもユーザ会があることが多く、ユーザ会主導のイベ ントなども開催されている  日本〜ユーザ会や日本〜ユーザグループなど  イベントはconnpassやTECH PLAYなどで探せば色々見つかる • https://connpass.com • http://techplay.jp  大きなOSSプロジェクトだと、世界規模の年次イベントが開催されるものもあ る  世界中のユーザや開発者と繋がりを作る機会  昨今はオンラインかつ無料で参加できるイベントも増えてきており、参加 のハードルが下がった印象  言語的なハードルは頑張って飛び越える必要はある・・・
  • 8. 8 © 2022 NTT DATA Corporation 突然の宣伝: Spark関連のイベント(Data + AI Summit)のご紹介  Sparkコミュニティ最大のイベント  2013年から始まるイベント。当時の名称はSpark Summit  世界中の開発者やユーザや開発者が一堂に会して、ユースケースや最新動向などが発表 される(2020年6月からはオンラインでの実施)  直近開催されたのはDATA + AI Summit 2021  F2Fで開発者と議論やコネクションづくりができる機会でもある  割と大きめの機能追加などを考えているのであれば、F2Fだと話が早かったり  2020年からはオンライン開催になったが、コミュニケーションがとりやすいプラットフォー ムが活用されており一方通行にならないようにイベントが運営されている  次回は6/27 - 6/30 (PDT)開催のDATA + AI Summit 2022  リアル / オンラインのハイブリッド開催  https://databricks.com/dataaisummit
  • 9. © 2022 NTT DATA Corporation 開発に貢献してみよう
  • 10. 10 © 2022 NTT DATA Corporation 開発者としてコミュニティに関わる意義やモチベーション  開発に関わることで、自分たちが使うものをよりよく育てることにつながる  日本人の感覚(品質や細かい部分の作りこみ)を自分たちが使うOSSの改善に活か してほしい • 安定性、運用のしやすさや、いざという時のトラブルシュートのしやすさなど  コミュニティに向かって声を上げないと伝わらない • 必要なものは必要だと伝えることが大事  パッチがマージされるとリリースノートにクレジットされるプロジェクトもある
  • 11. 11 © 2022 NTT DATA Corporation 開発者としての参加の仕方もいろいろ  開発に参加する方法はパッチ投稿だけじゃない!  不具合の報告や機能追加提案、改善提案なども立派な貢献 • 自分たちでパッチを書かなくても、登録するだけでもよい • 声を上げることが大事(ただし機能追加や改善提案の場合は必然性もセットで) • ただし、脆弱性の報告は適切な手順を踏むべし • 報告は必要だがいきなり公開しない • プロジェクトごとに手順が定められていることが多い。わらなければ報告の仕方 を聞いてみるのがよい  パッチのレビュー  メーリングリスト/フォーラム/Slack上での議論への参加 • コミッタ以外でも議論に参加できるプロジェクトは多い • ユーザ視点からの意見はプロダクトの改善にとって重要
  • 12. 12 © 2022 NTT DATA Corporation パッチを寄贈して開発に貢献する  バグ修正 / 機能追加 / ドキュメントの修正などを行い、パッチをコミュニティに還元しよう  秘蔵のパッチを適用し続けたOSSを運用し続けるメリットはあまりない  メインストリームから乖離する • それ、全部自分たちで保守し続けるんですか? • 秘蔵パッチを当てたバイナリでトラブルが起こっても、コミュニティの人たちは普 通は面倒を見てくれない・・・ • マージコンフリクトだらけでバージョンアップが困難になる • いつのまにかバージョンアップ不能なほどつぎはぎだらけに・・・  パッチの品質 • 場当たり的なパッチ (当面の問題は解決しているが、別の部分に悪影響をもた らしているかも・・・?) • コミッタを含む、コミュニティの人たちからレビューを受けたほうが良い
  • 13. 13 © 2022 NTT DATA Corporation そうは言っても参加のハードルが高いのでは?  でも、パッチを投稿しようにもコードとか書けないし・・・。  ドキュメントの修正やブラッシュアップのパッチならコードが書けなくても大丈夫  やりとりは英語なんでしょ?  世界中で使われているOSSだと英語が共通言語なことが多い・・・。でも大丈夫。意 外と通じる!  マサカリとか飛んでくるんじゃないかと・・・  プロジェクトごとに厳しさの濃淡はあるかもしれませんが・・・  コードレビューでおびただしい指摘を受けることもあるが、多くの場合は紳士的にコード やアプローチの良し悪しについての指摘に閉じている  間違えても大丈夫  手順やお作法がありそれに則って進めるべきだが、間違えていたら教えてくれる  パッチを寄贈してみたいがネタがない・・・という場合は?  誰でも実践できる、ネタ探しのヒントを次のページからお伝えします
  • 14. © 2022 NTT DATA Corporation 明日から誰でも実践できる パッチネタの見つけかた
  • 15. 15 © 2022 NTT DATA Corporation パッチを寄贈する前に  最低限必要なこと  対象となるOSSを自分で動かせる • コード修正後の動作確認や、バグの再現など、色々な局面で動かす必要が出 てくる  自分でビルドできる • ビルドできないことには、コンパイルが通るか確認できない • 大抵の場合、リポジトリに開発者向けのREADMEや、公式Webサイトの開発 者向けページに手順が記載されている  パッチの投稿手順を確認しておく  プロジェクトごとにお作法が定められていることが多いので、パッチを投稿する前に確 認しておくべし  プロジェクトのWebサイトでコントリビュータ向けの説明されていたり、ソースツリーのトッ プにCONTRIBUTION.mdなどわかりやすいテキストがあることが多い。
  • 16. 16 © 2022 NTT DATA Corporation 明日から誰でもできる、パッチネタ発見のヒント 1. ドキュメントやソースコードを読んで動かしてみる 2. オープンになっている問題に挑戦する 3. 依存ライブラリをメンテナンスする 4. 真似してみる 5. 新しい実行環境やビルド環境をサポートするタイミングで発生するタスクを手分けして解決 6. Flakyなテストに立ち向かう
  • 17. 17 © 2022 NTT DATA Corporation ドキュメントやソースコードを読んで動かしてみる  対象となるOSSをよく知るという意味でも、最初のステップとしておすすめ  動かしてみると、ドキュメントの内容と異なる挙動をしたり、Exampleが動かないというケー スもある  ドキュメントが追いついていないことは割とありがちな印象  ソースコードを見てみたら、ドキュメントにない機能が実装されていることに気づくこがある  新しい機能や、相対的にあまり使われていない機能は、不具合が見つかりやすい傾向が ある  まだ荒削りな部分が残っている可能性がある  新しい機能はリリースノートなどで確認すべし  中には実験的に追加された機能であることが明記されている場合もあるので、そう いった情報から安定性を推し量ることもできる
  • 18. 18 © 2022 NTT DATA Corporation オープンになっている問題に挑戦する  報告されているが、誰も解決に着手していない問題(オープンな問題)を探して取り組む  報告されている内容から、「本当に問題か」判断できるとよい  単にユーザが使い方を間違えていたり、新しいバージョンでは解決していることもある  報告した人物のプロファイルから、問題の確度を推し量ることもできる • コミッタ • 熱心なコントリビュータ • 使い倒しているユーザ  プライオリティはわかることが多いが、実装難易度は読み取りづらいこともある  対象となるOSSの実装レベルでの理解が深まると、内容から難易度を読み取る「嗅 覚」が養われる  報告されている問題を、自分の環境で再現できるスキルは必要
  • 19. 19 © 2022 NTT DATA Corporation 依存ライブラリをメンテナンスする  巨大なOSSプロジェクトでは、さまざまなライブラリに依存していることが多いため、これらのメ ンテナンスも必要  依存ライブラリに次のようなアップデートがあった場合はバージョンアップの検討の余地がある  プロジェクトが依存しているバージョンがEOLになっている場合  プロジェクトに有用な新機能が追加されたバージョンがリリースされた場合  プロジェクトが影響を受けるバグフィックスが適用されたバージョンがリリースされた場合  依存ライブラリにCVEが報告され、対策済みのバージョンがリリースされている場合  CVEの情報収集の仕方  オフィシャルには各ライブラリ開発プロジェクトやMITREからのアナウンスがある  他のOSSプロジェクトが脆弱性脆弱性対策をしているのを見て気づくこともある  そのほかTwitterなど色々な情報ソースから把握できる
  • 20. 20 © 2022 NTT DATA Corporation 真似してみる  他の人が寄贈したパッチを真似してみる  GitHubのプルリクエストやメーリングリストに投稿されたパッチなど、日頃から観察した り、レビューに参加するとよい  似ている部分に対するパッチも真似しやすい • 複数の言語バインディングやファイルフォーマット、JDBCドライバなどをサポートして いる場合など • 各言語でのAPIカバレッジを向上させたり、どのファイルフォーマットでも同じ ユーザビリティを達成する  その他、気づかなかった貢献の仕方が見つかることもある  他の似ているプロダクトを真似してみる  例えばSQLをサポートしているプロダクトであれば、ANSI Standardで定義されてい る構文やビルトイン関数のサポートなど  標準ではないものの、他のDBMSでサポートされている便利なビルトイン関数のサ ポートなど
  • 21. 21 © 2022 NTT DATA Corporation 新しい実行環境やビルド環境をサポートするタイミングで発生するタスクを手分けして解決  新しい実行環境やビルド環境をサポートするにあたっては、やることが山ほどあることが多い  例えばHadoopではJava9でのビルドをサポートする過程で大量のタスクが発生した  Java9からモジュール機構が導入されたり、許容されない変数名など非互換が少な くなかったため、移行は大変だった模様  Sparkでも、Java11やScala 2.13での実行をサポートするのは一苦労だった  Scala 2.12から2.13にかけて、コレクションライブラリ周りで互換性を壊す変更が加 えられたため、Sparkがわも変更が必要な箇所が多かった  今後Scala 3対応でも苦労しそうな予感  今だとJava 17対応を進めているプロジェクトも出てきた  Sparkでも着々と進めている  やることが多いので、機会を見逃さなければ貢献できるチャンス  タスクの一部を引き受けることで貢献する
  • 22. 22 © 2022 NTT DATA Corporation Flakyなテストに立ち向かう  Flakyなテストとは?  大抵はパスするが、たまに失敗するテスト  再実行するとパスしたりするので厄介  CIが健全な状態にならないので、Flakyなテストが多いとプロジェクト的には困る  GitHubでホストされているプロジェクトだと、ビルドステータスが×になっているコミットに注目 する  当該コミットでの修正とは関係のないテストが失敗している場合はflakyな臭い  (いつもそうとは限らないが)マルチスレッド/マルチプロセス絡みの競合に起因していることが 多い印象  Flakyな挙動の原因になっているのはテストそのものの場合もあれば、本体のコード の場合もある。  どのようなメカニズムでテストが失敗するのか把握し、適切なツールの活用を活用して 粘り強く解決する
  • 23. 23 © 2022 NTT DATA Corporation より円滑に進めるために  開発に関わっている人たちを知る  コミッタ  アクティブなコントリビュータ  使い倒しているユーザ  粘り強さも重要  議論が長期化す場合や、バグの再現に苦労する場合もあるが、「考えながら」粘り 強くやり遂げる  バグフィックスや機能開発をするのであれば、デバッグ手段は色々持っておくと便利  デバッガ  パケットキャプチャ  リソース統計収集ツール
  • 24. © 2022 NTT DATA Corporation コミュニケーションの仕方や コミュニティでのふるまい方
  • 25. 25 © 2022 NTT DATA Corporation 英語でのコミュニケーション  メジャーなOSS開発プロジェクトでの公用語は英語であることが多いが、意外と簡単な英 語でも通じる!  私も英語は苦手だが、なんとか(?)やれている・・・。  語順と時制が合っていれば大体通じる  時制の間違いも、特に混乱をきたさない場合は大体空気を読んでくれる  複雑なことを説明する際無理に長い文章にせず、箇条書きに すると伝わりやすい  他人が使っているフレーズをまねるのもよし  GitHubや上での議論やメーリングリストでのやりとり  もし自分の理解が怪しい時には、素直に確認すればOK  You mean 〜 right? (〜ってこと?)  Could you elaborate on that? (詳しく説明してもらえますか?)  とはいえ、英語上達の努力を怠ってはいけない・・・
  • 26. 26 © 2022 NTT DATA Corporation (余談) GitHubやJIRA上でよく見かける略語 略語 元々の表現 意味 シチュエーション LGTM / SGTM Looks / Seems good to me よさそうです パッチやアイディアなどに ついてのコメント。主にレ ビュアーやコミッタが使う IMO / IMHO In my (humble) opinion 私の考えでは〜 議論の中で使われる。 意見が対立した時など FYI For your information 補足情報など AFAIK As far as I know 知る限り〜 わりとどこでも BTW By the way ところで 話題転換 a.k.a Also known as 〜としても知られていま す わりとどこでも 更に知りたい方はこちら(Spark界隈ではお目にかかったことが無いものもありますが・・・) http://qiita.com/uasi/items/86c3a09d17792ab62dfe
  • 27. 27 © 2022 NTT DATA Corporation コミュニティと関わる上で気をつけた方が良いこと  いきなり巨大なパッチを投稿しない  レビューする人も大変  分割できるものは分割したり、大きな機能は事前にMLで議論するのが良い  実効的な影響のない変更を加えるパッチは避ける(意外とある)  例えば変数名のタイポや無駄なimport文の除去など・・・  何かの修正のついでに一緒に直したりするのがよい  ユーザの目に触れるような、ドキュメントのタイポ修正は受け入れられるはず  他人を罵倒しない  粗悪なコードを憎んで人を憎まず。客観的に、コードのどの部分がどうよくないのか、ど う修正した方が良いのか指摘するとOK  あまり見たことないが・・・
  • 28. © 2022 NTT DATA Corporation まとめ
  • 29. 29 © 2022 NTT DATA Corporation まとめ  OSSは使うだけでなく、コミュニティに参加することでさらにメリットを享受できる  情報収集  開発への参加  情報収集の手段としてコミュニティに関わることもできる  メーリングリスト/フォーラム/Slack  イベントの参加  開発への参加の仕方もいろいろある  不具合の報告や要望の提案  開発の議論への参加  パッチの寄贈  誰でも明日から実践できる、パッチネタの見つけ方もある  日本からもっとOSSへのコントリビューションを・・・!
  • 30. © 2022 NTT DATA Corporation 本資料に記載されている会社名、商品名、又はサービス名は、各社の登録商標又は商標です。

Editor's Notes