SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

japan.internet.com翻訳記事

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

YAMLファイル形式の概要

  • X ポスト
  • このエントリーをはてなブックマークに追加

XMLやJSONとYAMLとの違い

 ここまでの例で一目瞭然のように、YAMLはXMLに比べて著しく簡潔です。YAMLファイルの中身は、ほとんどが実際のデータです。XMLのように、開始タグと終了タグが延々と続き、実際のデータよりタグの方が往々にして長いという事態は避けられます。このためYAMLは、手作業でのメンテナンスが必要な各種データファイルには非常に適しています。

 一方、YAMLの弱点は、スキーマやDTDの概念がないことです。このため、ファイルが目的の形式に合致しているかどうかを検証する手段がありません。XMLには、冗長な記述に伴う苦労がある反面、全体として成熟していることから、検証のためのさまざまなツールが用意されています。YAMLにはそのようなツールは(現段階では)ありません。

 JSONは、効率性の向上やファイルサイズの節約を目指したデータにはうってつけです。スペースや終了タグによるサイズの浪費がほとんどないからです。しかし、ファイルの中身が複雑になってくると、膨大な数の「閉じかっこ」で収拾がつかない状況に陥ってしまいます。これが特に顕著なのが、JSONを基にしたJavaFXのコードです。UI構造がちょっとでも複雑だと、データファイルの最後の方は、理解不能なほど込み入ってきます。

 このJavaFXコードの例を見てください(ページ上部の[Edit this page]リンクをクリック)。最後の部分が特に目を引きます。

                      }
                  }
                }
            }
          ]
        }
    }
  center: bookPanel
}

 構造を示す{}とリストを示す[]の両方のかっこが混在しているため、JSON形式の大規模なファイルを手作業でメンテナンスするのはきわめて面倒です。YAMLでは、スペースを使ったインデントという方法で、この問題が非常にすっきりと解決されています。そのうえ、最下位ノードなどの適切な場所で、JSON方式の記述にも切り替え可能です。

JavaでYAMLを扱うためのライブラリと開発ツール

 JavaでYAMLファイルを処理するためのライブラリとして最も広く利用されているのはJvYAMLです。JRuby(Java VM上で動的言語として動作するRuby)では、Ruby on RailsフレームワークにJvYAMLを使用しています。JvYAMLには、ファイルに対して汎用的な処理を実行するための機能があります(その場合、Javaの標準のString、Long、Map、Listの各オブジェクトのネストで階層構造が返ります)。ファイルの保存には静的メソッドdump()を使用し、読み込みには静的メソッドload()を使用します。たとえば次のような形です。

YAML.dump(Object data, Writer output);

Object data = YAML.load(Reader io);

 Javaで宣言的にUIを構築するためのYAMLベースのオープンソースプロジェクトもあります。これについては補足説明「YAMLベースのオープンソースプロジェクト」を参照してください。

 一般に、YAMLファイルはきわめてシンプルで、普通のテキストエディタで簡単にメンテナンスできます。しかし、構文の強調表示などの便利な機能を備えた、YAML専用のテキストエディタもいくつかあります。たとえばEclipseにはEclipse YAML Editorがありますし、NetBeansではRubyパックにYAMLエディタが同梱されています。ただし、NetBeans 6.1のYAMLエディタは、YAMLの機能の一部しかサポートされておらず、あまり便利ではありません(たとえばブロックリテラルがサポートされていません)。この点は、NetBeans 6.5の新しいYAMLエディタで修正されているはずです。

 IntelliJ IDEAはテストする機会がありませんでしたが、そのRuby on RailsプラグインにはYAMLエディタが入っているものと思います。

YAMLベースのオープンソースプロジェクト

 自分自身のオープンソースプロジェクトを取り上げるのはおこがましいのですが、この場を借りて、私が手がけるYAMLベースのJavaプロジェクトを紹介させてください(私の知る限り、XMLやJSONではなくYAMLをメインに据えたJavaプロジェクトは、JRubyのRuby on Railsの実装以外にないからです)。私のJava Buildersライブラリでは、JavaでYAMLファイルを使って宣言的なUIを構築できます。画面コントロール、レイアウト、イベントの関連付け、データバインディングなどをYAMLファイルで定義するというやり方で、記述すべきJavaコードの量をかなり減らすことができます。

YAMLをぜひお試しあれ

 XML形式はかなり冗長で、手に余ることがよくあります。あなたが次に手がけるJavaプロジェクトでは、XMLの代わりにYAMLを利用してみると、都合がいいかもしれません。YAMLについてもっと詳しく知るには、WikipediaのYAMLの項を参照するか(データの統合やキャストなど、高度な話題の概要が的確に説明されています)、YAML公式サイトを参照してください。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

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

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Jacek Furmankiewicz(Jacek Furmankiewicz)

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

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/2972 2008/09/15 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング