SlideShare a Scribd company logo
© 2022 NTT DATA Corporation 1
Open Source Conference 2022 Online/Kyoto
PostgreSQL開発コミュニティに参加しよう!
~2022年版~
2022年7月29日
株式会社NTTデータ 藤井 雅雄
© 2022 NTT DATA Corporation 2
自己紹介
藤井 雅雄
Database Technical Lead @ NTTデータ
データベース研究開発
PostgreSQL 技術支援
PostgreSQLコミッタ
レプリケーション
WAL圧縮
バックアップ進捗確認
pg_bigm(全文検索モジュール) コミッタ
fujii_masao
MasaoFujii
© 2022 NTT DATA Corporation 3
PostgreSQL開発コミュニティに参加しよう!
© 2022 NTT DATA Corporation 4
PostgreSQLコミュニティ (グローバル)
The PostgreSQL Global Development Group
PostgreSQL本体を開発しているコミュニティ
Local User Groups
世界各地 (35ヶ国67地域) にあるPostgreSQLユーザグループ
PUG = PostgreSQL User Group
Events
世界各地でPostgreSQLに関するカンファレンスなどのイベントが開催
Slack, IRC, LinkedIn, etc
様々なチャンネルでPostgreSQLユーザが集まってコミュニケーション
© 2022 NTT DATA Corporation 5
PostgreSQLコミュニティ (日本)
日本PostgreSQLユーザ会
日本のPostgreSQLユーザグループ
JPUG = Japan PostgreSQL User Group
支部
北海道、東北、新潟、名古屋、関西、四国、中国、九州、沖縄
文書・書籍関連分科会
PostgreSQL関連の文書の翻訳
PostgreSQLエンタープライズ・コンソーシアム
PostgreSQLの普及推進を目的とする企業コンソーシアム
PGECons = PostgreSQL Enterprise Consortium
© 2022 NTT DATA Corporation 6
PostgreSQLコミュニティ (日本)
Events
日本の様々なコミュニティ・団体・企業・個人がカンファレンスなどのイベントを開催
PostgreSQL Conference Japan
PostgreSQLアンカンファレンス ...etc
Slack
PostgreSQLに関する日本語Slack
© 2022 NTT DATA 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開発コミュニティに参加しよう!
© 2022 NTT DATA Corporation 8
The PostgreSQL Global Development Group
メーリングリスト Wiki
Gitレポジトリ
コアチーム コミッタ
開発、レビュー、テスト、バグ報告
コントリビュータ
ユーザ
© 2022 NTT DATA Corporation 9
The PostgreSQL Global Development Group
メーリングリスト Wiki
Gitレポジトリ
コアチーム コミッタ
開発、レビュー、テスト、バグ報告
コントリビュータ
ユーザ
参加
選出
選出
7名
28名
v14開発では
415名
© 2022 NTT DATA Corporation 10
The PostgreSQL Global Development Groupに参加の企業例
1 663 Crunchy Data (4)
2 650 EnterpriseDB (7)
3 337 VMWare (3)
4 224 Microsoft (4)
5 126 Fujitsu (1)
6 102 NTT Data (1)
7 44 Zenith Labs, Inc (1)
8 39 Unknown (3)
9 26 Redpill Linpro (1)
10 22 Postgres Professional (2)
11 17 NTT (1)
12 13 University of Cambridge (1)
13 4 credativ (1)
14 2 SRA OSS (1)
※2021年のコミッタ別のコミット数について、
2021年末時点のコミッタの所属企業ごとに集計
※()内の数字は、各企業の所属コミッタ数
2021年の(コミッタ所属の)会社別のコミット数 第30回PostgreSQLアンカンファレンス
資料からの抜粋
© 2022 NTT DATA Corporation 11
モチベーション
PostgreSQL開発コミュニティになぜ参加したいか?
技術者にとってのモチベーションの例としては、
① PostgreSQLの内部や設計思想、仕様、制約などを深く理解できる。
PostgreSQLを効果的に利用できるようになる
② 世界中の様々な技術者たちの考えに触れることで、
技術者としての見識が大きく広がる。様々な技術者とのパイプができる
③ パッチの作成やレビューを通じて、コーディングスキルが向上する
④ 新機能開発やバグ修正の成果に対して世界中から感謝される。
自身の成果として名前が残り、セルフブランディングになる
© 2022 NTT DATA Corporation 12
モチベーション
PostgreSQL開発コミュニティになぜ参加したいか?
事業者にとってのモチベーションの例としては、
① データベース技術の最新動向について早期に情報を入手でき、
事業に活かすことで、その事業領域でのプレゼンスを獲得できる
② 世界中の様々な企業・技術者とパイプができ、
他社とのアライアンスなどの機会につながる可能性がある
③ 事業で必要な機能やバグ修正をPostgreSQLに取り込める。
事業者の技術力アピールやブランド力を向上できる
© 2022 NTT DATA Corporation 13
PostgreSQL開発のフロー
新機能の提案やバグの報告を行う
新機能の必要性やユーザI/F、アーキテクチャ、
実現方法、バグ原因、修正方法などを議論する
議論結果を踏まえて、新機能やバグ修正を
コーディングして、パッチを作成・投稿する
パッチをレビューして、不備を改修する
コミッタがパッチをPostgreSQL本体に取り込む
提案・バグ報告
議論
パッチ作成
レビュー
コミット
繰
り
返
し
© 2022 NTT DATA Corporation 14
議論に参加しよう!
© 2022 NTT DATA Corporation 15
メーリングリストの購読
PostgreSQL開発コミュニティでのコミュニケーションはメーリングリストが基本
PostgreSQL公式サイトでコミュニティアカウントを作成して、4つのMLを購読
pgsql-hackers
新機能の提案やバグ修正、開発課題などについて議論する
pgsql-bugs
ユーザからのバグ報告先。報告されたバグやその修正などについて議論する
pgsql-docs
ドキュメントやその問題、改修などについて議論する
pgsql-committers
コミットされた内容が通知される
© 2022 NTT DATA Corporation 16
議論を読む
藤井がv13向けに
バックアップ取得の
進捗確認機能を
提案したときのメール
© 2022 NTT DATA Corporation 17
議論を読むコツ
興味あるテーマ・機能・バグの議論から読む
OSS-DBの資格取得などを通じて
PostgreSQLの体系的な事前知識を得ておく
英語の長い議論を手軽に読みたいときは、翻訳サイトなども活用
例えば、Shaperで英文を整形して、DeepLで日本語翻訳
https://dream-exp.net/shaper/
https://www.deepl.com/translator
© 2022 NTT DATA Corporation 18
議論で返信する
宛先にMLを含める
内容は公開されることに注意
bottom-posting
返信したい対象の文章を引用して、
その下に返信を記載する
行動規範に則った発言
https://www.postgresql.org/about/p
olicies/coc/ja/
引用
返信
引用
返信
© 2022 NTT DATA Corporation 19
議論で返信するコツ
翻訳サイトなどを活用して、英文を作成
例えば、日本語で文章を作成して、DeepLで英語翻訳、Grammarlyで添削
https://www.deepl.com/translator
https://www.grammarly.com/
文を無理に長くしない、箇条書きにする、例を出して説明する
他の人のメールやPostgreSQLドキュメント、ソースコメントの
英文を参考にする
© 2022 NTT DATA Corporation 20
レビューに参加しよう!
© 2022 NTT DATA Corporation 21
PostgreSQL開発のサイクル
2021年度 2022年度
6 7 8 9 10 11 12 1 2 3 4 5 6 7 8 9 10 11
CF CF CF CF CF
v15開発
v14開発
v16開発
CF CF
Beta / RC
Beta / RC
Feature
Freeze リリース
リリース
コミュニティサポート
CF
CommitFest
パッチレビューに
集中する期間
© 2022 NTT DATA Corporation 22
CommitFest
CommitFest Appでレビュー対象のパッチを一覧管理
https://commitfest.postgresql.org/
© 2022 NTT DATA Corporation 23
CommitFestのワークフロー
Needs review
レビュー待ち
Waiting on Author
開発者の対応待ち
Ready for
Committer
コミッタの判断待ち
Committed
コミット成功!
Moved to next CF
次回CFでレビュー継続
Returned with
Feedback
今回CFで十分にレビュー済
Rejected
提案却下
Withdrawn
提案撤回
パッチ修正 レビュー
パッチ提案
レビュー完了
差し戻し
コミット
パッチレビュー中 パッチクローズ
提案撤回
提案却下
レビュー十分
CF終了
パッチ作者 レビュア コミッタ
© 2022 NTT DATA Corporation 24
レビューするパッチを決める
興味ある機能や分野のパッチ
レビューしやすいパッチ
ドキュメントやテストケースのパッチ
独立した機能などで影響範囲の小さいパッチ
(クライアントツール、contribモジュール、SQL関数など)
サイズの小さいパッチ
仕様やI/Fなどの内容がコミュニティで合意済のパッチ
メインのレビュアがいるパッチ
メインのレビュアによるレビュー内容を勉強しながら、サブのレビュアとして取り組む
© 2022 NTT DATA Corporation 25
レビュアとして登録する
CommitFest App
「Become reviewer」を押して、
レビュアとして登録
CF App 内の各パッチのページ
© 2022 NTT DATA Corporation 26
パッチを入手する
~
パッチをダウンロード
CF App 内の各パッチのページ ML上でパッチについて議論しているメール
© 2022 NTT DATA Corporation 27
パッチをレビューする
提案レビュー
パッチは適用できるか?ドキュメントやテストを含んでいるか?
仕様レビュー
パッチは本当に必要か?仕様はコミュニティで合意されているか?
機能テスト
仕様通りに動作するか?クラッシュや想定外のエラーはないか?
性能試験
パッチにより性能劣化しないか?
コーディング・レビュー
Windowsでも動作するか?コーディング規約に従っているか?
アーキテクチャ・レビュー
他機能と一貫性のあるアーキテクチャか?
https://wiki.postgresql.org/wiki/Reviewing_a_Patch/ja
レビューコメントとして
MLで返信する
© 2022 NTT DATA Corporation 28
パッチを適用、コンパイル、テストする
① ソースの入手、コンパイルに必要なライブラリをインストールする
$ sudo dnf install git gcc make bison flex readline readline-devel zlib-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のクライアントツールなどを対象とする追加テスト
© 2022 NTT DATA Corporation 29
パッチを適用、コンパイル、テストする
④ 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分
レビュー完了後などに
パッチ適用を手軽にクリアできるように、
パッチ用のブランチを作成するのがおススメ!
© 2022 NTT DATA Corporation 30
パッチを適用、コンパイル、テストする
⑦ パッチを適用する
$ 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で報告する
© 2022 NTT DATA Corporation 31
パッチを適用、コンパイル、テストする
⑨ contribモジュールをコンパイルする
$ cd contrib
$ make
$ make install
$ cd ..
⑩ ドキュメントをコンパイルする
$ make html
⑪ リグレッションテストを実行する
$ make -j 4 check-world
コンパイルやテストで発生したエラー・警告は、レビューコメントとしてMLで報告する
CF登録のパッチは自動的にテストが走り、
その結果をPatch Testerから確認できる
http://cfbot.cputube.org/
時間短縮のため複数多重でコンパイルするように
-jオプションを指定するのがおススメ!
© 2022 NTT DATA Corporation 32
パッチを適用、コンパイル、テストする
⑫ 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で報告する
© 2022 NTT DATA Corporation 33
パッチをコーディング・レビューする
コーディング規約やエラーメッセージのスタイルガイドに従っているか?
https://www.postgresql.jp/document/current/html/source.html
コメントやドキュメントに内容誤り(古い内容のまま)やTypoはないか?
関数名、変数名、マクロ名、ファイル名などの命名が分かりやすく適切か?
初期化忘れ、クローズ・解放忘れ、戻り値のチェック忘れなどのバグはないか?
セグメンテーションフォルトやアサーションエラーを引き起こすコードパスはないか?
無駄、非効率、(必要以上に)複雑すぎる、理解しにくいコードはないか?
例えば、以下の観点でコード上気になる点をレビューコメントとしてMLで報告する
© 2022 NTT DATA Corporation 34
レビューコメントを返信する
レビューコメントの返信メールの例 (抜粋)
変数の初期値の誤りや
初期化忘れを指摘
カラム名の命名が
適切でないことの指摘
© 2022 NTT DATA Corporation 35
パッチのステータスを変更する
「Change Status」を押して、
パッチのステータスを変更
© 2022 NTT DATA Corporation 36
CommitFestのワークフロー
Needs review
レビュー待ち
Waiting on Author
開発者の対応待ち
Ready for
Committer
コミッタの判断待ち
Committed
コミット成功!
Moved to next CF
次回CFでレビュー継続
Returned with
Feedback
今回CFで十分にレビュー済
Rejected
提案却下
Withdrawn
提案撤回
パッチ修正 レビュー
パッチ提案
レビュー完了
差し戻し
コミット
パッチレビュー中 パッチクローズ
提案撤回
提案却下
レビュー十分
CF終了
パッチ作者 レビュア コミッタ
© 2022 NTT DATA Corporation 37
パッチのコミットを確認する
コミットログの例
レビューしたパッチがコミットされると、
レビュアとして名前がコミットログに
記録される!
© 2022 NTT DATA Corporation 38
さいごに
© 2022 NTT DATA Corporation 39
困ったときは日本のコミュニティで相談も
例えば、ほぼ月1ペースで開催のアンカンファレンスで開発者に直接話を聞くなど
© 2022 NTT DATA Corporation
その他、記載されている会社名、商品名、又はサービス名は、
各社の登録商標又は商標です。

More Related Content

What's hot (20)

PDF
レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PPTX
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
NTT DATA Technology & Innovation
 
PDF
YugabyteDBを使ってみよう - part2 -(NewSQL/分散SQLデータベースよろず勉強会 #2 発表資料)
NTT DATA Technology & Innovation
 
PDF
Vacuum徹底解説
Masahiko Sawada
 
PDF
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
NTT DATA Technology & Innovation
 
PPTX
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PDF
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
NTT DATA Technology & Innovation
 
PPTX
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
NTT DATA Technology & Innovation
 
PDF
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
Hironobu Suzuki
 
PDF
細かすぎて伝わらないかもしれない Azure Container Networking Deep Dive
Toru Makabe
 
PDF
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PPTX
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PDF
PostgreSQL: XID周回問題に潜む別の問題
NTT DATA OSS Professional Services
 
PDF
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Toru Makabe
 
PDF
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PPTX
サポート エンジニアが Azure Networking をじっくりたっぷり語りつくす会
ShuheiUda
 
PPTX
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PDF
PostgreSQL 15 開発最新情報
Masahiko Sawada
 
PDF
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
NTT DATA OSS Professional Services
 
PPT
Cassandraのしくみ データの読み書き編
Yuki Morishita
 
レプリケーション遅延の監視について(第40回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
オンライン物理バックアップの排他モードと非排他モードについて ~PostgreSQLバージョン15対応版~(第34回PostgreSQLアンカンファレンス...
NTT DATA Technology & Innovation
 
YugabyteDBを使ってみよう - part2 -(NewSQL/分散SQLデータベースよろず勉強会 #2 発表資料)
NTT DATA Technology & Innovation
 
Vacuum徹底解説
Masahiko Sawada
 
YugabyteDBを使ってみよう(NewSQL/分散SQLデータベースよろず勉強会 #1 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLのfull_page_writesについて(第24回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
NTT DATA Technology & Innovation
 
PostgreSQLモニタリングの基本とNTTデータが追加したモニタリング新機能(Open Source Conference 2021 Online F...
NTT DATA Technology & Innovation
 
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
Hironobu Suzuki
 
細かすぎて伝わらないかもしれない Azure Container Networking Deep Dive
Toru Makabe
 
Memoizeの仕組み(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL: XID周回問題に潜む別の問題
NTT DATA OSS Professional Services
 
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
Toru Makabe
 
PostgreSQL16新機能紹介 - libpq接続ロード・バランシング(第41回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
サポート エンジニアが Azure Networking をじっくりたっぷり語りつくす会
ShuheiUda
 
PostgreSQLの統計情報について(第26回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL 15 開発最新情報
Masahiko Sawada
 
PostgreSQL10を導入!大規模データ分析事例からみるDWHとしてのPostgreSQL活用のポイント
NTT DATA OSS Professional Services
 
Cassandraのしくみ データの読み書き編
Yuki Morishita
 

Similar to PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発表資料) (20)

PDF
PostgreSQL開発コミュニティに参加しよう! (オープンデベロッパーズカンファレンス(ODC)2024 発表資料)
NTT DATA Technology & Innovation
 
PPTX
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
NTT DATA Technology & Innovation
 
PDF
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
NTT DATA Technology & Innovation
 
PDF
PostgreSQLのgitレポジトリから見える2024年の開発状況 (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PDF
PostgreSQLコミュニティに飛び込もう
NTT DATA OSS Professional Services
 
PDF
PostgreSQLではじめるOSS開発@OSC 2014 Hiroshima
Shigeru Hanada
 
PDF
10大ニュースで振り返るpg con2013
NTT DATA OSS Professional Services
 
PDF
PGConf.dev 2025 参加レポート (JPUG総会併設セミナー2025 発表資料)
NTT DATA Technology & Innovation
 
PPTX
PostgreSQLのgitレポジトリから見える2021年の開発状況(第30回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PDF
PostgreSQLコミュニティにおける開発プロセスとプロジェクトマネジメント (PM学会 2024年度秋季研究発表大会 発表資料)
NTT DATA Technology & Innovation
 
PDF
PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PDF
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
NTT DATA Technology & Innovation
 
PDF
PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PDF
【Jpug勉強会】10大ニュースで振り返るpg con2013
Daichi Egawa
 
PDF
PostgreSQLのgitレポジトリから見える2020年の開発状況(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PDF
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
NTT DATA Technology & Innovation
 
PDF
C27 基幹領域への適用におけるpostgre sqlの抱える課題 by 原嘉彦
Insight Technology, Inc.
 
PDF
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...
NTT DATA Technology & Innovation
 
PPTX
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
NTT DATA Technology & Innovation
 
PDF
PostgreSQL9.3新機能紹介
NTT DATA OSS Professional Services
 
PostgreSQL開発コミュニティに参加しよう! (オープンデベロッパーズカンファレンス(ODC)2024 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQL開発コミュニティに参加しよう!(PostgreSQL Conference Japan 2021 発表資料)
NTT DATA Technology & Innovation
 
OSSデータベースの開発コミュニティに参加しよう! (DEIM2024 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLのgitレポジトリから見える2024年の開発状況 (第51回 PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLコミュニティに飛び込もう
NTT DATA OSS Professional Services
 
PostgreSQLではじめるOSS開発@OSC 2014 Hiroshima
Shigeru Hanada
 
10大ニュースで振り返るpg con2013
NTT DATA OSS Professional Services
 
PGConf.dev 2025 参加レポート (JPUG総会併設セミナー2025 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLのgitレポジトリから見える2021年の開発状況(第30回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLコミュニティにおける開発プロセスとプロジェクトマネジメント (PM学会 2024年度秋季研究発表大会 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLのgitレポジトリから見える2022年の開発状況(第38回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(Open Source Conference 202...
NTT DATA Technology & Innovation
 
PGCon 2023 参加報告(第42回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
【Jpug勉強会】10大ニュースで振り返るpg con2013
Daichi Egawa
 
PostgreSQLのgitレポジトリから見える2020年の開発状況(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
 
PostgreSQLレプリケーション10周年!徹底紹介!(PostgreSQL Conference Japan 2019講演資料)
NTT DATA Technology & Innovation
 
C27 基幹領域への適用におけるpostgre sqlの抱える課題 by 原嘉彦
Insight Technology, Inc.
 
PostgreSQLのバグとの付き合い方 ~バグの調査からコミュニティへの報告、修正パッチ投稿まで~(PostgreSQL Conference Japa...
NTT DATA Technology & Innovation
 
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
NTT DATA Technology & Innovation
 
PostgreSQL9.3新機能紹介
NTT DATA OSS Professional Services
 
Ad

More from NTT DATA Technology & Innovation (20)

PDF
PostgreSQL18新機能紹介(db tech showcase 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
 
PostgreSQL18新機能紹介(db tech showcase 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 (10)

PDF
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
 
PDF
生成AIパネルトーク(Interop25Tokyo APPS JAPAN M1-07,M2-07 嶋ポジショントーク)
嶋 是一 (Yoshikazu SHIMA)
 
PDF
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LFDT Tokyo Meetup
 
PDF
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
 
PDF
Hyperledger Fabric公式サンプル fabric-samples徹底解説
LFDT Tokyo Meetup
 
PDF
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
 
PDF
SIG-AUDIO 2025 Vol.02 オンラインセミナー SIG-Audioプレゼン資料_オーディオプラグイン開発_塩澤達矢.pdf
IGDA Japan SIG-Audio
 
PDF
ABC2025S LT講演「世界の窓から Androidこんにちは2025」アプリ自動生成の将来?ロボティクスの夢再び?
嶋 是一 (Yoshikazu SHIMA)
 
PDF
プライバシ保護のためのインターネットアーキテクチャの進化 (2025-07-11)
Jun Kurihara
 
PDF
20250630_aws_reinforce_2025_aws_sheild_network_security_director
uedayuki
 
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
 
生成AIパネルトーク(Interop25Tokyo APPS JAPAN M1-07,M2-07 嶋ポジショントーク)
嶋 是一 (Yoshikazu SHIMA)
 
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LFDT Tokyo Meetup
 
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
 
Hyperledger Fabric公式サンプル fabric-samples徹底解説
LFDT Tokyo Meetup
 
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
 
SIG-AUDIO 2025 Vol.02 オンラインセミナー SIG-Audioプレゼン資料_オーディオプラグイン開発_塩澤達矢.pdf
IGDA Japan SIG-Audio
 
ABC2025S LT講演「世界の窓から Androidこんにちは2025」アプリ自動生成の将来?ロボティクスの夢再び?
嶋 是一 (Yoshikazu SHIMA)
 
プライバシ保護のためのインターネットアーキテクチャの進化 (2025-07-11)
Jun Kurihara
 
20250630_aws_reinforce_2025_aws_sheild_network_security_director
uedayuki
 

PostgreSQL開発コミュニティに参加しよう! ~2022年版~(Open Source Conference 2022 Online/Kyoto 発表資料)

  • 1. © 2022 NTT DATA Corporation 1 Open Source Conference 2022 Online/Kyoto PostgreSQL開発コミュニティに参加しよう! ~2022年版~ 2022年7月29日 株式会社NTTデータ 藤井 雅雄
  • 2. © 2022 NTT DATA Corporation 2 自己紹介 藤井 雅雄 Database Technical Lead @ NTTデータ データベース研究開発 PostgreSQL 技術支援 PostgreSQLコミッタ レプリケーション WAL圧縮 バックアップ進捗確認 pg_bigm(全文検索モジュール) コミッタ fujii_masao MasaoFujii
  • 3. © 2022 NTT DATA Corporation 3 PostgreSQL開発コミュニティに参加しよう!
  • 4. © 2022 NTT DATA Corporation 4 PostgreSQLコミュニティ (グローバル) The PostgreSQL Global Development Group PostgreSQL本体を開発しているコミュニティ Local User Groups 世界各地 (35ヶ国67地域) にあるPostgreSQLユーザグループ PUG = PostgreSQL User Group Events 世界各地でPostgreSQLに関するカンファレンスなどのイベントが開催 Slack, IRC, LinkedIn, etc 様々なチャンネルでPostgreSQLユーザが集まってコミュニケーション
  • 5. © 2022 NTT DATA Corporation 5 PostgreSQLコミュニティ (日本) 日本PostgreSQLユーザ会 日本のPostgreSQLユーザグループ JPUG = Japan PostgreSQL User Group 支部 北海道、東北、新潟、名古屋、関西、四国、中国、九州、沖縄 文書・書籍関連分科会 PostgreSQL関連の文書の翻訳 PostgreSQLエンタープライズ・コンソーシアム PostgreSQLの普及推進を目的とする企業コンソーシアム PGECons = PostgreSQL Enterprise Consortium
  • 6. © 2022 NTT DATA Corporation 6 PostgreSQLコミュニティ (日本) Events 日本の様々なコミュニティ・団体・企業・個人がカンファレンスなどのイベントを開催 PostgreSQL Conference Japan PostgreSQLアンカンファレンス ...etc Slack PostgreSQLに関する日本語Slack
  • 7. © 2022 NTT DATA 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. © 2022 NTT DATA Corporation 8 The PostgreSQL Global Development Group メーリングリスト Wiki Gitレポジトリ コアチーム コミッタ 開発、レビュー、テスト、バグ報告 コントリビュータ ユーザ
  • 9. © 2022 NTT DATA Corporation 9 The PostgreSQL Global Development Group メーリングリスト Wiki Gitレポジトリ コアチーム コミッタ 開発、レビュー、テスト、バグ報告 コントリビュータ ユーザ 参加 選出 選出 7名 28名 v14開発では 415名
  • 10. © 2022 NTT DATA Corporation 10 The PostgreSQL Global Development Groupに参加の企業例 1 663 Crunchy Data (4) 2 650 EnterpriseDB (7) 3 337 VMWare (3) 4 224 Microsoft (4) 5 126 Fujitsu (1) 6 102 NTT Data (1) 7 44 Zenith Labs, Inc (1) 8 39 Unknown (3) 9 26 Redpill Linpro (1) 10 22 Postgres Professional (2) 11 17 NTT (1) 12 13 University of Cambridge (1) 13 4 credativ (1) 14 2 SRA OSS (1) ※2021年のコミッタ別のコミット数について、 2021年末時点のコミッタの所属企業ごとに集計 ※()内の数字は、各企業の所属コミッタ数 2021年の(コミッタ所属の)会社別のコミット数 第30回PostgreSQLアンカンファレンス 資料からの抜粋
  • 11. © 2022 NTT DATA Corporation 11 モチベーション PostgreSQL開発コミュニティになぜ参加したいか? 技術者にとってのモチベーションの例としては、 ① PostgreSQLの内部や設計思想、仕様、制約などを深く理解できる。 PostgreSQLを効果的に利用できるようになる ② 世界中の様々な技術者たちの考えに触れることで、 技術者としての見識が大きく広がる。様々な技術者とのパイプができる ③ パッチの作成やレビューを通じて、コーディングスキルが向上する ④ 新機能開発やバグ修正の成果に対して世界中から感謝される。 自身の成果として名前が残り、セルフブランディングになる
  • 12. © 2022 NTT DATA Corporation 12 モチベーション PostgreSQL開発コミュニティになぜ参加したいか? 事業者にとってのモチベーションの例としては、 ① データベース技術の最新動向について早期に情報を入手でき、 事業に活かすことで、その事業領域でのプレゼンスを獲得できる ② 世界中の様々な企業・技術者とパイプができ、 他社とのアライアンスなどの機会につながる可能性がある ③ 事業で必要な機能やバグ修正をPostgreSQLに取り込める。 事業者の技術力アピールやブランド力を向上できる
  • 13. © 2022 NTT DATA Corporation 13 PostgreSQL開発のフロー 新機能の提案やバグの報告を行う 新機能の必要性やユーザI/F、アーキテクチャ、 実現方法、バグ原因、修正方法などを議論する 議論結果を踏まえて、新機能やバグ修正を コーディングして、パッチを作成・投稿する パッチをレビューして、不備を改修する コミッタがパッチをPostgreSQL本体に取り込む 提案・バグ報告 議論 パッチ作成 レビュー コミット 繰 り 返 し
  • 14. © 2022 NTT DATA Corporation 14 議論に参加しよう!
  • 15. © 2022 NTT DATA Corporation 15 メーリングリストの購読 PostgreSQL開発コミュニティでのコミュニケーションはメーリングリストが基本 PostgreSQL公式サイトでコミュニティアカウントを作成して、4つのMLを購読 pgsql-hackers 新機能の提案やバグ修正、開発課題などについて議論する pgsql-bugs ユーザからのバグ報告先。報告されたバグやその修正などについて議論する pgsql-docs ドキュメントやその問題、改修などについて議論する pgsql-committers コミットされた内容が通知される
  • 16. © 2022 NTT DATA Corporation 16 議論を読む 藤井がv13向けに バックアップ取得の 進捗確認機能を 提案したときのメール
  • 17. © 2022 NTT DATA Corporation 17 議論を読むコツ 興味あるテーマ・機能・バグの議論から読む OSS-DBの資格取得などを通じて PostgreSQLの体系的な事前知識を得ておく 英語の長い議論を手軽に読みたいときは、翻訳サイトなども活用 例えば、Shaperで英文を整形して、DeepLで日本語翻訳 https://dream-exp.net/shaper/ https://www.deepl.com/translator
  • 18. © 2022 NTT DATA Corporation 18 議論で返信する 宛先にMLを含める 内容は公開されることに注意 bottom-posting 返信したい対象の文章を引用して、 その下に返信を記載する 行動規範に則った発言 https://www.postgresql.org/about/p olicies/coc/ja/ 引用 返信 引用 返信
  • 19. © 2022 NTT DATA Corporation 19 議論で返信するコツ 翻訳サイトなどを活用して、英文を作成 例えば、日本語で文章を作成して、DeepLで英語翻訳、Grammarlyで添削 https://www.deepl.com/translator https://www.grammarly.com/ 文を無理に長くしない、箇条書きにする、例を出して説明する 他の人のメールやPostgreSQLドキュメント、ソースコメントの 英文を参考にする
  • 20. © 2022 NTT DATA Corporation 20 レビューに参加しよう!
  • 21. © 2022 NTT DATA Corporation 21 PostgreSQL開発のサイクル 2021年度 2022年度 6 7 8 9 10 11 12 1 2 3 4 5 6 7 8 9 10 11 CF CF CF CF CF v15開発 v14開発 v16開発 CF CF Beta / RC Beta / RC Feature Freeze リリース リリース コミュニティサポート CF CommitFest パッチレビューに 集中する期間
  • 22. © 2022 NTT DATA Corporation 22 CommitFest CommitFest Appでレビュー対象のパッチを一覧管理 https://commitfest.postgresql.org/
  • 23. © 2022 NTT DATA Corporation 23 CommitFestのワークフロー Needs review レビュー待ち Waiting on Author 開発者の対応待ち Ready for Committer コミッタの判断待ち Committed コミット成功! Moved to next CF 次回CFでレビュー継続 Returned with Feedback 今回CFで十分にレビュー済 Rejected 提案却下 Withdrawn 提案撤回 パッチ修正 レビュー パッチ提案 レビュー完了 差し戻し コミット パッチレビュー中 パッチクローズ 提案撤回 提案却下 レビュー十分 CF終了 パッチ作者 レビュア コミッタ
  • 24. © 2022 NTT DATA Corporation 24 レビューするパッチを決める 興味ある機能や分野のパッチ レビューしやすいパッチ ドキュメントやテストケースのパッチ 独立した機能などで影響範囲の小さいパッチ (クライアントツール、contribモジュール、SQL関数など) サイズの小さいパッチ 仕様やI/Fなどの内容がコミュニティで合意済のパッチ メインのレビュアがいるパッチ メインのレビュアによるレビュー内容を勉強しながら、サブのレビュアとして取り組む
  • 25. © 2022 NTT DATA Corporation 25 レビュアとして登録する CommitFest App 「Become reviewer」を押して、 レビュアとして登録 CF App 内の各パッチのページ
  • 26. © 2022 NTT DATA Corporation 26 パッチを入手する ~ パッチをダウンロード CF App 内の各パッチのページ ML上でパッチについて議論しているメール
  • 27. © 2022 NTT DATA Corporation 27 パッチをレビューする 提案レビュー パッチは適用できるか?ドキュメントやテストを含んでいるか? 仕様レビュー パッチは本当に必要か?仕様はコミュニティで合意されているか? 機能テスト 仕様通りに動作するか?クラッシュや想定外のエラーはないか? 性能試験 パッチにより性能劣化しないか? コーディング・レビュー Windowsでも動作するか?コーディング規約に従っているか? アーキテクチャ・レビュー 他機能と一貫性のあるアーキテクチャか? https://wiki.postgresql.org/wiki/Reviewing_a_Patch/ja レビューコメントとして MLで返信する
  • 28. © 2022 NTT DATA Corporation 28 パッチを適用、コンパイル、テストする ① ソースの入手、コンパイルに必要なライブラリをインストールする $ sudo dnf install git gcc make bison flex readline readline-devel zlib-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のクライアントツールなどを対象とする追加テスト
  • 29. © 2022 NTT DATA Corporation 29 パッチを適用、コンパイル、テストする ④ 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分 レビュー完了後などに パッチ適用を手軽にクリアできるように、 パッチ用のブランチを作成するのがおススメ!
  • 30. © 2022 NTT DATA Corporation 30 パッチを適用、コンパイル、テストする ⑦ パッチを適用する $ 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で報告する
  • 31. © 2022 NTT DATA Corporation 31 パッチを適用、コンパイル、テストする ⑨ contribモジュールをコンパイルする $ cd contrib $ make $ make install $ cd .. ⑩ ドキュメントをコンパイルする $ make html ⑪ リグレッションテストを実行する $ make -j 4 check-world コンパイルやテストで発生したエラー・警告は、レビューコメントとしてMLで報告する CF登録のパッチは自動的にテストが走り、 その結果をPatch Testerから確認できる http://cfbot.cputube.org/ 時間短縮のため複数多重でコンパイルするように -jオプションを指定するのがおススメ!
  • 32. © 2022 NTT DATA Corporation 32 パッチを適用、コンパイル、テストする ⑫ 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で報告する
  • 33. © 2022 NTT DATA Corporation 33 パッチをコーディング・レビューする コーディング規約やエラーメッセージのスタイルガイドに従っているか? https://www.postgresql.jp/document/current/html/source.html コメントやドキュメントに内容誤り(古い内容のまま)やTypoはないか? 関数名、変数名、マクロ名、ファイル名などの命名が分かりやすく適切か? 初期化忘れ、クローズ・解放忘れ、戻り値のチェック忘れなどのバグはないか? セグメンテーションフォルトやアサーションエラーを引き起こすコードパスはないか? 無駄、非効率、(必要以上に)複雑すぎる、理解しにくいコードはないか? 例えば、以下の観点でコード上気になる点をレビューコメントとしてMLで報告する
  • 34. © 2022 NTT DATA Corporation 34 レビューコメントを返信する レビューコメントの返信メールの例 (抜粋) 変数の初期値の誤りや 初期化忘れを指摘 カラム名の命名が 適切でないことの指摘
  • 35. © 2022 NTT DATA Corporation 35 パッチのステータスを変更する 「Change Status」を押して、 パッチのステータスを変更
  • 36. © 2022 NTT DATA Corporation 36 CommitFestのワークフロー Needs review レビュー待ち Waiting on Author 開発者の対応待ち Ready for Committer コミッタの判断待ち Committed コミット成功! Moved to next CF 次回CFでレビュー継続 Returned with Feedback 今回CFで十分にレビュー済 Rejected 提案却下 Withdrawn 提案撤回 パッチ修正 レビュー パッチ提案 レビュー完了 差し戻し コミット パッチレビュー中 パッチクローズ 提案撤回 提案却下 レビュー十分 CF終了 パッチ作者 レビュア コミッタ
  • 37. © 2022 NTT DATA Corporation 37 パッチのコミットを確認する コミットログの例 レビューしたパッチがコミットされると、 レビュアとして名前がコミットログに 記録される!
  • 38. © 2022 NTT DATA Corporation 38 さいごに
  • 39. © 2022 NTT DATA Corporation 39 困ったときは日本のコミュニティで相談も 例えば、ほぼ月1ペースで開催のアンカンファレンスで開発者に直接話を聞くなど
  • 40. © 2022 NTT DATA Corporation その他、記載されている会社名、商品名、又はサービス名は、 各社の登録商標又は商標です。