ジェームズ・クラーク (ソフトウェア技術者)

イギリスのソフトウェア技術者

ジェームズ・クラーク(James Clark、1964年2月23日 - )は、タイで活動しているソフトウェア技術者である。SGML/XML 技術、オープンソースなどにおいて、多くの業績がある。W3C (World Wide Web Consortium) の XML ワーキンググループで、技術リーダとして他の人々とともにマークアップ言語 XML1.0 の仕様を設計した。村田真とともにXMLのスキーマ言語RELAX NGの仕様を設計した。

クラークはイングランドイギリス)のロンドンで生まれ、Charterhouse(パブリックスクール)で学び、オクスフォード大学の Merton College で数学哲学を専攻した。1995年にタイのバンコクに移住して現在に至る。

クラークは、2004年11月からタイのソフトウェア産業振興庁 (SIPA; Software Industry Promotion Agency) に勤務している。SIPAでタイにおけるオープンソース技術とオープンな標準技術の振興を仕事としている。また、タイの農村地域での教育を支援する活動を行っている。

クラークは、タイオープンソースソフトウェアセンターという名前の小さな会社を所有している。この会社は、クラークのオープンソースに関わる活動について、法的な側面を取り扱っている。

業績

編集

SGML と DSSSL

編集

クラークは、1991年に ISO において SGMLスタイルシート言語である DSSSLの標準を策定する作業に参加し、その仕様の大部分を作成した。DSSSLは、1996年にISO/IEC 10179:1996として規格が定められた。

クラークは、SGML文書の処理を支援するいくつかのオープンソースソフトウェアを開発した (後述)。

またクラークは、SGMLを次の項で述べるXMLと互換性をもたせるために、SGMLの仕様を改訂する作業を行った一人である。

XML1.0とXPath、XSLTなど

編集

クラークはW3C (World Wide Web Consortium) のXMLワーキンググループに参加し、技術リーダとして、ジョン・ボサックティム・ブレイ村田真などの人々とともに、マークアップ言語 XML1.0の仕様を設計した。XML1.0の仕様はSGMLのサブセットとなっている。1998年2月にW3Cから勧告として公表された。

W3C において XML のいくつかの関連技術の仕様を策定する作業で、大きな役割を果たした。

Associating Style Sheets with XML documents
XML 文書をスタイルシートと関連づけるための、xml-stylesheet処理命令を使う方式の仕様。
XPath
XML 文書の特定の部分(要素や属性)を指定するためのパスの記述方法。
XSLT
XML 文書を構造の異なる別の XML 文書に変換する技術の仕様。スタイルシート技術XSLはこのXSLTとXSL-FOの2つの仕様から構成される。

クラークは XML 文書の処理を支援するソフトウェアも開発している(後述)。

2001年にXML技術への多くの貢献を評価されてIDEAllianceから最初のXML Cup Awardを受賞した。

TREX と RELAX NG

編集

クラークや村田真などの人々は、XML Schemaに対して批判的な立場をとった。XML Schemaは、W3Cが開発を進めていたXMLのための新しいスキーマ言語である。従来使われてきたスキーマ言語であるDTDを代替するものである。XML Schemaは、多くの機能をつめこんだため、仕様が複雑で巨大になっていた。クラークや村田真などXML Schemaに批判的な人々は、XML Schemaの仕様を完全に実���した処理系の開発が困難であること、XMLを活用する技術者にとってXML Schemaのスキーマの読み書きは難しいこと、などを指摘した。

クラークはスキーマ言語TREX (Tree Regular Expressions for XML) を開発した。TREXでは、XML Schemaと異なり、仕様が簡潔になっている。なおほぼ同じ時期に、村田真などの人々も、XML Schemaとは別の新しいスキーマ言語RELAX (Regular Language description for XML) を開発していた。

クラークと村田真は、TREXとRELAX Coreをもとにしてスキーマ言語RELAX NGを設計した。RELAX NGの構文はTREXを発展させたものである。RELAX NGは、2001年12月に OASIS(構造化情報標準促進協会)によって標準化された。ISO においては、2003年に文書スキーマ定義言語 (DSDL、Document Schema Definition Languages) ISO/IEC 19757のPart2として規格化されている。JIS においても規格化される予定である。

クラークは、XML文書がRELAX NGのスキーマに準拠していることを検証するソフトウェアJingを開発した。

オープンソース

編集

クラークは、1987年以降、多くのオープンソースソフトウェアを開発している。また Mozilla FirefoxOpenOffice.orgなどのオープンソースのソフトウェアのタイ語への対応 (localization) を支援している。

groff
テキストの整形を行うソフトウェア。UNIXのツールtroffnroffオープンソースによる実装である。C++で実装されている。クラークはgroffをGNUプロジェクトに寄贈した。groffは、Linuxをはじめとした多くのUNIXに似たオペレーティングシステム (OS) の、基本部分を構成するソフトウェアの一つとなっている(UNIXマニュアルなど)。
sgmls
SGMLの処理系(SGMLパーサ)。チャールズ・ゴールドファーブが開発したARCSGMLというSGMLパーサをもとにして開発された。Cで実装されている。
SP
sgmls の後に一から開発し直したSGMLの処理系。C++で実装されている。SPから派生してOpenSPというSGML処理系が開発されている。
Jade
DSSSLの処理系。C++で実装されている。Jadeから派生してOpenJadeというDSSSL処理系が開発されている。
Expat英語版
XMLの処理系(XMLプロセサ)。Cで実装されている。
XP
XMLの処理系。Javaで実装されている。
XT
XSLTの処理系。Javaで実装されている。
Jing
RELAX NGのバリデータ。XML文書がRELAX NGのスキーマに準拠していることを検証する。Javaで実装されている。
DTDinst
DTDで記述されたスキーマをRELAX NGなどに変換する機能をもつ。Javaで実装されている。
Trang
スキーマを別のスキーマ言語に変換するソフトウェア。RELAX NG、DTD、XML Schemaに対応しており、相互に変換することができる。Javaで実装されている。
nXML mode
EmacsのXMLモード。EmacsエディタにXML文書の編集を支援する機能を追加する。RELAX NGに対応している。Emacs Lispで実装されている。

外部リンク

編集