SHOEISHA iD

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

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

特集記事

「Jaql」を使ってMapReduceをより簡単に

Jaql(a query language desired for JSON)の使い方

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

 Jaql(a query language desired for JSON:JSON用に位置づけられたクエリ言語)は、JSON型式のデータを処理するためのクエリ言語で、Apache HadoopのMapReduceを処理するための実装が存在します。本稿ではJaqlの概要と使い方の基礎を紹介します。

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

 Jaql(a query language desired for JSON:JSON用に位置づけられたクエリ言語)は、JSON型式のデータを処理するためのクエリ言語で、Apache HadoopのMapReduceを処理するための実装が存在します。日本語では「じゃっくる」と発音します。ジャッカルに似ているため、一部のサイトにはジャッカルの写真が掲載されていました。

 もともとはIBMのアルマデン研究所で研究・開発され、オープンソースへ提案されました。本原稿執筆時点では、Apache Incubatorプロジェクトになっており、Google Codeのサイトで開発が進められています。

 本記事執筆時点では、つい先頃リリースされた、Jaql 0.5.1をベースに解説しています。

1. JSONの基礎

 JSON(JavaScript Object Notation)は、JavaScriptで「オブジェクト」と呼んでいるデータの塊を表記する方法を指しています。JavaScriptのオブジェクトは、大きく分けると、「名前:値」のペアを複数持つものと、「配列」の2種類があります。

 名前と値のペアは、コロン「:」でつなぎ、カンマ「,」で区切って並べ、{ と } で全体を囲むとオブジェクトとなります。

リスト1 JSONの名前:値ペアの例
{ "name":"米持幸寿", "address":"東京都" }

 ダブルクォート、またはシングルクォートが使い分けられます。名前はクォートなしでも多くの場合動作しますが、仕様(RFC4627)上はクォートで囲むのが正式です(もとになったECMAScriptでは許可されているため、多くの実装でクォートなしでも動作します)。値には、例にあるようにテキストや数値が使えます。値にオブジェクトを付けることもできます。JavaScriptでは、関数もオブジェクトなので、関数を値として接続することも可能です(ただし、JSON/Jaqlの世界では関数は操作しません)。

リスト2 JSONオブジェクトや関数を含むJSONオブジェクト
{
   "person" : {
      "name" : "米持 幸寿",
      "address" : "東京都"
   },

   alertme : function() {
      alert(this.person.name + "は"
         + this.person.address+"勤務")
   }
}

 リスト2のオブジェクトを変数yoneに代入し、yone.alertme()と実行(全体を<script>タグで囲んでWebブラウザで開くなど)すると「米持幸寿は東京都勤務」と表示されます。

 配列は、[ と ] で全体を囲み、値、オブジェクトなどを、カンマ「,」で区切って並べます。

リスト3 JSONの配列
[1, 2, 3, 4]

 異なるオブジェクトを配列として並べることもできます。

リスト4 混在の配列
[
   1,
   "a",
   { "name": "米持 幸寿", "address" : "東京都"} ,
   function() { alert('test');}
]

会員登録無料すると、続きをお読みいただけます

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

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

メールバックナンバー

次のページ
2. Apache Hadoopで動かす準備

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

  • このエントリーをはてなブックマークに追加
特集記事連載記事一覧

もっと読む

この記事の著者

米持 幸寿(ヨネモチ ユキヒサ)

日本アイ・ビー・エム公認 ソフトウェア・エバンジェリスト。alphaWorks、developerWorks、インキュベーション系製品、アセットなどのテクノロジーの推進をしつつ、テクノロジー戦略、エバンジェリストチームをリードしている。講演や執筆も多数。主な著書に「かんたんサーバーサイドJava」(翔泳社)、「Webサービス完全解説」(翔泳社)がある。developerWorks Japan ブログ 「米持幸寿のブログ

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

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

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5646 2010/12/24 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング