第1部では、開発エキスパートのArul氏にPostgreSQL開発コミュニティーがどんなところなのかを語っていただきました。第2部では、コミュニティーでの開発プロセスや、開発を上手く進めるためのコツ、世界各地にあるユーザーグループについてなど、コミュニティーに関してより深いお話をお聞きします。
「[第1部]PostgreSQLはこう開発する!~コミュニティーってこんな場所~」はこちらへ
[2015年4月24日掲載]
さて、PostgreSQL開発コミュニティーについてもっと詳しくお話を聞いていきたいと思います。
第1部では、開発はメーリングリスト上で行われ、時には1つの機能の開発のために何百通もメールのやりとりする…とお伺いしました。これだけとってみても、企業内での開発とコミュニティー内での開発の進め方には大きな違いがあるという印象なのですが、コミュニティーでの開発プロセスについて教えていただけますか。
第1部でもお話したとおり、コミュニティーでは「次はここを開発しよう」というテーマや機能が、コアメンバーやコミッターによってあらかじめリストアップされているのです。コミュニティーメンバーは主にその機能についてディスカッションしながら開発を進めていきます。
あらかじめ決められた機能しか開発できないのですか?
いいえ、そんなことはありません。コミュニティー側がリストアップした機能とは違うものを開発したい場合は、誰でも新たに提案することができます。
まず「こういう機能を開発したい」ということをメーリングリスト上で提案します。次の設計の段階ではコミュニティーメンバーとの間でメールのやりとりを行い、ディスカッションを重ねていきます。ある程度設計が固まったら、開発者はコミュニティーにプログラムを提出する、といった流れです。
設計段階からコードレビューのステップに進むわけですね。
そうです。コードレビューも基本的にメールベースですね。世界中の開発者がレビュアーとなって質問や指摘をしてくれます。それらに対して改善したプログラムを再提出する…といったプロセスを繰り返していきます。
世界中からの指摘ですか…。ちょっと緊張しますね。
確かに(笑)。でも、よりよいものを作るために必要なプロセスです。
コードレビューの後、いよいよ新機能を承認するかどうかを判断する段階となります。そのための「コミットフェスト」という場が2か月に一度設けられていて、そこにプログラムを提出して承認を受けると、晴れてPostgreSQLの機能として正式に採用されるというわけです。
もしコミットフェストで承認が下りなかった場合は…
その場合はまたコードレビューからやり直し、ですね。
【開発から機能採用までの流れ】
プロセス以外に、コミュニティー内でのルールのようなものはあるのでしょうか?
ええ、あります。最も重要なルールは、「オープンな場で議論する」ということです。
新しい機能を開発する時だけでなく、修正や更新といったレベルでも、先ほど説明したとおりのプロセスを踏んでいきます。開発プロセスは透明化されている必要がありますから、開発に関するやりとは全てメーリングリスト上で行われることが基本ですね。
確かに、信頼性の高い開発を行っていくためにも、すべてをオープンにしておくことは重要ですね。
その通りです。開発プロセス以外のちょっとした疑問やヘルプが必要なときは、コミュニティーメンバーに直接メールしたりすることもありますよ。そのほかにメンバー専用のチャットフォーラムも用意されているので、そこで話し合ったりもしますね。
チャットフォーラムはArulさんも参加されていますか?
ええ、メンバーの意見を聞きたい時には。チャットフォーラムにはコミュニティーメンバーであれば誰でも参加できます。
オープンな場で世界中の仲間の助けを借りながら開発をする…、とても素晴らしい環境だと思いますが、何か苦労するような点はありますか?
苦労というか、コミュニティー単位の活動ならではの難しさといったものはあります。
自分が開発したい機能とPostgreSQL開発コミュニティーがリストアップしている開発項目とが合致していれば問題ないのですが…、限られた用途でしかメリットがないような機能を開発したいとなると、承認を得るのが難しい場合がありますね。そういう時は、開発したい機能の必要性を説明して、コミュニティーに理解してもらう必要が出てくる。標準SQLへの準拠にも配慮しなければいけないですし。
その場合、開発したい機能の必要性をコミュニティーに理解してもらうためのポイントというか、コツのようなものはありますか?
他の開発者の賛同を得ることですね。自分と同じように「この機能は必要だ。ユーザーのニーズに応えている」という意見を持って支持してくれる開発者を集めるのです。賛同してくれる開発者が多ければ多いほど、必要性が高いことの証明になりますから。
自分で仲間を集めないといけないのですね。どうやって世界中の開発者の中から賛同してくれる人を見つけるのでしょう?
まずメーリングリストを使って「この機能に興味のある人は他にいないか」と呼びかけるところからスタートですね。興味をもってくれた開発者がいれば、お互いの要件が合っているかどうかを確認します。他には、自分が開発したい機能について他の開発者とディスカッションして味方を増やしていくという方法もあります。賛同してくれたら、「自分もこの提案に賛成である」とコミュニティー内で公に発言してもらうという具合です。
コミュニティーでの開発は、他の開発者とのコミュニケーションも重要なポイントになってくるということでしょうか。
その通りです。普段からコミュニティー内でどう振る舞うかが大切ですね。他の開発者の提案のディスカッションにも積極的に参加したり、コードレビューに協力したり。そういった普段の活動が、自分自身が提案をした時につながってきます。
開発者同士のつながりも大切ということですね。
ひとつの機能を開発するのに、どのくらいの期間がかかるのですか?賛同者を集めるところからはじめるとなると、それなりに時間がかかると思うのですが…。
開発している機能によって大きく違うのですが、私が最初に開発したCSV Logging機能の場合は、設計から開発まで2カ月くらいかかりましたね。
やはり数ヶ月単位ですか。
ええ、でも開発期間を短縮できるよう工夫することはできます。いきなりポンと提案をするのではなく、その前に宿題を片付けておくといいですね。コミュニティーのメンバーからくるであろう質問や指摘を予想して、あらかじめ対策を練っておいたり検証を済ませておいたり。いざ提案をするときにはこれでベスト、という状態にしてから公の場に出すのです。
メンバーの皆さんは普段メールやチャットでコミュニケーションされていますが、直接顔を合わせる機会としてカンファレンスの開催などもありますね。
はい。年1回、カナダのオタワでPostgreSQL Conference(PG Con)という開発者会議が開催されています。世界中からPostgreSQLの開発者が集まって、今後の開発の方向性や、開発中の機能についてディスカッションが行われます。
2014年は私も参加しました。たくさんの開発者のPostgreSQLに対する情熱を実感できたと思います。実際にはどのくらいの人数だったのでしょう?
【「PostgreSQL Conference開発者会議」でのディスカッション】
参加者は240名くらいですね。PostgreSQLに情熱を傾けている開発者が一堂に集まるわけですから、会場はいつも活気と熱気にあふれていますね。かなり技術的に高いレベルの会話が交わされますよ。
ぜひ、次回も参加できたらと思います。コミュニティーとは別に、PostgreSQLを利用するユーザーのグループが世界各地にありますね。
日本にもJPUG(日本PostgreSQLユーザー会)というユーザーグループがあります。去年そのJPUG主催の「PostgreSQLカンファレンス2014」で講演されていましたね。その時の感想を聞かせていただけますか。
JPUG主催のカンファレンスに参加したのは初めてだったのですが、とても素晴らしいイベントだと思いました。ユーザーグループの中でも、日本のJPUGは特に規模が大きいです。活動もとても活発で、世界中のPostgreSQL開発者やユーザーの間で有名ですよ。
280名以上が参加したと聞いています。内容的にはいかがでしたか?
とても充実していましたね。セッションもバラエティに富んでいましたし、ユーザーだけでなく開発者も参加していましたし。日本でのPostgreSQLの人気の高さを改めて実感しました。
【「PostgreSQLカンファレンス2014」の様子(Arul氏の講演、事務局のみなさん)】
日本の技術者としては嬉しい限りです。
オーストラリアのユーザーグループはどんな様子ですか?ArulさんはオーストラリアのユーザーグループのSyd-PUGを牽引されていると聞いているのですが。
ええ、設立は8年くらい前でしょうか。第1回のSyd-PUGのミーティングには富士通の開発者も参加していました。
本当に立ち上げ当時から関わってこられたのですね。具体的にはどんな活動をされていますか?日本のようにカンファレンスを開いたり?
ええ、カンファレンスで交流することももちろんあります。ですが日本と違うところは、みんな個人の立場で参加しているというところですね。JPUGは日本のメジャーな企業も参加していますが、Syd-PUG含め、他のユーザーグループはだいたい個人で会員になります。Syd-PUGでも法人会員は設けておらず、すべて個人会員です。小規模なカンファレンスで技術的な話をするというのが活動の中心ですね。
ここまでさまざまなお話を聞いてきましたが、世界中の開発者が情熱をもって開発している雰囲気、オープンであろうとする精神、そういったものがとてもよく伝わってきました。
最後に、Arulさんの今後の抱負についてお聞かせください。
コミュニティーに参加している開発者にとっては、「PostgreSQLユーザーの役に立つ機能を開発する」ということこそが一番のモチベーションです。富士通の開発プロジェクトで開発した機能がPostgreSQLの可能性を広げたように、これからもコミュニティーに貢献していきたいですね。PostgreSQLの成長が、技術者としての私の成長にもつながっていきますから。
私も技術者として成長していきたいと考えています。これからもご指導よろしくお願い致します。
こちらこそよろしくお願いします。PostgreSQLの世界を盛り上げていきましょう。
「[第1部]PostgreSQLはこう開発する!~コミュニティーってこんな場所~」はこちらへ
本ページに記載された内容は、掲載日現在のものです。その後予告なしに変更されることがあります。あらかじめご了承ください。