回帰試験、英語では何ていう?

2008年7月12日(土)
石川 俊行

いろいろな支流の発生

 Stonebraker and his graduate students actively developed Postgres for eight years. During that time, Postgres introduced rules, procedures, time travel, extensible types with indices and object-relational concepts.

 "graduate student"は「大学院生」で、「大学の卒業生」ではありません。院生と共同でストーンブレーカは8年間Postgresの開発を精力的に行いました。その間にルール、プロシージャ...などが取り込まれました。"introduce"が「取り込む」を意味します。念のため、"indices"は"index"「索引」の複数形です。

 "time travel"はSFの話ではありません。「時間帯をサポートする機能」、現在の実装の Timestamp with timezone です。ストーンブレーカ先生はその行動から判断するに、象牙の塔の学者というよりビジネス指向が強い方のようです。

 Postgres was later commercialized to become Illustra which was later bought by Informix and integrated into its Universal Server. Informix was purchased by IBM in 2001 for one billion dollars. In 1995, two Ph.D. students from Stonebraker's lab, Andrew Yu and Jolly Chen, replaced Postgres' POSTQUEL query language with an extended subset of SQL. They renamed the system to Postgres95.

 「Postgresはその後商用化されIllustraとなり、さらにInformixに買収されUniversal Serverに統合されました。2001年にInformixはIBMにより10億ドルで買収されています。1995年、ストーンブレーカ研究室の2人の博士課程の学生であったAndrew YuとJolly ChenはPostgresの問い合わせ言語、POSTQUELをSQLの拡張サブセットで置き換えました。この時システムの名称をPostgres95と改名しました」

 "Ph.D. student"は「博士課程の学生」。これら流れを俯瞰すると、Ingresの与えた影響は大変大きいと言えます。

オープンソースへの道

 In 1996, Postgres95 departed from academia and started a new life in the open source world when a group of dedicated developers outside of Berkeley saw the promise of the system, and devoted themselves to its continued development. Contributing enormous amounts of time, skill, labor, and technical expertise, this global development group radically transformed Postgres.

 ここは、訳ではなく読み解きをします。1996年、Postgres95は学究的世界に別れを告げ、バークレー外部の開発者たち(グローバル開発グループ)による開発が始まりました。"academia"は「学究的世界」、"started a new life"は「新しい門出を迎える」「新たな旅立ちを行う」と訳せます。

 グローバル開発グループはシステムの将来性を見い出したからです。"promise"は「見込み」「展望」という意味なので、"saw the promise"は「将来性を見い出す」となります。

 "enormous amounts of"は「膨大な量の」です。時間、技能、作業、専門的知識が投入された結果、Postgresは、"radically"はいろいろ訳せますが「根本的に」"transformed"「変身しました」。続けます。

 Over the next eight years, they brought consistency and uniformity to the code base, created detailed regression tests for quality assurance, set up mailing lists for bug reports, fixed innumerable bugs, added incredible new features, and rounded out the system by filling various gaps such as documentation for developers and users.

 以降、8年間にわたり、コードの一貫性と統一性、品質保証のための詳細な回帰試験の作成、開発を進めるためのメーリングリストの立ち上げ、"innumerable"「数えきれない」バグフィックス、新規機能の追加が行われました。

 "regression tests"は「回帰試験」です。回帰試験は大量に改良を加えられたコードがお互い好ましからざる影響を与えないかを検証するもので、PostgreSQLではソースコードの./configure、gmakeのあと、gmake checkを実行すると結果が表示されます。回帰試験のSQLコードも配布物に同梱されています。

 ドキュメントの整備も最後に触れられています。PostgreSQLのドキュメントはソースコードの開発と密接に連携を取っているため非常に好評です。"round out"は「完成させる」「仕上げる」です。

 では、ここで参考までに回帰試験ソースコード(regress.c)内に記述されたコメントの一部を読んでみましょう。ソースコード内のコメントは、断片的で簡潔に書かれているため、意味を取り違えるとソースの意味も間違って解釈してしまうことになるので、読み方のコツをつかみましょう。まず、コメント文と訳を紹介します。

* the distance from a point to a path is the smallest distance from the point to any of its constituent segments.

 「点から経路までの距離とは、その点から経路の構成線分のいずれかへの最短距離です」

* this essentially does a cartesian product of the lsegs in the two paths, and finds the min distance between any two lsegs.

 「これは基本的に2つの経路における線分のデカルト積を計算し、どんな2つの線分間であっても最短距離を求めます」

* return the point where two paths intersect, or NULL if no intersection.

 「2つの経路の交点を返します。交点がない場合はNULLを返します」

 解説しましょう。PostgreSQLは歴史的な理由から属性として、点、円、多角形などの幾何データ型をサポートします。同時に、これらの型の組み込み関数も用意されています。

 "path"は「経路」もしくは「道」です。"cartesian product"「デカルト積」は「直積」と書かれることもあり、集合間で全ての要素を組み合わせるリレーショナルモデルの基本演算の1つで、データベースシステムの結合の中では、"cross join"「交差結合」と呼ばれるものです。交差結合の結果は膨大になるので明示的にコーディングすることはありませんが、全ての結合処理はこの演算に基づいています。"lseg"は"line segment"で「線分」です。

 回帰試験についてより詳しく知りたい読者はソースコードを解凍して得られる、/postgresql-8.3.3/src/test/regress/READMEを参照してください。

NPO法人日本PostgresSQLユーザ会
昭和21年、東京都生まれ。小樽商科大学数理経済学専攻。PostgreSQLオフィシャルマニュアル和訳プロジェクトに深くかかわる。日本PostgreSQLユーザ会・組織運営担当理事。「ものつくり大学」データベース講座・非常勤講師。http://www.postgresql.jp/

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています