SlideShare a Scribd company logo
© 2024 NTT DATA Group Corporation
© 2024 NTT DATA Group Corporation
オープンデベロッパーズカンファレンス(ODC)2024
PostgreSQL開発コミュニティに
参加しよう!
2024年9月7日
NTTデータグループ 藤井雅雄
© 2024 NTT DATA Group Corporation 2
自己紹介
藤井 雅雄
Database Technical Lead @ NTTデータグループ
データベース研究開発
PostgreSQL 技術支援
PostgreSQLコミッタ
レプリケーション
WAL圧縮
バックアップ進捗確認
pg_bigm(全文検索モジュール) コミッタ
fujii_masao
MasaoFujii
© 2024 NTT DATA Group Corporation 3
PostgreSQL開発コミュニティに参加しよう!
© 2024 NTT DATA Group Corporation 4
PostgreSQLコミュニティ (グローバル)
The PostgreSQL Global Development Group
PostgreSQL本体を開発しているコミュニティ
Local User Groups
世界各地 (33ヶ国62地域) にあるPostgreSQLユーザグループ
PUG = PostgreSQL User Group
Events
世界各地でPostgreSQLに関するカンファレンスなどのイベントが開催
Slack, IRC, LinkedIn, etc
様々なチャンネルでPostgreSQLユーザが集まってコミュニケーション
© 2024 NTT DATA Group Corporation 5
PostgreSQLコミュニティ (日本)
日本PostgreSQLユーザ会
日本のPostgreSQLユーザグループ
JPUG = Japan PostgreSQL User Group
支部
北海道、東北、新潟、名古屋、関西、四国、中国、九州、沖縄
文書・書籍関連分科会
PostgreSQL関連の文書の翻訳
PostgreSQLエンタープライズ・コンソーシアム
PostgreSQLの普及推進を目的とする企業コンソーシアム
PGECons = PostgreSQL Enterprise Consortium
© 2024 NTT DATA Group Corporation 6
PostgreSQLコミュニティ (日本)
Events
日本の様々なコミュニティ・団体・企業・個人がカンファレンスなどのイベントを開催
PostgreSQL Conference Japan
PostgreSQLアンカンファレンス ...etc
Slack
PostgreSQLに関する日本語Slack
© 2024 NTT DATA Group Corporation 7
PostgreSQLコミュニティ (グローバル)
The PostgreSQL Global Development Group
PostgreSQL本体を開発しているコミュニティ
Local User Groups
世界各地 (35ヶ国67地域) にあるPostgreSQLユーザグループ
PUG = PostgreSQL User Group
Events
世界各地でPostgreSQLに関するカンファレンスなどのイベントが開催
Slack, IRC, LinkedIn, etc
様々なチャンネルでPostgreSQLユーザが集まってコミュニケーション
PostgreSQL開発コミュニティに参加しよう!
© 2024 NTT DATA Group Corporation 8
The PostgreSQL Global Development Group
メーリングリスト Wiki
Gitレポジトリ
コアチーム コミッタ
開発、レビュー、テスト、バグ報告
コントリビュータ
ユーザ
© 2024 NTT DATA Group Corporation 9
The PostgreSQL Global Development Group
メーリングリスト Wiki
Gitレポジトリ
コアチーム コミッタ
開発、レビュー、テスト、バグ報告
コントリビュータ
ユーザ
参加
選出
選出
7名
30名
v16開発では
361名
© 2024 NTT DATA Group Corporation 10
The PostgreSQL Global Development Groupに参加の企業例
企業別の所属コミッタ数(2024年3月時点)
count | company
-------+-------------------------
7 | EnterpriseDB
6 | Amazon Web Services
5 | Microsoft
1 | Crunchy Data
1 | Fujitsu
1 | Google Cloud Platform
1 | Individuals
1 | Instaclustr
1 | NTT
1 | NTT DATA
1 | Neon, Inc
1 | Redpill Linpro
1 | SRA OSS
1 | Supabase Inc.
1 | University of Cambridge
© 2024 NTT DATA Group Corporation 11
PostgreSQLコミュニティは何が特異的なのか
特定の企業に
偏らない
開発が進む
複数の企業
からの参加
全体の
コンセンサスを
取って開発
• EDB, Microsoft, AWS, Crunchy Data, NTT, 富
士通, SRA OSS, Google Cloud, その他多数
• どの企業がメイン、ということもない
• コアチームは、独裁的に開発の方向性は決めない
• 技術的な方向性は全体で合意のうえ、開発が進められる
© 2024 NTT DATA Group Corporation 12
PostgreSQL開発のフロー
新機能の提案やバグの報告を行う
新機能の必要性やユーザI/F、アーキテクチャ、
実現方法、バグ原因、修正方法などを議論する
議論結果を踏まえて、新機能やバグ修正を
コーディングして、パッチを作成・投稿する
パッチをレビューして、不備を改修する
コミッタがパッチをPostgreSQL本体に取り込む
提案・バグ報告
議論
パッチ作成
レビュー
コミット
繰
り
返
し
© 2024 NTT DATA Group Corporation 13
議論に参加しよう!
© 2024 NTT DATA Group Corporation 14
メーリングリストの購読
PostgreSQL開発コミュニティでのコミュニケーションはメーリングリストが基本
PostgreSQL公式サイトでコミュニティアカウントを作成して、4つのMLを購読
pgsql-hackers
新機能の提案やバグ修正、開発課題などについて議論する
pgsql-bugs
ユーザからのバグ報告先。報告されたバグやその修正などについて議論する
pgsql-docs
ドキュメントやその問題、改修などについて議論する
pgsql-committers
コミットされた内容が通知される
過去の議論内容は、各メーリングリストのアーカイブから確認可能
https://www.postgresql.org/list/
© 2024 NTT DATA Group Corporation 15
議論を読む
藤井がv13向けに
バックアップ取得の
進捗確認機能を
提案したときのメール
© 2024 NTT DATA Group Corporation 16
議論を読むコツ
興味あるテーマ・機能・バグの議論から読む
OSS-DBの資格取得などを通じて
PostgreSQLの体系的な事前知識を得ておく
英語の長い議論を手軽に読みたいときは、翻訳サイトなども活用
例えば、Shaperで英文を整形して、DeepLで日本語翻訳
https://dream-exp.net/shaper/
https://www.deepl.com/translator
用語・省略語などを理解する
https://www.crunchydata.com/blog/understanding-the-postgres-hackers-mailing-list
© 2024 NTT DATA Group Corporation 17
議論で返信する
宛先にMLを含める
内容は公開されることに注意
bottom-posting
返信したい対象の文章を引用して、
その下に返信を記載する
行動規範に則った発言
https://www.postgresql.org/about/policies/coc/ja/
引用
返信
引用
返信
© 2024 NTT DATA Group Corporation 18
議論で返信するコツ
翻訳サイトなどを活用して、英文を作成
例えば、日本語で文章を作成して、DeepLで英語翻訳、Grammarlyで添削
https://www.deepl.com/translator
https://www.grammarly.com/
文を無理に長くしない、箇条書きにする、例を出して説明する
他の人のメールやPostgreSQLドキュメント、ソースコメントの
英文を参考にする
© 2024 NTT DATA Group Corporation 19
レビューに参加しよう!
© 2024 NTT DATA Group Corporation 20
PostgreSQL開発のサイクル
2024年度 2025年度
6 7 8 9 10 11 12 1 2 3 4 5 6 7 8 9 10 11
CF CF CF CF CF
v18開発
v17開発
v19開発
CF CF
Beta / RC
Beta / RC
Feature
Freeze リリース
リリース
コミュニティサポート
CF
CommitFest
パッチレビューに
集中する期間
© 2024 NTT DATA Group Corporation 21
CommitFest
CommitFest Appでレビュー対象のパッチを一覧管理
https://commitfest.postgresql.org/
© 2024 NTT DATA Group Corporation 22
CommitFestのワークフロー
Needs review
レビュー待ち
Waiting on Author
開発者の対応待ち
Ready for
Committer
コミッタの判断待ち
Committed
コミット成功!
Moved to next CF
次回CFでレビュー継続
Returned with
Feedback
今回CFで十分にレビュー済
Rejected
提案却下
Withdrawn
提案撤回
パッチ修正 レビュー
パッチ提案
レビュー完了
差し戻し
コミット
パッチレビュー中 パッチクローズ
提案撤回
提案却下
レビュー十分
CF終了
パッチ作者 レビュア コミッタ
© 2024 NTT DATA Group Corporation 23
レビューするパッチを決める
興味ある機能や分野のパッチ
レビューしやすいパッチ
ドキュメントやテストケースのパッチ
独立した機能などで影響範囲の小さいパッチ
(クライアントツール、contribモジュール、SQL関数など)
サイズの小さいパッチ
仕様やI/Fなどの内容がコミュニティで合意済のパッチ
メインのレビュアがいるパッチ
メインのレビュアによるレビュー内容を勉強しながら、サブのレビュアとして取り組む
© 2024 NTT DATA Group Corporation 24
レビュアとして登録する
CommitFest App
「Become reviewer」を押して、
レビュアとして登録
CF App 内の各パッチのページ
© 2024 NTT DATA Group Corporation 25
パッチを入手する
~
パッチをダウンロード
CF App 内の各パッチのページ ML上でパッチについて議論しているメール
© 2024 NTT DATA Group Corporation 26
パッチをレビューする
提案レビュー
パッチは適用できるか?ドキュメントやテストを含んでいるか?
仕様レビュー
パッチは本当に必要か?仕様はコミュニティで合意されているか?
機能テスト
仕様通りに動作するか?クラッシュや想定外のエラーはないか?
性能試験
パッチにより性能劣化しないか?
コーディング・レビュー
Windowsでも動作するか?コーディング規約に従っているか?
アーキテクチャ・レビュー
他機能と一貫性のあるアーキテクチャか?
https://wiki.postgresql.org/wiki/Reviewing_a_Patch/ja
レビューコメントとして
MLで返信する
© 2024 NTT DATA Group Corporation 27
パッチを適用、コンパイル、テストする
① ソースの入手、コンパイルに必要なライブラリをインストールする
$ sudo dnf install git gcc make bison flex readline readline-devel zlib-devel libicu-devel
② TAPテスト(*)に必要なライブラリをインストールする
$ sudo dnf install perl-CPAN
$ sudo cpan -i IPC::Run Test::Simple Time::HiRes Test::Harness
③ ドキュメントのコンパイルに必要なライブラリをインストールする
$ sudo dnf install docbook-dtds docbook-style-xsl libxslt
環境によって必要なライブラリやインストールのコマンドが異なることに注意!
上記はRHEL8系環境での実行例
(*) PostgreSQLのクライアントツールなどを対象とする追加テスト
© 2024 NTT DATA Group Corporation 28
パッチを適用、コンパイル、テストする
④ PostgreSQLのgitレポジトリをクローンする
$ git clone git://git.postgresql.org/git/postgresql.git
⑤ パッチ適用先ブランチをチェックアウトする
$ cd postgresql
$ git checkout master
⑥ パッチ用の新規ブランチを作成する
$ git checkout -b xxx
$ git branch
master
* xxx
基本的に「開発中の最新メジャーバージョン」の
masterブランチがパッチ適用先
手元環境だと
クローンにかかった時間は約15分
レビュー完了後などに
パッチ適用を手軽にクリアできるように、
パッチ用のブランチを作成するのがおススメ!
© 2024 NTT DATA Group Corporation 29
パッチを適用、コンパイル、テストする
⑦ パッチを適用する
$ patch -p1 -d. < $HOME/xxx.patch
⑧ PostgreSQLをコンパイルする
$ ./configure --enable-debug --enable-cassert --enable-tap-tests 
--prefix=$HOME/pgsql/xxx CFLAGS=-O0
$ make -j 4
$ make install
デバッグしやすいようにオプションを指定する
--enable-debug
--enable-cassert
--enable-tap-tests
CFLAGS=-O0
インストール先のディレクトリを指定する
--prefix
時間短縮のため複数多重でコンパイルするように
-jオプションを指定するのがおススメ!
パッチ適用やコンパイルで発生したエラー・警告は、レビューコメントとしてMLで報告する
© 2024 NTT DATA Group Corporation 30
パッチを適用、コンパイル、テストする
⑨ contribモジュールをコンパイルする
$ cd contrib
$ make
$ make install
$ cd ..
⑩ ドキュメントをコンパイルする
$ make html
⑪ リグレッションテストを実行する
$ make -j 4 check-world
コンパイルやテストで発生したエラー・警告は、レビューコメントとしてMLで報告する
CF登録のパッチは自動的にテストが走り、
その結果をPatch Testerから確認できる
http://cfbot.cputube.org/
時間短縮のため複数多重でコンパイルするように
-jオプションを指定するのがおススメ!
© 2024 NTT DATA Group Corporation 31
パッチを適用、コンパイル、テストする
⑫ PostgreSQLを起動する
$ cd $HOME/pgsql/xxx
$ bin/initdb -D data --locale=C --encoding=UTF8
$ bin/pg_ctl -D data start
⑬ パッチの新機能をテストする
$ bin/psql
...
⑭ PostgreSQLを停止する
$ bin/pg_ctl -D data stop
思いつく限りの新機能の使い方を試してみる!例えば、
入力のバリエーション (境界値、大規模データ、不正値など)
大量実行、複数多重同時実行
物理/論理レプリケーション環境での動作
起動・停止やテストで発生したエラー・想定外動作は、レビューコメントとしてMLで報告する
© 2024 NTT DATA Group Corporation 32
パッチをコーディング・レビューする
コーディング規約やエラーメッセージのスタイルガイドに従っているか?
https://www.postgresql.jp/document/current/html/source.html
コメントやドキュメントに内容誤り(古い内容のまま)やTypoはないか?
関数名、変数名、マクロ名、ファイル名などの命名が分かりやすく適切か?
初期化忘れ、クローズ・解放忘れ、戻り値のチェック忘れなどのバグはないか?
セグメンテーションフォルトやアサーションエラーを引き起こすコードパスはないか?
無駄、非効率、(必要以上に)複雑すぎる、理解しにくいコードはないか?
例えば、以下の観点でコード上気になる点をレビューコメントとしてMLで報告する
© 2024 NTT DATA Group Corporation 33
レビューコメントを返信する
レビューコメントの返信メールの例 (抜粋)
変数の初期値の誤りや
初期化忘れを指摘
カラム名の命名が
適切でないことの指摘
© 2024 NTT DATA Group Corporation 34
パッチのステータスを変更する
「Change Status」を押して、
パッチのステータスを変更
© 2024 NTT DATA Group Corporation 35
CommitFestのワークフロー
Needs review
レビュー待ち
Waiting on Author
開発者の対応待ち
Ready for
Committer
コミッタの判断待ち
Committed
コミット成功!
Moved to next CF
次回CFでレビュー継続
Returned with
Feedback
今回CFで十分にレビュー済
Rejected
提案却下
Withdrawn
提案撤回
パッチ修正 レビュー
パッチ提案
レビュー完了
差し戻し
コミット
パッチレビュー中 パッチクローズ
提案撤回
提案却下
レビュー十分
CF終了
パッチ作者 レビュア コミッタ
© 2024 NTT DATA Group Corporation 36
パッチのコミットを確認する
コミットログの例
レビューしたパッチがコミットされると、
レビュアとして名前がコミットログに
記録される!
© 2024 NTT DATA Group Corporation 37
パッチを作成・投稿しよう!
© 2024 NTT DATA Group Corporation 38
パッチネタを見つける
取り組み成果やその関連技術をPostgreSQLに組み込む
成果が大きすぎる場合は、細かい技術要素に分けて、少しずつパッチ化できないか考える
コミュニティでの議論やパッチレビューでパッチネタを見つける
議論中に新機能のアイデアが出ることや、レビュー中にPostgreSQLの不具合が見つかることが多い
PostgreSQLの最新バージョンリリース前後に、そのバージョンの新機能を試す
リリース前後は、新機能に不具合が含まれていることが多い
© 2024 NTT DATA Group Corporation 39
PostgreSQL開発のフロー
新機能の提案やバグの報告を行う
新機能の必要性やユーザI/F、アーキテクチャ、
実現方法、バグ原因、修正方法などを議論する
議論結果を踏まえて、新機能やバグ修正を
コーディングして、パッチを作成・投稿する
パッチをレビューして、不備を改修する
コミッタがパッチをPostgreSQL本体に取り込む
提案・バグ報告
議論
パッチ作成
レビュー
コミット
繰
り
返
し
パッチネタについてまずはコミュニティで議論して、その結果にもとづいてパッチを作成するのが基本
パッチを作成してみないと提案・議論しにくい場合は、パッチを先に作成することも
© 2024 NTT DATA Group Corporation 40
パッチを作成する
① masterブランチでソースを最新化して、パッチ用のブランチを作成する。
$ git checkout master
$ git pull
$ git checkout -b new-func
② ソースを改修して、その改修内容をコミットする。
$ emacs ...
$ git commit -a -m "Add new func ..."
③ masterブランチからパッチ用ブランチへのソース差分をパッチとして作成する。
$ git format-patch master
$ ls *.patch
0001-Add-new-func.patch
© 2024 NTT DATA Group Corporation 41
パッチレビューの観点をクリアできているか
提案レビュー
パッチは適用できるか?ドキュメントやテストを含んでいるか?
仕様レビュー
パッチは本当に必要か?仕様はコミュニティで合意されているか?
機能テスト
仕様通りに動作するか?クラッシュや想定外のエラーはないか?
性能試験
パッチにより性能劣化しないか?
コーディング・レビュー
Windowsでも動作するか?コーディング規約に従っているか?
アーキテクチャ・レビュー
他機能と一貫性のあるアーキテクチャか?
https://wiki.postgresql.org/wiki/Reviewing_a_Patch/ja
© 2024 NTT DATA Group Corporation 42
パッチレビューの観点をクリアできているか
コーディング規約やエラーメッセージのスタイルガイドに従っているか?
https://www.postgresql.jp/document/current/html/source.html
コメントやドキュメントに内容誤り(古い内容のまま)やTypoはないか?
関数名、変数名、マクロ名、ファイル名などの命名が分かりやすく適切か?
初期化忘れ、クローズ・解放忘れ、戻り値のチェック忘れなどのバグはないか?
セグメンテーションフォルトやアサーションエラーを引き起こすコードパスはないか?
無駄、非効率、(必要以上に)複雑すぎる、理解しにくいコードはないか?
© 2024 NTT DATA Group Corporation 43
PostgreSQL開発のサイクル
2024年度 2025年度
6 7 8 9 10 11 12 1 2 3 4 5 6 7 8 9 10 11
CF CF CF CF CF
v18開発
v17開発
v19開発
CF CF
Beta / RC
Beta / RC
Feature
Freeze リリース
リリース
コミュニティサポート
CF
CommitFest
パッチレビューに
集中する期間
© 2024 NTT DATA Group Corporation 44
CommitFestのワークフロー
Needs review
レビュー待ち
Waiting on Author
開発者の対応待ち
Ready for
Committer
コミッタの判断待ち
Committed
コミット成功!
Moved to next CF
次回CFでレビュー継続
Returned with
Feedback
今回CFで十分にレビュー済
Rejected
提案却下
Withdrawn
提案撤回
パッチ修正 レビュー
パッチ提案
レビュー完了
差し戻し
コミット
パッチレビュー中 パッチクローズ
提案撤回
提案却下
レビュー十分
CF終了
パッチ作者 レビュア コミッタ
© 2024 NTT DATA Group Corporation 45
パッチのコミットを確認する
コミットログの例
作成したパッチがコミットされると、
作者として名前がコミットログに記録される!
リリースノートの例
ユーザが知るべき機能・改変の場合は、
リリースノートにも記録される!
© 2024 NTT DATA Group Corporation 46
さいごに
© 2024 NTT DATA Group Corporation 47
参加すると楽しい!
PostgreSQLをより深く理解できる・
使いこなせるようになる
自分の提案に世界中の技術者
から反応がある・議論できる・
一緒に開発できる・見識も人脈
も広がる
自分の成果として名前が残り、
セルフブランディングになる
自分のコードが世界中で
使われる・感謝される
コーディングスキルが向上する
コミュニティに参加する
モチベーション
© 2024 NTT DATA Group Corporation 48
困ったときは日本のコミュニティで相談も
例えば、ほぼ月1ペースで開催のアンカンファレンスでバグのLTをするなど
記載されている会社名、商品名、又はサービス名は、
各社の登録商標又は商標です。

