PostgreSQL が私に与えてくれたもの (3)
国際化対応の実現
このように,時間のない中,開発を続けていたうちで最大のものは,2002 年リリースの PostgreSQL 7.3 で, デフォルトでマルチバイトをサポートしたことです. これは単に configure で指定しなくてもマルチバイトサポートがデフォルトになる,という単純なものではなく, マルチバイトをサポートすることによってマルチバイトを使わないユーザでも不利益にならないように考慮する必要があったのです.
そのために,次のものを実装する必要がありました.
- 文字コード変換モジュールの動的ロード
とくに Unicode 関係はコード変換テーブルが巨大になるため,必要なもののみ動的にロードできるようにしました.
- 文字コードの管理用のシステムカタログ
システムカタログの追加は初めての経験だったので,結構大変でした. PostgreSQL ではシステムカタログを追加するとかなりの作業が発生します. たとえば内部的に持っているシステムカタログ専用のキャッシュへの追加,システムカタログ間の依存性をトラッキングする処理などです.
- 新しい SQL 文の追加
新しい機能は SQL からも利用できなければなりません. 具体的には,CREATE CONVERSION などの SQL 文を追加するために,SQL パーサの変更,対応するモジュールの実装などを行いました.
この作業を行うことにより,筆者の長年のテーマであった国際化対応に一区切りが付きました注8.
ビジネスとしての PostgreSQL
こうして開発者として活動する傍ら,本業のほうでも PostgreSQL 関連の製品開発を行っていきました. とくに印象深いのは "PowerGres on Windows" の開発です.
当時 PostgreSQL はまだ Windows には対応しておらず,UNIX や Linux に比べるとはるかに多い Windows ユーザを取り込むことができていませんでした. そこで PostgreSQL 7.3 をベースに,Windows へのポーティング作業を行いました. また,どうせ Windows 対応するのであればスレッドを使おう,ということで,PostgreSQL プロセスモデルからスレッドモデルに変更する作業も行いました.
予想していたこととは言え,この作業は困難を極め注9,一時は無理かとも思いましたが, 優秀な若手エンジニアの参加もあって,ついに 2003 年には製品化にこぎつけました.
その後,PowerGres on Windows のコードは PostgreSQL コアメンバの手に渡され, PostgreSQL 8.0 で実装された Windows 対応用のコードにも活用されました.
pgpool の開発
PostgreSQL が企業でますます使われるようになるにつれ,PostgreSQL 単体では達成できないような性能と信頼性が要求されるようになりました. そこで筆者は PowerGres on Windows の開発が終わった 2003 年から,PostgreSQL にコネクションプール, レプリケーションなどの機能を追加するミドルウェア "pgpool" の開発に着手しました.
pgpool の PgFoundry への登録と,コミュニティプロジェクトへの進化
pgpool は個人プロジェクトとしてスタートしましたが,2005 年 1 月には PostgreSQL 関連プロジェクトをホスティングする PgFoundry にプロジェクト登録,2006 年 2 月には著作権 を "pgpool Global Development Group" という仮想的な団体に委譲し, 本格的にコミュニティプロジェクトとしてスタートするに至りました.
PgFoundry は SourceForge と同様,CVS/メーリングリスト/バグトラッキングシステムなどの 開発に必要な機能をひととおり揃えており,開発を快適に進めることができます. わりと気軽にプロジェクト登録できますので,個人的に PostgreSQL のツールを開発している方は, この機会に PgFoundry にデビューしてみてはいかがでしょう?
pgpool-II への進化
2006 年になると,pgpool は pgpool-II へと進化します. これは,IPA(独立行政法人情報処理推進機構)の支援を受けたプロジェクトで, pgpool にパラレルクエリ(並列問い合わせ実行機能)を追加することをおもな目的にするものでした. PostgreSQL でパラレルクエリを実行できるオープンソースソフトウェアはなかったので,ならば作ってしまえ,というのが開発をはじめた動機です.
GUI ツールも併せて開発したこともあり, PowerGres on Windows 以来の大規模プロジェクトになりましたが, 2006 年の 9 月には無事リリースにこぎ着け,pgpool 同様,PgFoundry で開発が継続しています.
最後に
postgres との出会いから数えれば,気がつくと15 年という歳月が流れていました. 今回本稿を書くにあたって各種アーカイブを検索したり,資料にあたったりしましたが,振り返ってみると楽しい思い出ばかりです.
今言えるのは,PostgreSQL に関わっていて,1 つとして無駄な経験はなかった,ということです. 本当にたくさんのことを PostgreSQL,そして多くの素晴らしい人々との出会いの中で学びました.
今後はこの経験を若い人に伝えていくとともに,少しでも PostgreSQL のコミュニティにお返しできれば,と思います. そのためには,日々の精進が大切,ということで電車の中でソースコードと戦う日々が当分続きそうです.
- 注8:
- といっても,テーブルや列単位で違う文字コードを使えるようにするとか,やり残していることは多々あります.
- 注9:
- 何せ,PostgreSQL のコアメンバですら手を出していない作業でしたから,当然と言えば当然です.
(2008年12月2日公開)