JavaプログラムでのXML活用術に行ってきました

パソナッテックhttp://www.pasonatech.co.jp/f-java/という無料セミナーをやっていたので喜び勇んで行ってきました。
私はプロフィールにも書いてあるように福岡在住なのでこういったセミナーは本当にありがたい。7/20の「開発者として押さえておくべきJava最新技術動向のポイント」というセミナーは仕事の都合で行き損ねたのですが、昨日「JavaプログラムでのXML活用術 - RSSリーダーの作成とデモ」というセミナーを受講したのでこの場でレポートしたいと思います。

XMLとはなにか

構造化データを記述可能
  • データのまとまりに名前をつけて管理
    • マーク(要素や属性)でひとまとまりのデータに印をつける
  • 複数のまとまりをグループ化できる
    • 単なる日付データを、より上位の概念にまとめる
    • Ex.)日付
<date><year>2006</year><month>7</month><day>25</day></date>
構造化データの例

例えば名刺をXML化するとこうなる。

<person>
    <dept>システム開発部</dept>
    <name>山田太郎</name>
</person>
<company>
   <name>XXX株式会社</name>
   <zip>〒000-0000</zip>
   <address line="1">福岡市博多区・・・</address>
   <address line="2">XXビル2F</address>
   <phonne>092-・・・</phonne>
</company>

上記のようにメタデータとしてのタグと情報を構造化して記述することにより、人間が読むことも容易になる。

構造化することにより
  • 検索をより高速に、より正確に実行できる
    • 「秋田」は県名?苗字?
      • この場合、どのタグの「秋田」を探せばよいかを指定すれば解決する。
  • 冗長になる
    • 意味のわかっている人には無駄な情報が多くなる
<date><year>2006</year><month>7</month><day>25</day></date>
<date>2006-07-25</date>

上記XMLは同様の意味を持つものだが、ケース・バイ・ケースで使い分けなける必要がある。

拡張可能なマーク付け言語
  • XML:eXtensible Markup Language
  • XMLはマーク(要素や属性)で意味を伝える
  • 意味はマークの名前として表現し、ユーザは自由にこれらを決めることができる
  • マークの名前や制約などはスキーマによって定義できる
同じ値でもマークにより意味が異なる例
<age>25</age>
<weight unit="kg">25</weight>
<length unit="cm">25</length>
<minute>25</minute>
<count>25</count>
拡張可能なマーク付けが出来ることにより
  • 処理の自動化
  • 意味を定義し、伝えることが出来る
  • ボキャブラリが増えすぎる
    • これはXMLのデメリット。似たよう意味のマークの頻出や、書いた人にしか意味がわからない「オレオレXML」の発生
インターネットで使いやすい
  • 処理手順が明確
    • DOMやSAXで各マーク(要素や属性)にアクセスする方法が用意されている
  • 文字集合としてUnicodeを採用
    • プログラム上では文字列をすべてUnicodeとして扱うことが出来る
インターネットで使いやすいということで
  • データ設計の敷居を低くする
    • XMLを前提としたデータフォーマットや構造にすることで考えることを少なく出来る
  • 1からパーサを書かなくてもよい
    • DOMやSAXをなどを使用することで文字データの変換を含めてXMLプロセッサに任せることができる
  • デバッグしやすい
    • 人間が可読なフォーマット(XMLメタデータとしてのタグと情報の組み合わせで記述できるから)

XMLの利用例

データの保存と流通
  • 長期的に保管する必要のあるデータ
  • ネットワークなどを経由して、やりとりする必要があるデータ
    • RSS,NewsML(最近はあまり使われていないらしい)
設定ファイル
  • ユーザがプログラムを修正することなくソフトウェアの動作を変更
  • プラットフォームに依存せず、開発環境のポータビリティを高める
プログラミングツール
  • プログラムそのものをXMLで記述
  • 外部プログラム(サービス)を呼び出すために必要な情報をXMLで記述
XML関連技術の使用例
XML + Javaプログラム基礎
  • JavaからXMLを操作する方法
  • XMLを変換する方法
  • JavaXMLの使い勝手向上
    • ユーティリティライブラリ
JAXP:JavaからXMLを使う
XSLT:XMLを変換する
  • XML木構造を変換する
  • 変換はXML以外にHTMLやプレーンテキストも
  • Web系ではおなじみ
    • 一つのXMLからPC用のブラウザや、携帯端末のブラウザに読み込める形式に変換(私は使ったことないけどおなじみらしい)
ユーティリティ:JavaXMLの使い勝手向上

RSSとはなにか

RSSの使われ方

この後は実際に簡単なRSSリーダーを作るサンプルプログラムを紹介し、質疑応答の後講義は終了

感想

せっかくデータベース連携からシステム統合まで、企業システムの「つなぐ」を実現 | アステリア株式会社の方が来てくれたにもかかわらず、30人の枠が埋まらないのは寂しい限りでした。質疑応答でも、一部の人を除いては一切発言もなく盛り上がりに欠けていました。
私個人としては非常に参考になりました。ただ、地力が足りていない為にちょっとしか質疑応答に参加できなかったのが悔やまれるところです。
しかし、手を動かすことのできる情報をたくさんいただいたので今後に生かしたいところです。
私としてはこれに懲りずに、こういったセミナーが地方でも盛んに開催されることを祈ります。