ジェームズ・クラーク (ソフトウェア技術者)
ジェームズ・クラーク(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