「HTMLって聞いたことあるけど、XMLってなに?なんか似てる気がするんだけど…」って思ったこと、ない?プログラミングを勉強したり、仕事でちょっとシステムに触れたりすると、.xmlっていう拡張子のファイルをよく見かけるよね。でも「結局なんなのか」がよくわからないまま、なんとなくスルーしてる人ってめちゃくちゃ多い。この記事を読めば、XMLがどんなものか・何のために使うのか・どこで使われているかがスッキリわかるよ!
- XMLはデータを整理して保存・送受信するための言語で、タグを自分で自由に決められるのが最大の特徴
- HTMLと見た目は似ているが、HTMLは「見た目を作るため」、XMLは「データを記述するため」という目的の違いがある
- WordやExcelの内部、設定ファイル、RSSフィードなど身近なところで今も広く使われているファイル形式
もうちょっと詳しく
XMLは「eXtensible Markup Language(拡張可能なマークアップ言語)」の略で、1998年にW3Cという国際団体が標準化した技術だよ。マークアップ言語っていうのは、つまり「タグを使ってデータに意味をつける書き方のこと」を指してる。HTMLも同じマークアップ言語の仲間なんだけど、XMLは「何を書いてもいい自由帳」、HTMLは「決まったことしか書けない教科書」って感じのイメージ。XMLのすごいところは、人間が読んでもだいたい意味がわかること。<商品名>りんご</商品名>って書いてあれば、「ああ、商品名がりんごなんだな」って一目瞭然だよね。コンピューターはもちろん、人間にも読みやすいっていうのが、XMLが長く使われてきた理由のひとつなんだ。
XMLは「人間にもコンピューターにも読みやすい」データ形式!
⚠️ よくある勘違い
→ 見た目が似てるから同じものと思われがちだけど、目的がまったく別の言語だよ。
→ 両方とも「SGML」という共通の祖先から生まれた別々の言語。HTMLは見た目を作るため、XMLはデータを記述するためのものと、役割が明確に分かれてるんだ。
[toc]
XMLってそもそも何のこと?基本をおさえよう
名前の意味から理解する
XMLは「eXtensible Markup Language」の頭文字をとった言葉だよ。日本語にすると「拡張可能なマークアップ言語」という意味になる。ちょっと難しそうだけど、分解して考えるとシンプルだよ。
まず「マークアップ言語」っていうのは、つまり「タグを使ってデータに意味や構造をつけていく書き方のこと」。<タグ名>内容</タグ名>っていう形で、データを囲むことで「これは何のデータか」を示せる仕組みだよ。HTMLもWordも同じマークアップ言語の一種だよ。
次に「eXtensible(拡張可能)」っていうのが、XMLの一番のウリ。HTMLでは<p>(段落)<h1>(見出し)みたいに、あらかじめ決まったタグしか使えない。でもXMLは「自分でタグを自由に作れる」から、どんな種類のデータでも柔軟に表現できるんだ。これが「拡張可能」って呼ばれる理由だよ。
XMLは「データの入れ物」だと思おう
XMLをイメージするには「ラベルつきの引き出し」を思い浮かべてみて。「名前」「年齢」「住所」ってラベルが貼られた引き出しに、それぞれのデータが整理して入ってるイメージ。コンピューター同士がデータをやり取りするとき、「どの情報がどの項目か」が明確じゃないと混乱するよね。XMLはその「ラベルつき整理整頓」を実現してくれる言語なんだ。
たとえば商品情報をXMLで書くとこんな感じになる:
<商品>
<商品名>りんご</商品名>
<値段>150円</値段>
<産地>青森県</産地>
</商品>
タグの名前を見るだけで「商品名がりんご、値段が150円、産地が青森県」ってすぐわかるよね。これがXMLのわかりやすさだよ。
XMLの書き方・ルールを覚えよう
XMLの基本的な構造
XMLにはいくつかのルールがあって、これを守らないとエラーになるよ。難しくないから一緒に確認してみよう。
まず一番最初の行には「XML宣言」を書くのが基本だよ。XMLの宣言っていうのは、つまり「これはXMLファイルですよ」という宣言のこと。こう書く:
<?xml version="1.0" encoding="UTF-8"?>
versionはXMLのバージョン(基本は1.0)、encodingは文字コード(日本語を使うならUTF-8が無難)を示してるよ。
守らないといけない3つのルール
XMLにはHTMLよりも厳しいルールがある。これを知っておくと、「なんでエラーになるの?」ってなったとき原因がわかるよ。
- 開始タグと終了タグを必ずセットで書く:<名前>田中</名前>のように、開いたタグは必ず閉じる。HTMLだと<br>みたいに閉じないタグもOKだけど、XMLはNG。
- ルート要素はひとつだけ:ファイル全体を包むタグ(ルート要素)は必ず1つ。2つ以上書くとエラーになるよ。
- 大文字・小文字は区別される:<Name>と<name>は別のタグとして扱われる。HTMLは大文字・小文字どちらでもよかったけど、XMLは厳格だよ。
この3つを守れば、XMLの基本的な書き方はOK。最初は「HTMLより厳しい」と感じるかもしれないけど、ルールが明確なぶん間違いを見つけやすいのもXMLの特徴だよ。
属性ってなに?
タグの中に「属性」を書くこともできるよ。属性っていうのは、つまり「タグに追加情報をつけるための書き方のこと」。こんな感じ:
<商品 カテゴリ="果物" 在庫="あり">りんご</商品>
タグの中に「カテゴリ=”果物”」みたいに書くのが属性。メインのデータはタグの中に、補足情報は属性に書くっていう使い分けが一般的だよ。
XMLはどこで使われてるの?身近な例を見てみよう
WordやExcelの中身もXML
「えっ、Wordって普通のソフトじゃないの?」って思うかもしれないけど、実はWordの.docxファイルや、ExcelのやXlsxファイルの中身はXMLでできてるんだ。試しにWordファイルの拡張子を.zipに変えて解凍してみると、XML形式のファイルがたくさん出てくるよ。文字の大きさ、フォント、段落の設定……これらがすべてXMLとして保存されてるんだよ。
アプリの設定ファイル
AndroidスマホのアプリはXMLを使って設定を管理してることが多い。画面のレイアウト(ボタンの位置とか色とか)もXMLで書かれてる。「settings.xml」「config.xml」なんて名前のファイルがあったら、ほぼXMLで設定が書かれてるよ。
RSSフィードってなに?
ニュースサイトやブログを見てると「RSS」って言葉を見かけることがある。RSSっていうのは、つまり「ウェブサイトの最新記事を自動でまとめて配信する仕組みのこと」。このRSSフィードはXML形式で作られてる。RSSリーダーというアプリが、いろんなサイトのRSSを読み込んで、まとめてニュースを見せてくれる仕組みだよ。
企業システム間のデータ連携
銀行や病院、役所などの業務システムでは、今でもXMLがデータのやり取りに使われてることが多い。「EDI」とか「SOAP」っていうシステム間通信の仕組みがXMLベースで作られてることが多くて、特に金融・医療・物流などの業界では根強く使われてるよ。
HTMLとXMLの違いをはっきりさせよう
目的がまったく違う
HTMLとXMLは見た目が似てるせいで混乱しがちだけど、目的がまったく異なるよ。一言でいうと:
- HTML:ブラウザに「どう見せるか」を伝えるための言語
- XML:コンピューターに「どんなデータか」を伝えるための言語
HTMLで書いた<h1>タイトル</h1>は「これは見出しとして大きく表示して」っていう指示。でもXMLで<タイトル>XMLとは</タイトル>と書いたら「これはタイトルというデータだよ」という意味で、見た目には何も影響しない。同じタグを使う書き方でも、役割がぜんぜん違うんだよ。
タグの自由度が違う
HTMLは「使っていいタグ」が決まってる。勝手に<フルーツ>みたいなタグを作ってもブラウザには無視される。一方、XMLはタグを何でも自由に作れる。<患者名><診察日><処方薬>みたいに、業務に合わせたタグを定義できるのがXMLの強みだよ。
ルールの厳しさが違う
HTMLはわりと大雑把で、タグを閉じ忘れてもブラウザがよしなに解釈してくれることが多い。でもXMLはすごく厳格で、ルールを1つでも破るとエラーになる。「完全に正しいXML」のことを「整形式XML(Well-formed XML)」って呼ぶんだけど、つまり「正しい文法で書かれたXMLのこと」を指してるよ。
JSONとXMLの違い:どっちを使えばいいの?
JSONってなに?
JSONは「JavaScript Object Notation」の略で、つまり「JavaScriptのオブジェクトの書き方をベースにしたデータ形式のこと」。こんな見た目をしてるよ:
{
"商品名": "りんご",
"値段": 150,
"産地": "青森県"
}
XMLと同じ情報をJSONで書くと、タグがなくてスッキリしてるのがわかるよね。
XMLとJSONを比べてみよう
同じ「りんごの商品情報」をXMLとJSONで書き比べてみるとこんな感じ:
XMLバージョン:
<商品>
<商品名>りんご</商品名>
<値段>150</値段>
<産地>青森県</産地>
</商品>
JSONバージョン:
{"商品名":"りんご","値段":150,"産地":"青森県"}
JSONのほうが文字数が少なくてコンパクトなのがわかるよね。
どっちを使えばいいの?
正直どちらが「絶対に正しい」ということはなく、使う場面によって向き不向きがある。目安としてはこんな感じ:
- JSONが向いてる場面:WebアプリのAPI通信、JavaScriptとの連携、軽量さが求められるとき
- XMLが向いてる場面:企業の業務システム連携、電子文書(Word・Excelなど)、コメントや属性情報を細かく書きたいとき、厳格なデータ検証が必要なとき
最近のWebサービスではJSONが主流になってきてるのは事実だよ。でもXMLは「業務系・ドキュメント系・歴史のあるシステム」の世界でまだまだ現役。どちらも知っておくと、プログラマーとして仕事の幅が広がるよ。
XMLを覚えると「このシステムはなぜXMLを使ってるの?」「新しくJSONに切り替えるべき?」なんて設計の判断もできるようになってくる。最初は「なんか古い技術?」と思いがちだけど、実際の現場では欠かせない知識だよ。XMLを理解することで、コンピューターがデータをやり取りする仕組み全体がぐっと見えやすくなるはずだよ!
MLって何?わかりやすく解説
