pr
XMLマスターが進化し、V2試験となる。内容はより実践的なものとなり、現場のエンジニアの期待に応えるものとなる。そこで、XMLマスター試験が変更となる背景や変更内容などについて解説する。 |
XMLは、OSやアプリケーションに非依存で、異なるシステム間でのデータ交換フォーマットに適していることから、BtoB、EAIなどのデータ形式として急速に普及した。さらにデータの再利用性や長期保管に優れているという特徴から文書管理、Webコンテンツ管理などにも幅広く利用されている。
最近注目を浴びている「Webサービス」「グリッド」「SOA」なども実装はXMLが中心である。報道、金融、科学、数学、医療、会計、旅行、音楽といった各業務分野でも標準のXMLデータ形式が定められており、いまやXMLは、システム構築に欠かせない重要な要素技術となりつつある。
こうした背景もあり、XMLの技術レベルを測る資格「XMLマスター」は、新しい資格制度の中でとりわけ注目度が高かった。XMLマスターは、@IT自分戦略研究所の読者調査(「〜ITエンジニアのスキルアップ/資格取得動向調査:2004年版〜」)において、「エンジニアが取得したい資格」のベンダニュートラル資格部門で2002年から3年連続で第1位に選ばれている。また、XMLの重要性が増す中で、実際にXMLマスターの資格取得者も1万名を突破しているほどだ(図1)。
|
図1 ベンダニュートラルな資格では、今後取得したい資格の中で第1位なのがXMLマスターである |
このような人気を誇り、ITエンジニアに身近になったXMLマスターが、2005年6月よりV2(バージョン2)試験に刷新されるという。これまでのXMLマスターは技術仕様の知識を中心に出題が行われていたが、XMLが本格的にシステム構築で使われ始めたことに対応し、2005年6月からは知識よりも応用力を重視し、比較表のように、より実践的な内容に衣替えするという。
■XMLマスター:ベーシック 現行試験とV2試験の比較表
|
現行試験 |
XMLマスター V2試験 |
試験時間 |
60分 |
60分 |
出題数 |
40問 |
50問 |
合格基準 |
70%以上 |
70%以上 |
試験範囲 |
セクション1 XML
セクション2 XSLT
セクション3 DTD
セクション4 XML Schema
セクション5 XPath
セクション6 DOM, Namespace |
セクション1 XMLの概要
セクション2 XML文書の作成
セクション3 DTD
セクション4 XML Schema
セクション5 XSLT, XPath
セクション6 名前空間 |
|
XMLマスター:ベーシック V2試験範囲の詳細はXMLマスターのWebサイトに掲載されている。
■XMLマスター:プロフェッショナル 現行試験とV2試験の比較表
|
現行試験 |
XMLマスター V2試験 |
試験時間 |
90分 |
90分 |
出題数 |
50問 |
40問 |
合格基準 |
80%以上 |
80%以上 |
受験の前提 |
◇XMLマスター:ベーシック試験の合格 |
◇XMLマスター:ベーシック試験の合格(バージョンは問わない)
◇簡単なJavaコーディングの読解力 |
試験範囲 |
セクション1 XML処理システムの構築概要
セクション2 XSLT
セクション3 DOMプログラミング
セクション4 SAXプログラミング
セクション5 Webサービス概要 |
セクション1 DOM/SAX
セクション2 DOM/SAXプログラミング
セクション3 XSLT
セクション4 XML Schema
セクション5 XML処理システム構築技術
セクション6 XML要素技術の活用 |
|
XMLマスター:プロフェッショナル V2試験範囲の詳細はXMLマスターのWebサイトに掲載されている。
それでは、新しいV2試験では、実際にどんな問題が出題されるのかを見てみよう。
■XMLマスター:ベーシック V2試験サンプル問題
問題
下記の条件を満たしている最も適切なXML Schema文書を選択してください。
・「製品名」要素の内容のデータタイプは文字データである。
・「製品名」の既定値は"ジャケット"とする。
・「製品名」要素には「入荷日」属性を指定しなければならない。
・「入荷日」属性の値のデータタイプは年月日を表す日付データである。
A. |
<?xml version="1.0" encoding="Shift_JIS" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="製品名" type="xs:string" default="ジャケット">
<xs:complexType>
<xs:attribute name="入荷日" type="xs:date" use="required" />
</xs:complexType>
</xs:element>
</xs:schema> |
B. |
<?xml version="1.0" encoding="Shift_JIS" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="製品名" type="product_type" default="ジャケット">
<xs:complexType name="product_type">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="入荷日" type="xs:date" use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:schema> |
C. |
<?xml version="1.0" encoding="Shift_JIS" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="製品名" type="product_type" default="ジャケット"/>
<xs:complexType name="product_type">
<xs:attribute name="入荷日" type="xs:date" use="required" />
</xs:complexType>
</xs:schema> |
D. |
<?xml version="1.0" encoding="Shift_JIS" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="製品名" type="product_type" default="ジャケット"/>
<xs:complexType name="product_type">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="入荷日" type="xs:date" use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:schema> |
解説
この問題は、要件に合ったXML Schema文書を作成、確認できる能力を問う問題のサンプルです。1つの要素が内容として文字列だけを持つ場合、XML Schemaでは単純型(simpleType)を使用しますが、単純型は属性を持つことができません。単純型に属性の定義を加えて拡張する場合、複合型(complexType)を使用します。
ただし、要素の内容は単純型ですので、complexType要素の子要素にsimpleContent要素を記述します。そして simpleContent要素の子要素にextension要素を記述し、属性の定義を追加します。このとき、extension要素のbase属性に要素の単純型を指定します。
正解は D となります。
■XMLマスター:プロフェッショナル V2試験サンプル問題
問題
資料ボタンを押して参照される[XML文書]を読み込み、次の[DOMによる処理]でXMLを作成します。結果をXML 1.0で表現したものとして最も適切なものを選択してください。ただし結果の改行やインデントは考慮しません。また、処理するXMLにはインデント(改行やタブなどの無意味な空白)は無いものとします。
[XML文書] |
<ContactXML xmlns="http://www.xmlns.org/2002/ContactXML" version="1.1"
creator="http://www.foo.com/bar/meishi-app/1.1">
<ContactXMLItem>
<PersonName>
<PersonNameItem xml:lang="ja-JP">
<FullName pronunciation="ヤマダ タロウ">山田 太郎</FullName>
<FirstName pronunciation="タロウ">太郎</FirstName>
<LastName pronunciation="ヤマダ">山田</LastName>
</PersonNameItem>
</PersonName>
</ContactXMLItem>
<ContactXMLItem>
<PersonName>
<PersonNameItem xml:lang="ja-JP">
<FullName pronunciation="スズキ イチロウ">鈴木 一郎</FullName>
<FirstName pronunciation="イチロウ">一郎</FirstName>
<LastName pronunciation="スズキ">鈴木</LastName>
</PersonNameItem>
</PersonName>
</ContactXMLItem>
</ContactXML> |
[DOMによる処理]
次のメソッドでXMLを作成します。
Document output = createXML( doc, impl ); |
このとき変数docは、読み込んだXML文書のDocumentインスタンスを参照しています。
また変数implは、DOMImplementationのインスタンスを参照しています。
DOMパーサは名前空間を識別します。
実行時のエラーはないものとします。
public static Document createXML( Document
doc, DOMImplementation impl ) {
String DOCNS = "http://www.xmlns.org/2002/ContactXML";
String OUTNS = "urn:xmlmaster:GROUP";
Document output = impl.createDocument( OUTNS, "group",
null );
Element root = output.getDocumentElement();
NodeList nlist = doc.getElementsByTagNameNS( DOCNS, "PersonNameItem" );
Element current;
Element target;
Element element;
for (int i = 0; i < nlist.getLength(); i++) {
current = (Element)nlist.item(i);
target = (Element)current.getFirstChild();
element = output.createElementNS( OUTNS, "member" );
element.appendChild( output.importNode(target, true) );
root.appendChild( element );
}
return output;
} |
A. |
<group xmlns="urn:xmlmaster:GROUP">
<member>
<FullName pronunciation="スズキ イチロウ">鈴木 一郎</FullName>
<FullName pronunciation="ヤマダ タロウ">山田 太郎</FullName>
</member>
</group> |
B. |
<group xmlns="urn:xmlmaster:GROUP">
<member>
<FullName xmlns="http://www.xmlns.org/2002/ContactXML"
pronunciation="ヤマダ タロウ">山田 太郎</FullName>
</member>
<member>
<FullName xmlns="http://www.xmlns.org/2002/ContactXML"
pronunciation="スズキ イチロウ">鈴木 一郎</FullName>
</member>
</group> |
C. |
<group xmlns="urn:xmlmaster:GROUP">
<member>
<PersonNameItem xml:lang="ja-JP">
<FullName pronunciation="スズキ イチロウ">鈴木 一郎</FullName>
<FirstName pronunciation="イチロウ">一郎</FirstName>
<LastName pronunciation="スズキ">鈴木</LastName>
</PersonNameItem>
<PersonNameItem xml:lang="ja-JP">
<FullName pronunciation="ヤマダ タロウ">山田 太郎</FullName>
<FirstName pronunciation="タロウ">太郎</FirstName>
<LastName pronunciation="ヤマダ">山田</LastName>
</PersonNameItem>
</member>
</group> |
D. |
<group xmlns="urn:xmlmaster:GROUP">
<member>
<PersonNameItem xml:lang="ja-JP">
<FullName pronunciation="ヤマダ タロウ">山田 太郎</FullName>
<FirstName pronunciation="タロウ">太郎</FirstName>
<LastName pronunciation="ヤマダ">山田</LastName>
</PersonNameItem>
</member>
<member>
<PersonNameItem xml:lang="ja-JP">
<FullName pronunciation="スズキ イチロウ">鈴木 一郎</FullName>
<FirstName pronunciation="イチロウ">一郎</FirstName>
<LastName pronunciation="スズキ">鈴木</LastName>
</PersonNameItem>
</member>
</group> |
解説
この設問はContactXMLを例にした、DOMプログラミングの問題です。このようにV2試験では、実際の業界団体が定義したボキャブラリを用いた設問などもあります。設問文章の「資料ボタンを押して参照される」とは、[XML文書]が別ウィンドウになっていることを示しており、この設問では、[XML文書]と[DOMによる処理]を見比べながら問題を解くことになります。
DOMプログラミングに関する設問では「結果をXML 1.0で表現したもの」といった表現を使用しています。これはDOMのLevel 2までではDOMツリーのシリアライズに関する規定がなく、DOMツリーをXML文書として出力した際に名前空間宣言が出力されない場合があり、そのため「DOMツリーをXML文書として出力したもの」を設問として問うことができず、従ってDOMツリーそのものがどうであるかを問うためです。また「インデント」に関する記述もあります。これはDOMに限らずその他の設問にも言えることですが、インデントの有無で結果が変わることもありますので注意を促しています。
この設問ではインデントが含まれた場合に実行時エラーとなることがありますが、設問では「インデントは無いもの」となっています。[DOMによる処理]では「実行時のエラーはない」ということですので、メソッド名のつづり間違いや、取得できていないオブジェクト(null)に対する間違った操作などはないということが分かります。純粋に、APIの基本的理解ができているか、プログラムされている処理内容を読み取ることができるか、が問われます。
この設問では、forブロックでのノード操作、ノードをインポートした際の名前空間、appendChildメソッドでのノードの位置、などが問われており、正解はBとなります。
コラム XMLマスター
V2ベータ試験受験者に聞く |
|
XMLマスター V2ベータ試験をモニタ受験した株式会社日立システムアンドサービス 人財教育部の野田
洋平氏に受験後の所感を聞いた。
|
日立システムアンドサービス
人財教育部 野田 洋平氏 |
ベーシック、プロフェッショナル共に、随分と解き応えのある問題になった印象を受けました。これまでのような、暗記問題は影を潜め、より実践的な知識を問われる問題がほとんどでした。ですから、「参考書を読んでおぼえるだけ」のような、生半可な学習では太刀打ちできそうにありません。合格するには、DTD,XML
Schemaを読み取る力や、DOM,SAXのプログラミング力を十分に養っておく必要があるでしょう。インフォテリア認定教育センター(ICEC)などのXMLマスター認定トレーニングを受講することも有効な手段の1つだと思います。今回の改訂で、随分と歯応えのある試験となった感がありますが、「V2試験に合格=XML技術者として十分な技術レベル」と言えるような試験だと私は思います。 |
さて、今回の試験改訂について、XMLマスター主催者であるXML技術者育成推進委員会運営事務局の穴沢悦子氏に聞いた。
今回の改訂は難易度をあげるのが目的なのでは、と勘違いされる方もいらっしゃるようですが、決して難しくしようとしたわけではありません。より実践力、応用力のあるXML技術者を輩出するための試験であることを目指したものです。
V2試験策定に当たっては、理事企業(インフォテリア、NEC、NECソフト、大塚商会、グローバルナレッジネットワーク、日本アイ・ビー・エム、日立システムアンドサービス、日立製作所、PFU、富士通)内の現場のSE、IT教育従事者によるワーキンググループを作り、どんなXML技術がいま現場で必要とされているのかを何度も議論しそれを叩き台としました。またワーキンググループメンバ自らが出来上がった試験を、実際に時間を計りながら受験してコメントを出し合い、改良を加えるという過程を経ましたので、SEの真の実力を測る骨のある試験問題に仕上がりました。現場で必要とされる技術力の認定ということにこだわったV2試験により、XMLマスターの価値はいままで以上に高いものになると確信しています。
Q. |
XMLマスター:ベーシック試験は何が変わるのですか? |
|
これまでは「XMLの特徴」や「どこに利用すればよいのか」といったことを判断できることに重点をおき、比較的XML基礎知識の比重を高くしていたのですが、今回、実践技術力を重視し、基礎知識よりも実際にサンプルコーディング、インスタンスを見ながら解く問題の比重を高めました。また、最近はスキーマ定義をXML Schemaで行うケースが多くなりましたので、XML Schemaの出題数も増やしました。名前空間の問題も若干増やしています。その分XMLマスター:ベーシックの総出題数が40問から50問に増えています。
Q. |
XMLマスター:プロフェッショナル試験は何が変わるのですか? |
|
これまでのXMLマスター:プロフェッショナルはWebサービスの知識なども多く設問されましたが、V2試験では実際のシステム構築技術にフォーカスします。V2試験は、JavaのコードやXSLTスタイルシート、XML Schemaを提示した問題を中心に構成されます。V2試験から新たに作成されたセクション6の「XML要素技術の活用」は1つの問題の中に複数の要素技術が使用される総合技術力テスト問題となっています。
Q. |
プロフェッショナル試験はJavaの知識がないと合格できなくなるのですか? |
|
XMLマスター:プロフェッショナル V2試験にはJavaのコーディングが多数でてきますが、問題を解く上で必要な知識はDOMやSAXなどのAPIとアルゴリズムを理解するプログラム読解力がメインとなりますので、Java以外のプログラミング言語経験者でも事前にいくつか練習問題を解いていれば問題のないレベルです。
Q. |
XMLマスター V2試験を目指して勉強する方法を教えてください。 |
|
XMLマスター V2試験はこれまでに比べXML SchemaやXSLTなどのXML関連技術についても深い知識が必要となります。2005年4月からはV2対応の講習会も各社で開催されますので、XML SchemaやXSLTについても体系立てて学習を行うことをお勧めします。また、実際にプログラムを実行したり、演習問題を解いたりということでロジックを追う訓練も必要だと思います。これらは実業務にプラスになる勉強法でもありますので、じっくり考えながら解くのがよいと思います(V2対応のトレーニングコースや書籍は記事右を参照ください)。
企画:アットマーク・アイティ人財局
制作:アットマーク・アイティ編集局
掲載内容有効期限:2005年2月16日