Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

Java開発者のためのYAML入門:XMLやJSONとの違い

YAMLファイル形式の概要

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2008/09/15 14:00

Java開発者のために、YAMLファイル形式の概要についてまとめました。XMLやJSONとの違いを知り、その利点と弱点を押さえておきましょう。

目次

はじめに

 Ruby、Groovy、Pythonといった動的言語や、Ruby on Railsなどの関連フレームワークの話題が花ざかりの昨今ですが、この記事をお読みくださっているJava開発者の中には、普段の仕事では純粋なJavaしか使わず、今後も当分はその状況が続くという方も多いことでしょう。しかしそれでも、目新しい知識や技術を身に付けたり、自らの開発に役立てたりということは可能なはずです。

 この記事では、YAMLというファイル形式について紹介します。YAMLとは「YAML Ain't Markup Language」の略で、Ruby on Railsフレームワークの設定ファイルに採用されたことで広く知られるようになりました。ここでは、YAMLの概要と、XMLやJSONとの違いについて見ていき、その利点と弱点を探っていきます。

スペースによるインデントとJSON風表記

 YAMLでは、スペースによるインデントを使ってデータの階層構造を示す表記方法が基本です。XMLのようなタグのネストや、JSONのような中かっこ({})と角かっこ([])による表記ではありません。ただしYAMLは、JSONのスーパーセットでもあります。そのため、必要に応じて、スペースによるインデント表記からJSON風の表記へと切り替えることも可能です。YAMLの発案者たちはYAMLのことを、「すべてのプログラミング言語のための、人に優しいデータシリアライゼーション方式の標準」だと言っています。私の経験では、「人に優しい」ことを重視した点が、YAMLならではの大きな特徴です。

 スペースによるインデントを用いた、純粋なYAMLの例を見てみましょう。YAMLファイルを作成するときには、スペースの幅が重大な意味を持つので、固定幅のフォントを使うことが大事です(補足説明「YAMLとタブ」を参照)。

JFrame:
    defaultCloseOperation: JFrame.EXIT_ON_CLOSE
    title: Test Frame
    width: 800
    height: 400
    components:
        - JTextArea:
             name: textArea1
             text: |
               This is a really long text
               that spans multiple lines (but preserves new lines).
               It does not need to be escaped with special brackets,
               CDATA tags, or anything like that
        - JButton:
             name: button2
             text: Button 2

 次の例のように、必要に応じて途中からJSON風の表記に切り替え、インデントによる表記と混在させることも可能です。

JFrame:
    defaultCloseOperation: JFrame.EXIT_ON_CLOSE
    title: Test Frame    width: 800
    height: 400
    components:
        - JTextArea:
             name: textArea1
             text: |
               This is a really long text
               that spans multiple lines (but preserves new lines).
               It does not need to be escaped with special brackets,
               CDATA tags, or anything like that
        - JButton: {name: button2, text: Button 2} #JSON syntax

 JSON風の表記への切り替えは、最下位レベルのノード(子供がないノード)で行うのが特に好都合です。また、上の例にもあるように、シャープ記号(#)を使うことで、YAMLファイルの中にコメントを記述できます。

YAMLとタブ

 スペースのインデントを用いたファイル形式でよく見られるのが、タブがどのように解釈されるかという問題です。YAMLの場合、答えは簡単で、ファイル内でタブは一切サポートされていません。スペースの代わりにタブを用いてインデントすると、処理時に例外が発生します。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • japan.internet.com(ジャパンインターネットコム)

    japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.com や EarthWeb.c...

  • Jacek Furmankiewicz(Jacek Furmankiewicz)

    Compuware Corporation of Canadaの上級開発者/設計者。UNIX、PowerBuilder、C#/Microsoft .NET、Java、PHP、Microsoft SQL Server、OracleなどでITの専門家として12年の経験がある。

バックナンバー

連載:japan.internet.com翻訳記事

もっと読む

All contents copyright © 2005-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5