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

**ジェームズ・クラーク**（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 Firefox や OpenOffice.orgなどのオープンソースのソフトウェアのタイ語への対応 (localization) を支援している。

; groff
: テキストの整形を行うソフトウェア。UNIXのツールtroffとnroffのオープンソースによる実装である。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で実装されている。

## 外部リンク
* Biography - ジェームズ・クラークのホームページ
* OpenJade と OpenSP - Jade および SP から派生して開発されているオープンソースのソフトウェア
* A Triumph of Simplicity: James Clark on Markup Languages and XML - Dr. Dobb's Journal (DDJ) でのジェームズ・クラークへのインタビュー
* RELAX NG と W3C XML Schema - XML Schema に対する批判
* ジェームズ・クラークが XML Cup Award を受賞
* SIPA - タイのソフトウェア産業振興庁
* W3C - World Wide Web Consortium