PostgreSQL 20年史|コミッター石井達夫が振り返る変遷と進化の歴史

世界中で使用されるRDBMSであるPostgreSQLの長い歴史には、どのような変遷があったのでしょうか。長く、PostgreSQLに関わり続ける石井達夫さんに、同ソフトウェアの進化歴史の中にあるキーワードをもとに振り返ってもらいました。

PostgreSQL 20年史|コミッター石井達夫が振り返る変遷と進化の歴史

オープンソースのRDBMSであるPostgreSQLは、いまや世界中の人々が利用するソフトウェアとなりました。その歴史は長く、ルーツは30年以上も前にさかのぼります。

PostgreSQLの前身は、カリフォルニア大学バークレー校で1986年に始まったPOSTGRESプロジェクトです。その後、1994年にAndrew Yu氏とJolly Chen氏がPOSTGRESにSQL言語インタプリタを追加し、翌年にPostgres95をリリース。1996年にようやくPostgreSQLという名称が登場します。

こうした変遷を黎明期からその目で見てきた人物がいます。SRA OSS, Inc. 日本支社 取締役支社長の石井達夫(いしい・たつお/ 1@tatsuo_ishiiさんです。石井さんは、POSTGRES時代からこのデータベースのユーザーであり、20年以上もの長きにわたりPostgreSQLのコミッターを務めてきました。歴史の生き証人といえる石井さんは、どのような思いでOSSへのコントリビューションを続けてきたのでしょうか? そして、PostgreSQLがたどってきた歩みとは?

変わらないPostgreSQLの本質、抽象データ型の設計思想

——石井さんがPostgreSQLと出会われたのは、いつ頃だったのでしょうか?

石井 30年ほど前、PostgreSQLの前身であるPOSTGRESと出会ったことが始まりです。私が37歳の頃だったでしょうか。当時、私の所属するSRAはハワイ大学や富士通との共同研究を行っていました。SRAからハワイ大学の研究所にエンジニアを派遣していたのですが、前任者が帰国したため私が行くことになったのです。

2
石井達夫さん: PostgreSQLをはじめとする、多彩なオープンソースソフトウェア向けのサービスを展開するSRA OSS, Inc. 日本支社の取締役支社長。1991年、ハワイ大学・富士通・SRAの共同研究にてソフトウェア工学に携わったことをきっかけにデータベースへの関心を深める。2005年より現職。PostgreSQL黎明期から開発にコントリビューションするコミッターの1人。著書に『PC UNIXユーザのためのPostgreSQL完全攻略ガイド』『今すぐ導入!PHP×PostgreSQLで作る最強Webシステム』(ともに技術評論社)などがある。

——どんな研究をしていたのですか?

石井 ソフトウェア工学の研究をしており、ソースコードから自動的に情報を引き出す、という特殊なデータ解析をやっていました。あるとき、解析結果を格納しておくためのデータベースが必要になり、「リレーショナルデータベースの上に何かを乗せて、オブジェクト指向的なデータベースを作ってほしい」と頼まれたのです。

リレーショナルデータベースの上にといっても、商用のデータベースは高くて手が出せません。そこで前任者の方が「無料で使えるオープンデータベースがあるよ」と教えてくれたのが、SQLと末尾に付いてない頃のPOSTGRESでした。バージョンは4.2だったと記憶しています。それが、その後PostgreSQLに関わるようになった始まりです。

——当時から現在まで変わらない、“PostgreSQLらしさ”とは何だと思いますか?

石井 前身となるPOSTGRESは、オブジェクト指向や抽象データ型といった設計を盛り込んだデータベースでした。機能が取捨選択されて現在のPostgreSQLに取り込まれているのですが、設計の根幹は今でも変わっていません。

例えば、普通のデータベースの場合、整数型や文字型といった基本的なデータ型は、ビルトインでコードの中に埋め込まれています。ですが、PostgreSQLでは基本的なデータ型でさえもシステムカタログ(RDBMSがテーブルや列の情報などのスキーマメタデータと内部的な情報を格納する場所)に定義されています。

PostgreSQL本体のコードは、整数型や文字型とは何かという情報を一切持ちません。データ型のみならず、演算子や集約関数などの情報もすべてソースコードとは別に定義されています。

——なぜそうした設計が行われてたのでしょうか?

石井 ルーツとなっているバークレー校の研究プロジェクトでは、複素数や地理データなど従来のデータベースにはなかなか取り組めなかった型を追加することを想定して、開発が進められていました。

こうした想定がある場合、内部の実装は具体的なデータ型に依存しない設計になっている方が都合が良いわけです。また、実装がデータ型に依存していないおかげで、ソースコードが非常にすっきりとして読みやすいという利点も生まれます。

かつて、PostgreSQLはビジネス利用を想定されていなかった

——では石井さんが、PostgreSQLへのコントリビューションを開始されたのはどうして?

石井 ハワイで2年ほど過ごして帰国した後に、ある雑誌で記事を書く機会に恵まれました。記事のテーマはWebサイト制作です。当時はまだWebが出始めた頃で、CGIで動的なサイトを作るだけでも最先端の技術という時代でした。今では考えられないでしょう(笑)。

記事内では、サイトのデータを格納するためにPOSTGRESを使っていたのですが、その後、読者の方からPostgres95がリリースされたことを教えていただいたのです。こうしたきっかけでデータベースへの興味が再燃してきたのですが、当時はまだ不便な部分が多かった。使いにくい機能を自分で直しながら、利用するようになりました。

——それがコントリビューションの始まりというわけですね。どのような機能から携わり始めたのですか?

石井 当時のPostgres95は、サン・マイクロシステムズのコンピューター上でしか動かないような作りになっていました。それを他のワークステーションやBSDなどでも動くようにすることから、活動をはじめました。

——便利になった現在のPostgreSQLからは想像もつかないですね。

石井 実は、PostgreSQLをビジネス利用する動きが始まったのは日本が発端だったんです。

3

——どういったニーズから、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つのパラダイムシフト

エンジニアHubに会員登録すると
続きをお読みいただけます(無料)。
登録のメリット
  • すべての過去記事を読める
  • 過去のウェビナー動画を
    視聴できる
  • 企業やエージェントから
    スカウトが届く