More Related Content

Similar to PostgreSQL開発コミュニティに参加しよう! (オープンデベロッパーズカンファレンス(ODC)2024 発表資料) (20)

PPTX
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PDF
[db tech showcase Tokyo 2014] C31: PostgreSQLをエンタープライズシステムで利用しよう by PostgreS...
Insight Technology, Inc.
 
PDF
PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PDF
C27 基幹領域への適用におけるpostgre sqlの抱える課題 by 原嘉彦
Insight Technology, Inc.
 
PDF
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
NTT DATA Technology & Innovation
 
PPTX
PostgreSQLのgitレポジトリから見える2021年の開発状況(第30回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PDF
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...
NTT DATA Technology & Innovation
 
PDF
20190119 aws-study-pg-extension
Toshi Harada
 
PDF
MesonでPostgreSQLをビルドしてみよう!(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PDF
10大ニュースで振り返るpg con2013
NTT DATA OSS Professional Services
 
PDF
JTF2021w F3 postgresql frontline
Haruka Takatsuka
 
PDF
20181110 fok2018-pg-extension
Toshi Harada
 
PDF
1日5分でPostgreSQLに詳しくなるアプリの開発 ~PostgRESTを使ってみた~(第38回PostgreSQLアンカンファレンス@オンライン 発...
NTT DATA Technology & Innovation
 
PDF
PostgreSQL初心者がパッチを提案してからコミットされるまで(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PDF
PostgreSQLのgitレポジトリから見える2020年の開発状況(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PDF
PostgreSQL10徹底解説
Masahiko Sawada
 
PPTX
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PDF
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
NTT DATA Technology & Innovation
 
PDF
Kof2016 postgresql-9.6
Toshi Harada
 
PDF
[db tech showcase Tokyo 2015] B16:最新版PostgreSQLのパフォーマンスを引き出すためのポイント by Postgr...
Insight Technology, Inc.
 
VSCodeで作るPostgreSQL開発環境(第25回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
[db tech showcase Tokyo 2014] C31: PostgreSQLをエンタープライズシステムで利用しよう by PostgreS...
Insight Technology, Inc.
 
PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
C27 基幹領域への適用におけるpostgre sqlの抱える課題 by 原嘉彦
Insight Technology, Inc.
 
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
NTT DATA Technology & Innovation
 
PostgreSQLのgitレポジトリから見える2021年の開発状況(第30回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...
NTT DATA Technology & Innovation
 
20190119 aws-study-pg-extension
Toshi Harada
 
MesonでPostgreSQLをビルドしてみよう!(第39回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
10大ニュースで振り返るpg con2013
NTT DATA OSS Professional Services
 
JTF2021w F3 postgresql frontline
Haruka Takatsuka
 
20181110 fok2018-pg-extension
Toshi Harada
 
1日5分でPostgreSQLに詳しくなるアプリの開発 ~PostgRESTを使ってみた~(第38回PostgreSQLアンカンファレンス@オンライン 発...
NTT DATA Technology & Innovation
 
PostgreSQL初心者がパッチを提案してからコミットされるまで(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLのgitレポジトリから見える2020年の開発状況(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL10徹底解説
Masahiko Sawada
 
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
NTT DATA Technology & Innovation
 
Kof2016 postgresql-9.6
Toshi Harada
 
[db tech showcase Tokyo 2015] B16:最新版PostgreSQLのパフォーマンスを引き出すためのポイント by Postgr...
Insight Technology, Inc.
 

More from NTT DATA Technology & Innovation (20)

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
ストリーム処理はデータを失うから怖い?それ、何とかできますよ! 〜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
 
PDF
PostgreSQL17対応版 EXPLAINオプションについて (第49回PostgreSQLアンカンファレンス@東京 発表資料)
NTT DATA Technology & Innovation
 
PDF
B-Treeのアーキテクチャ解説 (第49回PostgreSQLアンカンファレンス@東京 発表資料)
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
 
ストリーム処理はデータを失うから怖い?それ、何とかできますよ! 〜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
 
PostgreSQL17対応版 EXPLAINオプションについて (第49回PostgreSQLアンカンファレンス@東京 発表資料)
NTT DATA Technology & Innovation
 
B-Treeのアーキテクチャ解説 (第49回PostgreSQLアンカンファレンス@東京 発表資料)
NTT DATA Technology & Innovation
 
Ad

Recently uploaded (8)

PPTX
新卒・中途採用者向け採用ピッチ資料2025年7月版(20250702).pptx
Official74
 
PDF
2023年版Web3技術の理想と現実
Syuhei Hiya
 
PPTX
オープンソース界隈の利用者や技術者から見たオープンソースEDAとは? What is open source EDA from the perspecti...
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
 
PDF
SIG-AUDIO 2025 Vol.02 オンラインセミナー SIG-Audioプレゼン資料_オーディオプラグイン開発_塩澤達矢.pdf
IGDA Japan SIG-Audio
 
PDF
生成AIパネルトーク(Interop25Tokyo APPS JAPAN M1-07,M2-07 嶋ポジショントーク)
嶋 是一 (Yoshikazu SHIMA)
 
PDF
20250630_aws_reinforce_2025_aws_sheild_network_security_director
uedayuki
 
PDF
go tool と Minimal Version Selection アルゴリズム
Keisuke Ishigami
 
PDF
AIツールを使った研究の効率化 Improving Research Efficiency with AI Tools
Tohoku University
 
新卒・中途採用者向け採用ピッチ資料2025年7月版(20250702).pptx
Official74
 
2023年版Web3技術の理想と現実
Syuhei Hiya
 
オープンソース界隈の利用者や技術者から見たオープンソースEDAとは? What is open source EDA from the perspecti...
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
 
SIG-AUDIO 2025 Vol.02 オンラインセミナー SIG-Audioプレゼン資料_オーディオプラグイン開発_塩澤達矢.pdf
IGDA Japan SIG-Audio
 
生成AIパネルトーク(Interop25Tokyo APPS JAPAN M1-07,M2-07 嶋ポジショントーク)
嶋 是一 (Yoshikazu SHIMA)
 
20250630_aws_reinforce_2025_aws_sheild_network_security_director
uedayuki
 
go tool と Minimal Version Selection アルゴリズム
Keisuke Ishigami
 
AIツールを使った研究の効率化 Improving Research Efficiency with AI Tools
Tohoku University
 
Ad

PostgreSQL開発コミュニティに参加しよう! (オープンデベロッパーズカンファレンス(ODC)2024 発表資料)

  • 1. © 2024 NTT DATA Group Corporation © 2024 NTT DATA Group Corporation オープンデベロッパーズカンファレンス(ODC)2024 PostgreSQL開発コミュニティに 参加しよう! 2024年9月7日 NTTデータグループ 藤井雅雄
  • 2. © 2024 NTT DATA Group Corporation 2 自己紹介 藤井 雅雄 Database Technical Lead @ NTTデータグループ データベース研究開発 PostgreSQL 技術支援 PostgreSQLコミッタ レプリケーション WAL圧縮 バックアップ進捗確認 pg_bigm(全文検索モジュール) コミッタ fujii_masao MasaoFujii
  • 3. © 2024 NTT DATA Group Corporation 3 PostgreSQL開発コミュニティに参加しよう!
  • 4. © 2024 NTT DATA Group Corporation 4 PostgreSQLコミュニティ (グローバル) The PostgreSQL Global Development Group PostgreSQL本体を開発しているコミュニティ Local User Groups 世界各地 (33ヶ国62地域) にあるPostgreSQLユーザグループ PUG = PostgreSQL User Group Events 世界各地でPostgreSQLに関するカンファレンスなどのイベントが開催 Slack, IRC, LinkedIn, etc 様々なチャンネルでPostgreSQLユーザが集まってコミュニケーション
  • 5. © 2024 NTT DATA Group Corporation 5 PostgreSQLコミュニティ (日本) 日本PostgreSQLユーザ会 日本のPostgreSQLユーザグループ JPUG = Japan PostgreSQL User Group 支部 北海道、東北、新潟、名古屋、関西、四国、中国、九州、沖縄 文書・書籍関連分科会 PostgreSQL関連の文書の翻訳 PostgreSQLエンタープライズ・コンソーシアム PostgreSQLの普及推進を目的とする企業コンソーシアム PGECons = PostgreSQL Enterprise Consortium
  • 6. © 2024 NTT DATA Group Corporation 6 PostgreSQLコミュニティ (日本) Events 日本の様々なコミュニティ・団体・企業・個人がカンファレンスなどのイベントを開催 PostgreSQL Conference Japan PostgreSQLアンカンファレンス ...etc Slack PostgreSQLに関する日本語Slack
  • 7. © 2024 NTT DATA Group Corporation 7 PostgreSQLコミュニティ (グローバル) The PostgreSQL Global Development Group PostgreSQL本体を開発しているコミュニティ Local User Groups 世界各地 (35ヶ国67地域) にあるPostgreSQLユーザグループ PUG = PostgreSQL User Group Events 世界各地でPostgreSQLに関するカンファレンスなどのイベントが開催 Slack, IRC, LinkedIn, etc 様々なチャンネルでPostgreSQLユーザが集まってコミュニケーション PostgreSQL開発コミュニティに参加しよう!
  • 8. © 2024 NTT DATA Group Corporation 8 The PostgreSQL Global Development Group メーリングリスト Wiki Gitレポジトリ コアチーム コミッタ 開発、レビュー、テスト、バグ報告 コントリビュータ ユーザ
  • 9. © 2024 NTT DATA Group Corporation 9 The PostgreSQL Global Development Group メーリングリスト Wiki Gitレポジトリ コアチーム コミッタ 開発、レビュー、テスト、バグ報告 コントリビュータ ユーザ 参加 選出 選出 7名 30名 v16開発では 361名
  • 10. © 2024 NTT DATA Group Corporation 10 The PostgreSQL Global Development Groupに参加の企業例 企業別の所属コミッタ数(2024年3月時点) count | company -------+------------------------- 7 | EnterpriseDB 6 | Amazon Web Services 5 | Microsoft 1 | Crunchy Data 1 | Fujitsu 1 | Google Cloud Platform 1 | Individuals 1 | Instaclustr 1 | NTT 1 | NTT DATA 1 | Neon, Inc 1 | Redpill Linpro 1 | SRA OSS 1 | Supabase Inc. 1 | University of Cambridge
  • 11. © 2024 NTT DATA Group Corporation 11 PostgreSQLコミュニティは何が特異的なのか 特定の企業に 偏らない 開発が進む 複数の企業 からの参加 全体の コンセンサスを 取って開発 • EDB, Microsoft, AWS, Crunchy Data, NTT, 富 士通, SRA OSS, Google Cloud, その他多数 • どの企業がメイン、ということもない • コアチームは、独裁的に開発の方向性は決めない • 技術的な方向性は全体で合意のうえ、開発が進められる
  • 12. © 2024 NTT DATA Group Corporation 12 PostgreSQL開発のフロー 新機能の提案やバグの報告を行う 新機能の必要性やユーザI/F、アーキテクチャ、 実現方法、バグ原因、修正方法などを議論する 議論結果を踏まえて、新機能やバグ修正を コーディングして、パッチを作成・投稿する パッチをレビューして、不備を改修する コミッタがパッチをPostgreSQL本体に取り込む 提案・バグ報告 議論 パッチ作成 レビュー コミット 繰 り 返 し
  • 13. © 2024 NTT DATA Group Corporation 13 議論に参加しよう!
  • 14. © 2024 NTT DATA Group Corporation 14 メーリングリストの購読 PostgreSQL開発コミュニティでのコミュニケーションはメーリングリストが基本 PostgreSQL公式サイトでコミュニティアカウントを作成して、4つのMLを購読 pgsql-hackers 新機能の提案やバグ修正、開発課題などについて議論する pgsql-bugs ユーザからのバグ報告先。報告されたバグやその修正などについて議論する pgsql-docs ドキュメントやその問題、改修などについて議論する pgsql-committers コミットされた内容が通知される 過去の議論内容は、各メーリングリストのアーカイブから確認可能 https://www.postgresql.org/list/
  • 15. © 2024 NTT DATA Group Corporation 15 議論を読む 藤井がv13向けに バックアップ取得の 進捗確認機能を 提案したときのメール
  • 16. © 2024 NTT DATA Group Corporation 16 議論を読むコツ 興味あるテーマ・機能・バグの議論から読む OSS-DBの資格取得などを通じて PostgreSQLの体系的な事前知識を得ておく 英語の長い議論を手軽に読みたいときは、翻訳サイトなども活用 例えば、Shaperで英文を整形して、DeepLで日本語翻訳 https://dream-exp.net/shaper/ https://www.deepl.com/translator 用語・省略語などを理解する https://www.crunchydata.com/blog/understanding-the-postgres-hackers-mailing-list
  • 17. © 2024 NTT DATA Group Corporation 17 議論で返信する 宛先にMLを含める 内容は公開されることに注意 bottom-posting 返信したい対象の文章を引用して、 その下に返信を記載する 行動規範に則った発言 https://www.postgresql.org/about/policies/coc/ja/ 引用 返信 引用 返信
  • 18. © 2024 NTT DATA Group Corporation 18 議論で返信するコツ 翻訳サイトなどを活用して、英文を作成 例えば、日本語で文章を作成して、DeepLで英語翻訳、Grammarlyで添削 https://www.deepl.com/translator https://www.grammarly.com/ 文を無理に長くしない、箇条書きにする、例を出して説明する 他の人のメールやPostgreSQLドキュメント、ソースコメントの 英文を参考にする
  • 19. © 2024 NTT DATA Group Corporation 19 レビューに参加しよう!
  • 20. © 2024 NTT DATA Group Corporation 20 PostgreSQL開発のサイクル 2024年度 2025年度 6 7 8 9 10 11 12 1 2 3 4 5 6 7 8 9 10 11 CF CF CF CF CF v18開発 v17開発 v19開発 CF CF Beta / RC Beta / RC Feature Freeze リリース リリース コミュニティサポート CF CommitFest パッチレビューに 集中する期間
  • 21. © 2024 NTT DATA Group Corporation 21 CommitFest CommitFest Appでレビュー対象のパッチを一覧管理 https://commitfest.postgresql.org/
  • 22. © 2024 NTT DATA Group Corporation 22 CommitFestのワークフロー Needs review レビュー待ち Waiting on Author 開発者の対応待ち Ready for Committer コミッタの判断待ち Committed コミット成功! Moved to next CF 次回CFでレビュー継続 Returned with Feedback 今回CFで十分にレビュー済 Rejected 提案却下 Withdrawn 提案撤回 パッチ修正 レビュー パッチ提案 レビュー完了 差し戻し コミット パッチレビュー中 パッチクローズ 提案撤回 提案却下 レビュー十分 CF終了 パッチ作者 レビュア コミッタ
  • 23. © 2024 NTT DATA Group Corporation 23 レビューするパッチを決める 興味ある機能や分野のパッチ レビューしやすいパッチ ドキュメントやテストケースのパッチ 独立した機能などで影響範囲の小さいパッチ (クライアントツール、contribモジュール、SQL関数など) サイズの小さいパッチ 仕様やI/Fなどの内容がコミュニティで合意済のパッチ メインのレビュアがいるパッチ メインのレビュアによるレビュー内容を勉強しながら、サブのレビュアとして取り組む
  • 24. © 2024 NTT DATA Group Corporation 24 レビュアとして登録する CommitFest App 「Become reviewer」を押して、 レビュアとして登録 CF App 内の各パッチのページ
  • 25. © 2024 NTT DATA Group Corporation 25 パッチを入手する ~ パッチをダウンロード CF App 内の各パッチのページ ML上でパッチについて議論しているメール
  • 26. © 2024 NTT DATA Group Corporation 26 パッチをレビューする 提案レビュー パッチは適用できるか?ドキュメントやテストを含んでいるか? 仕様レビュー パッチは本当に必要か?仕様はコミュニティで合意されているか? 機能テスト 仕様通りに動作するか?クラッシュや想定外のエラーはないか? 性能試験 パッチにより性能劣化しないか? コーディング・レビュー Windowsでも動作するか?コーディング規約に従っているか? アーキテクチャ・レビュー 他機能と一貫性のあるアーキテクチャか? https://wiki.postgresql.org/wiki/Reviewing_a_Patch/ja レビューコメントとして MLで返信する
  • 27. © 2024 NTT DATA Group Corporation 27 パッチを適用、コンパイル、テストする ① ソースの入手、コンパイルに必要なライブラリをインストールする $ sudo dnf install git gcc make bison flex readline readline-devel zlib-devel libicu-devel ② TAPテスト(*)に必要なライブラリをインストールする $ sudo dnf install perl-CPAN $ sudo cpan -i IPC::Run Test::Simple Time::HiRes Test::Harness ③ ドキュメントのコンパイルに必要なライブラリをインストールする $ sudo dnf install docbook-dtds docbook-style-xsl libxslt 環境によって必要なライブラリやインストールのコマンドが異なることに注意! 上記はRHEL8系環境での実行例 (*) PostgreSQLのクライアントツールなどを対象とする追加テスト
  • 28. © 2024 NTT DATA Group Corporation 28 パッチを適用、コンパイル、テストする ④ PostgreSQLのgitレポジトリをクローンする $ git clone git://git.postgresql.org/git/postgresql.git ⑤ パッチ適用先ブランチをチェックアウトする $ cd postgresql $ git checkout master ⑥ パッチ用の新規ブランチを作成する $ git checkout -b xxx $ git branch master * xxx 基本的に「開発中の最新メジャーバージョン」の masterブランチがパッチ適用先 手元環境だと クローンにかかった時間は約15分 レビュー完了後などに パッチ適用を手軽にクリアできるように、 パッチ用のブランチを作成するのがおススメ!
  • 29. © 2024 NTT DATA Group Corporation 29 パッチを適用、コンパイル、テストする ⑦ パッチを適用する $ patch -p1 -d. < $HOME/xxx.patch ⑧ PostgreSQLをコンパイルする $ ./configure --enable-debug --enable-cassert --enable-tap-tests --prefix=$HOME/pgsql/xxx CFLAGS=-O0 $ make -j 4 $ make install デバッグしやすいようにオプションを指定する --enable-debug --enable-cassert --enable-tap-tests CFLAGS=-O0 インストール先のディレクトリを指定する --prefix 時間短縮のため複数多重でコンパイルするように -jオプションを指定するのがおススメ! パッチ適用やコンパイルで発生したエラー・警告は、レビューコメントとしてMLで報告する
  • 30. © 2024 NTT DATA Group Corporation 30 パッチを適用、コンパイル、テストする ⑨ contribモジュールをコンパイルする $ cd contrib $ make $ make install $ cd .. ⑩ ドキュメントをコンパイルする $ make html ⑪ リグレッションテストを実行する $ make -j 4 check-world コンパイルやテストで発生したエラー・警告は、レビューコメントとしてMLで報告する CF登録のパッチは自動的にテストが走り、 その結果をPatch Testerから確認できる http://cfbot.cputube.org/ 時間短縮のため複数多重でコンパイルするように -jオプションを指定するのがおススメ!
  • 31. © 2024 NTT DATA Group Corporation 31 パッチを適用、コンパイル、テストする ⑫ PostgreSQLを起動する $ cd $HOME/pgsql/xxx $ bin/initdb -D data --locale=C --encoding=UTF8 $ bin/pg_ctl -D data start ⑬ パッチの新機能をテストする $ bin/psql ... ⑭ PostgreSQLを停止する $ bin/pg_ctl -D data stop 思いつく限りの新機能の使い方を試してみる!例えば、 入力のバリエーション (境界値、大規模データ、不正値など) 大量実行、複数多重同時実行 物理/論理レプリケーション環境での動作 起動・停止やテストで発生したエラー・想定外動作は、レビューコメントとしてMLで報告する
  • 32. © 2024 NTT DATA Group Corporation 32 パッチをコーディング・レビューする コーディング規約やエラーメッセージのスタイルガイドに従っているか? https://www.postgresql.jp/document/current/html/source.html コメントやドキュメントに内容誤り(古い内容のまま)やTypoはないか? 関数名、変数名、マクロ名、ファイル名などの命名が分かりやすく適切か? 初期化忘れ、クローズ・解放忘れ、戻り値のチェック忘れなどのバグはないか? セグメンテーションフォルトやアサーションエラーを引き起こすコードパスはないか? 無駄、非効率、(必要以上に)複雑すぎる、理解しにくいコードはないか? 例えば、以下の観点でコード上気になる点をレビューコメントとしてMLで報告する
  • 33. © 2024 NTT DATA Group Corporation 33 レビューコメントを返信する レビューコメントの返信メールの例 (抜粋) 変数の初期値の誤りや 初期化忘れを指摘 カラム名の命名が 適切でないことの指摘
  • 34. © 2024 NTT DATA Group Corporation 34 パッチのステータスを変更する 「Change Status」を押して、 パッチのステータスを変更
  • 35. © 2024 NTT DATA Group Corporation 35 CommitFestのワークフロー Needs review レビュー待ち Waiting on Author 開発者の対応待ち Ready for Committer コミッタの判断待ち Committed コミット成功! Moved to next CF 次回CFでレビュー継続 Returned with Feedback 今回CFで十分にレビュー済 Rejected 提案却下 Withdrawn 提案撤回 パッチ修正 レビュー パッチ提案 レビュー完了 差し戻し コミット パッチレビュー中 パッチクローズ 提案撤回 提案却下 レビュー十分 CF終了 パッチ作者 レビュア コミッタ
  • 36. © 2024 NTT DATA Group Corporation 36 パッチのコミットを確認する コミットログの例 レビューしたパッチがコミットされると、 レビュアとして名前がコミットログに 記録される!
  • 37. © 2024 NTT DATA Group Corporation 37 パッチを作成・投稿しよう!
  • 38. © 2024 NTT DATA Group Corporation 38 パッチネタを見つける 取り組み成果やその関連技術をPostgreSQLに組み込む 成果が大きすぎる場合は、細かい技術要素に分けて、少しずつパッチ化できないか考える コミュニティでの議論やパッチレビューでパッチネタを見つける 議論中に新機能のアイデアが出ることや、レビュー中にPostgreSQLの不具合が見つかることが多い PostgreSQLの最新バージョンリリース前後に、そのバージョンの新機能を試す リリース前後は、新機能に不具合が含まれていることが多い
  • 39. © 2024 NTT DATA Group Corporation 39 PostgreSQL開発のフロー 新機能の提案やバグの報告を行う 新機能の必要性やユーザI/F、アーキテクチャ、 実現方法、バグ原因、修正方法などを議論する 議論結果を踏まえて、新機能やバグ修正を コーディングして、パッチを作成・投稿する パッチをレビューして、不備を改修する コミッタがパッチをPostgreSQL本体に取り込む 提案・バグ報告 議論 パッチ作成 レビュー コミット 繰 り 返 し パッチネタについてまずはコミュニティで議論して、その結果にもとづいてパッチを作成するのが基本 パッチを作成してみないと提案・議論しにくい場合は、パッチを先に作成することも
  • 40. © 2024 NTT DATA Group Corporation 40 パッチを作成する ① masterブランチでソースを最新化して、パッチ用のブランチを作成する。 $ git checkout master $ git pull $ git checkout -b new-func ② ソースを改修して、その改修内容をコミットする。 $ emacs ... $ git commit -a -m "Add new func ..." ③ masterブランチからパッチ用ブランチへのソース差分をパッチとして作成する。 $ git format-patch master $ ls *.patch 0001-Add-new-func.patch
  • 41. © 2024 NTT DATA Group Corporation 41 パッチレビューの観点をクリアできているか 提案レビュー パッチは適用できるか?ドキュメントやテストを含んでいるか? 仕様レビュー パッチは本当に必要か?仕様はコミュニティで合意されているか? 機能テスト 仕様通りに動作するか?クラッシュや想定外のエラーはないか? 性能試験 パッチにより性能劣化しないか? コーディング・レビュー Windowsでも動作するか?コーディング規約に従っているか? アーキテクチャ・レビュー 他機能と一貫性のあるアーキテクチャか? https://wiki.postgresql.org/wiki/Reviewing_a_Patch/ja
  • 42. © 2024 NTT DATA Group Corporation 42 パッチレビューの観点をクリアできているか コーディング規約やエラーメッセージのスタイルガイドに従っているか? https://www.postgresql.jp/document/current/html/source.html コメントやドキュメントに内容誤り(古い内容のまま)やTypoはないか? 関数名、変数名、マクロ名、ファイル名などの命名が分かりやすく適切か? 初期化忘れ、クローズ・解放忘れ、戻り値のチェック忘れなどのバグはないか? セグメンテーションフォルトやアサーションエラーを引き起こすコードパスはないか? 無駄、非効率、(必要以上に)複雑すぎる、理解しにくいコードはないか?
  • 43. © 2024 NTT DATA Group Corporation 43 PostgreSQL開発のサイクル 2024年度 2025年度 6 7 8 9 10 11 12 1 2 3 4 5 6 7 8 9 10 11 CF CF CF CF CF v18開発 v17開発 v19開発 CF CF Beta / RC Beta / RC Feature Freeze リリース リリース コミュニティサポート CF CommitFest パッチレビューに 集中する期間
  • 44. © 2024 NTT DATA Group Corporation 44 CommitFestのワークフロー Needs review レビュー待ち Waiting on Author 開発者の対応待ち Ready for Committer コミッタの判断待ち Committed コミット成功! Moved to next CF 次回CFでレビュー継続 Returned with Feedback 今回CFで十分にレビュー済 Rejected 提案却下 Withdrawn 提案撤回 パッチ修正 レビュー パッチ提案 レビュー完了 差し戻し コミット パッチレビュー中 パッチクローズ 提案撤回 提案却下 レビュー十分 CF終了 パッチ作者 レビュア コミッタ
  • 45. © 2024 NTT DATA Group Corporation 45 パッチのコミットを確認する コミットログの例 作成したパッチがコミットされると、 作者として名前がコミットログに記録される! リリースノートの例 ユーザが知るべき機能・改変の場合は、 リリースノートにも記録される!
  • 46. © 2024 NTT DATA Group Corporation 46 さいごに
  • 47. © 2024 NTT DATA Group Corporation 47 参加すると楽しい! PostgreSQLをより深く理解できる・ 使いこなせるようになる 自分の提案に世界中の技術者 から反応がある・議論できる・ 一緒に開発できる・見識も人脈 も広がる 自分の成果として名前が残り、 セルフブランディングになる 自分のコードが世界中で 使われる・感謝される コーディングスキルが向上する コミュニティに参加する モチベーション
  • 48. © 2024 NTT DATA Group Corporation 48 困ったときは日本のコミュニティで相談も 例えば、ほぼ月1ペースで開催のアンカンファレンスでバグのLTをするなど