PostgreSQL 20年史|コミッター石井達夫が振り返る変遷と進化の歴史
世界中で使用されるRDBMSであるPostgreSQLの長い歴史には、どのような変遷があったのでしょうか。長く、PostgreSQLに関わり続ける石井達夫さんに、同ソフトウェアの進化歴史の中にあるキーワードをもとに振り返ってもらいました。
オープンソースのRDBMSであるPostgreSQLは、いまや世界中の人々が利用するソフトウェアとなりました。その歴史は長く、ルーツは30年以上も前にさかのぼります。
PostgreSQLの前身は、カリフォルニア大学バークレー校で1986年に始まったPOSTGRESプロジェクトです。その後、1994年にAndrew Yu氏とJolly Chen氏がPOSTGRESにSQL言語インタプリタを追加し、翌年にPostgres95をリリース。1996年にようやくPostgreSQLという名称が登場します。
こうした変遷を黎明期からその目で見てきた人物がいます。SRA OSS, Inc. 日本支社 取締役支社長の石井達夫(いしい・たつお/
- 変わらないPostgreSQLの本質、抽象データ型の設計思想
- かつて、PostgreSQLはビジネス利用を想定されていなかった
- PostgreSQLが迎えた、2つのパラダイムシフト
- 徹底した合議制で成り立つ、PostgreSQL開発コミュニティ
- リタイア後も、オープンソースへの貢献を続けたい
変わらないPostgreSQLの本質、抽象データ型の設計思想
——石井さんがPostgreSQLと出会われたのは、いつ頃だったのでしょうか?
石井 30年ほど前、PostgreSQLの前身であるPOSTGRESと出会ったことが始まりです。私が37歳の頃だったでしょうか。当時、私の所属するSRAはハワイ大学や富士通との共同研究を行っていました。SRAからハワイ大学の研究所にエンジニアを派遣していたのですが、前任者が帰国したため私が行くことになったのです。

——どんな研究をしていたのですか?
石井 ソフトウェア工学の研究をしており、ソースコードから自動的に情報を引き出す、という特殊なデータ解析をやっていました。あるとき、解析結果を格納しておくためのデータベースが必要になり、「リレーショナルデータベースの上に何かを乗せて、オブジェクト指向的なデータベースを作ってほしい」と頼まれたのです。
リレーショナルデータベースの上にといっても、商用のデータベースは高くて手が出せません。そこで前任者の方が「無料で使えるオープンデータベースがあるよ」と教えてくれたのが、SQLと末尾に付いてない頃のPOSTGRESでした。バージョンは4.2だったと記憶しています。それが、その後PostgreSQLに関わるようになった始まりです。
——当時から現在まで変わらない、“PostgreSQLらしさ”とは何だと思いますか?
石井 前身となるPOSTGRESは、オブジェクト指向や抽象データ型といった設計を盛り込んだデータベースでした。機能が取捨選択されて現在のPostgreSQLに取り込まれているのですが、設計の根幹は今でも変わっていません。
例えば、普通のデータベースの場合、整数型や文字型といった基本的なデータ型は、ビルトインでコードの中に埋め込まれています。ですが、PostgreSQLでは基本的なデータ型でさえもシステムカタログ(RDBMSがテーブルや列の情報などのスキーマメタデータと内部的な情報を格納する場所)に定義されています。
PostgreSQL本体のコードは、整数型や文字型とは何かという情報を一切持ちません。データ型のみならず、演算子や集約関数などの情報もすべてソースコードとは別に定義されています。
——なぜそうした設計が行われてたのでしょうか?
石井 ルーツとなっているバークレー校の研究プロジェクトでは、複素数や地理データなど従来のデータベースにはなかなか取り組めなかった型を追加することを想定して、開発が進められていました。
こうした想定がある場合、内部の実装は具体的なデータ型に依存しない設計になっている方が都合が良いわけです。また、実装がデータ型に依存していないおかげで、ソースコードが非常にすっきりとして読みやすいという利点も生まれます。
かつて、PostgreSQLはビジネス利用を想定されていなかった
——では石井さんが、PostgreSQLへのコントリビューションを開始されたのはどうして?
石井 ハワイで2年ほど過ごして帰国した後に、ある雑誌で記事を書く機会に恵まれました。記事のテーマはWebサイト制作です。当時はまだWebが出始めた頃で、CGIで動的なサイトを作るだけでも最先端の技術という時代でした。今では考えられないでしょう(笑)。
記事内では、サイトのデータを格納するためにPOSTGRESを使っていたのですが、その後、読者の方からPostgres95がリリースされたことを教えていただいたのです。こうしたきっかけでデータベースへの興味が再燃してきたのですが、当時はまだ不便な部分が多かった。使いにくい機能を自分で直しながら、利用するようになりました。
——それがコントリビューションの始まりというわけですね。どのような機能から携わり始めたのですか?
石井 当時のPostgres95は、サン・マイクロシステムズのコンピューター上でしか動かないような作りになっていました。それを他のワークステーションやBSDなどでも動くようにすることから、活動をはじめました。
——便利になった現在のPostgreSQLからは想像もつかないですね。
石井 実は、PostgreSQLをビジネス利用する動きが始まったのは日本が発端だったんです。

——どういったニーズから、PostgreSQLが利用されるようになったのですか?
石井 それまで、ビジネスで使うコンピューターはメインフレームやワークステーションが主でした。会社のなかに、非常に大きなコンピューターが1台だけ置いてあったわけです。ですが、徐々に安価なコンピューターが利用できるようになり、社内にいくつものマシンを配置するようになりました。
商用のデータベースを使うと、何台ものライセンス費用がかかって高価になります。無料で使えるデータベースがあるならば、なるべくそれを使いたいわけです。当時はMySQLがそれほど日本で普及していませんでしたから、必然的にPostgreSQLを使う流れになったわけです。しかし一方で、初期のPostgreSQLはビジネス利用するには壁が多かったのです。
——どのような障壁があったのですか?
石井 笑い話のようなエピソードですが、当時のPostgreSQLはデータベースが許容する同時接続数がせいぜい数人くらいでした。数十人が使おうとすると、たちまちデータベースが落ちてしまう(笑)。同時接続数を管理するための仕組みが存在していなかったんです。
——そんな時代があったのですね……。
石井 それだけでなく、格納するデータに英語しか使えないという課題もありました。文字コード対応をしていなかったんです。それら2つの課題は、私が主に修正コードを書いて対応していきました。
OK. First of all, let me explain the EUC coding schema. EUC can handle up to 4 charcter sets. In EUC-jp, 4 character sets are as follows: char-set 1: left half of JIS X0201(almost identical to 7-bit ASCII) char-set 2: JIS X0208(2 bytes, 8-bit KANJI) char-set 3: right half of JIS X0201(2 bytes, 8-bit KATAKANA) char-set 4: JIS X0212(3 bytes, 8-bit KANJI) Char-sets 2-4 can be distinguished by inspecting the first byte. if the first byte = SS2(0x8e) then char-set = 3; else if the first byte = SS3(0x8f) then char-set = 4; else char-set = 2;
上記はPostgresSQL開発コミュニティのメーリングリストアーカイブに残る、1997年当時の石井さんのテキスト(抜粋)だ。まさに多言語対応を進めていた時期であり、日本語特有のエンコーディングの説明がされている。
——それほど重要な機能を石井さんが実装されていたのですね。どんな手段で、世界中の開発者たちとコミュニケーションしていましたか?
石井 Postgres95の件で連絡していただいた方などと一緒に、メーリングリストを始めました。最初は数人からスタートしたメーリングリストでしたが、数年後には数千人規模にまで大きくなりました。みんなでワイワイ議論しながら、機能についてのやりとりをして。楽しかったですね。
——当時はどのようにして修正コードのやりとりしていたのでしょうか?
石井 それもメールです。新機能の提案をメールに書いて、修正パッチを添付していました。添付されているソースコードを、みんなが自分のローカルマシンでビルドしていたんです。「PostgreSQLをビジネス利用したいので、こういうパッチを当ててください」と連絡をしたら「日本ではそんなに本気でPostgreSQLを使ってるのか」なんて欧米の開発者から驚かれましたね(笑)。良い思い出です。
——なるほど(笑)。
石井 多言語対応を行った際には、世界中の方々からテストを手伝ってもらえましたし、本当に感謝してもらえました。
例えば、中国語対応のパッチは文字コードのスペックを読めば実装できるんですが、ネイティブではない私には、正しく動いているか判断できません。すると中国人の方が「私が見てあげるよ」と手伝ってくれました。
それから、「あなたがこのコードを書いてくれたので、PostgreSQLで自国の言葉が使えるようになった」とメールで感謝の気持ちを伝えていただいたり。善意のボランティアで活動が成り立つことや、利用者から開発者に直接お礼を言ってもらえることは、昔も今もOSSの良いところです。
PostgreSQLが迎えた、2つのパラダイムシフト
続きをお読みいただけます(無料)。

- すべての過去記事を読める
- 過去のウェビナー動画を
視聴できる - 企業やエージェントから
スカウトが届く