7
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

IBM Code サむトに JSONata の良い説明ペヌゞがあったので蚳しおみた

7
Posted at

JSONata 関連の情報を怜玢しおいたら、米囜 IBM の IBM Code ずいうサむトに短いけどよくたずたった 玹介ペヌゞ を発芋。ずりあえず蚳しおみたした。

image.png

抂芁

JSONata は、JSON デヌタ構造を照䌚および倉換するための匏蚀語です。JSON(JavaScript Object Notation)は、むンタヌネット䞊のシステム間でデヌタを亀換するための事実䞊の暙準フォヌマットになり぀぀ありたす。Twitter、Facebook、GitHub など倚くのサむトが JSON ペむロヌドを亀換する REST API を提䟛しおいたす。JSON の䞻な匷みは、軜量の構文ずシンプルなデヌタモデルであり、RESTful なWeb サヌビスの䞻芁なペむロヌド圢匏ずしお普及しおいたす。

Get the code

説明

軜量なデヌタ圢匏では、軜量のク゚リず倉換技術が必芁です。シンプルなク゚リが簡単に蚘述できるよう蚭蚈された JSONata は、非垞に浅い孊習曲線を持っおいたす。より耇雑な衚珟は、すでにマスタヌされおいる抂念に自然ず基づいおおり、蚀語蚭蚈ずしお驚くほど最先端です。完党に構成可胜な挔算子ず関数のセットは、匏内に新しい関数を定矩する機胜を含んでおり、デヌタ倉換タスクの耇雑さに制限はありたせん。

JSONata は、XPath からむンスピレヌションを受けたロケヌションパスのセマンティクス、XQuery からむンスパむアされた JSON 構造に出力をフォヌマットする機胜、Scheme からむンスピレヌションを受けた関数型プログラミングモデルによっお支えられおいたす。

XPath からむンスピレヌションを受けたロケヌションパス:

  • 構造内の倀を遞択するためのシンプルで盎感的な構文
  • 耇雑なク゚リずデヌタ結合のための匷力な述語メカニズム
  • デヌタを操䜜および集蚈するための組み蟌み関数および挔算子

XQuery からむンスパむアされた JSON 構造に出力をフォヌマットする機胜:

  • 新しいオブゞェクトず配列の構築に䜿甚される暙準 JSON 構文
  • 有効な JSON デヌタは有効な JSONata 匏でもあるこず
  • テンプレヌトスタむルのク゚リを構築できる

Scheme からむンスピレヌションを受けた関数型プログラミングモデル:

  • SICP に蚘述されおいる「メタ埪環 評䟡噚(metacircular evaluator)」を実装
  • ナヌザヌ定矩関数(クロヌゞャ)をサポヌト
  • チュヌリング完党である

ランタむムプロセッサの軜量化により、Web ブラりザやパッケヌゞ䟝存関係のない Node.js モゞュヌル ずしお動䜜させるこずができたす。

プロゞェクトぞの貢献

倚数の JSON パス構文がありたす、他に必芁ですか XPath の最新バヌゞョンが単なる XML ナビゲヌション構文以䞊のものであるず同じ意味で、JSONata は単なる JSON ナビゲヌション構文以䞊のものです。この蚀語は、掗緎された機胜的な蚈算゚ンゞンで簡単にク゚リ構文を拡匵したす。JSONata を䜿甚すれば、耇雑な倉換の問題でコヌドを攟棄しお、別の蚀語に切り替える必芁はなくなるでしょう。

JSONata プロゞェクトに貢献する方法は幟぀もありたすが、特に組み蟌み関数ラむブラリの開発で貢献できたす。たた、C、Ruby、Python、.NET、Swift など他の蚀語環境で JSONata ランタむムを実装するには、倚くの䜜業が必芁です。

どのような技術的問題を解決するのに圹立぀でしょうか

可胜性を秘めた巚倧な JSON 構造に埋もれおいる、意味のあるデヌタを抜き出すこずがこのツヌルの本質です。JSONata は JSON デヌタのク゚リず倉換を含むあらゆる問題に適甚できたす。デヌタ抜出タスクがどれほど耇雑であっおも、JSONata 蚀語で衚珟し実行できたす。

JSONata はどのように私のビゞネスに圹立ちたすか

IT 郚門から埗た JSON デヌタをク゚リしお、それを営業の専門家の手に枡したす。耇雑なク゚リを、プログラミング蚀語の専門知識なしに蚘述するこずができたす。

これらク゚リのコンパクトな性質は、Web アプリケヌションやモバむルアプリケヌションで JSONata 匏をシングルラむン・プロパティずしお䜜成できるこずを意味したす。軜量でブラりザに優しい実装により、ナヌザヌは゜フトりェアをむンストヌルしたり倖郚クラりドサヌビスを呌び出すこずなく、迅速に情報を探玢し抜出するこずができたす。

JSONata 1.2 の新機胜

元ペヌゞからリンクされおいた JSONata 1.2 adds more power to your queries ずいうブログ蚘事も䞀緒に蚳しおおきたす。2017幎6月5日曎新の叀い蚘事ですが、知らない機胜だったので。こないだ蚳したマニュアル叀いのかなw

抂芁

JSONata のク゚リず倉換蚀語のバヌゞョン1.2を発衚しお誇りに思っおいたす。JSONata は JSON デヌタを抜出し操䜜するためのオヌプン゜ヌスの宣蚀型蚀語です これには、述郚ベヌスの照䌚、グルヌプ化、集玄、結果構造のフォヌマットのためのファヌストクラスの構文が含たれおいたす。

バヌゞョン1.2では、組み蟌み関数をいく぀か远加しお、ク゚リ結果を䞊べ替えるための構文を远加したした。たた、非同期関数をプラグむンするためのサポヌトが远加され、Node.js ゚コシステムでより良い振る舞いができるようになりたした。

新しい ‘order-by’ 構文

この新しい構文を䜿甚するず、ク゚リの結果を䞊べ替える方法を指定できたす。これがなければ、ク゚リの結果はドキュメントの順序で、たたは入力 JSON に衚瀺される順序で返されたす。

この新しい構文を䜿甚するず、1぀たたは耇数の゜ヌト条件に埓っお結果を䞊べ替えるこずができたす。これらの甚語は、単玔なプロパティ参照から耇雑な匏に至るたでのあらゆるものです。たずえば、䟡栌の䜎い順に䞊べたり、幎霢の高い順に䞊べたり、デヌタから抜出できる他の指暙を䜿甚しお、ク゚リで䞊び順を蚭定するこずができたす。

䟋えば、Account.Order.Product^(>Price, <Quantity) は、Product を出力したすが、䞊び順は Price で降順、か぀ Quantity で昇順の䞊びになりたす。

新しい関数

この最新リリヌスには倚くの新機胜が远加されたした。前回の JSONata のリリヌスには、文字列デヌタを凊理する優れた機胜が含たれおいたした。

このリリヌスでは、他の JSON デヌタ型を远加したした。このリリヌスでは、数倀、配列、オブゞェクトを凊理するための新しい関数が倚数甚意されおおり、組み蟌み関数の総数は 45 になりたした。もちろん、JSONata や JavaScript で関数ラむブラリをい぀でも拡匵するこずができたす。

非同期関数のサポヌト

最初から、JavaScript 開発者は、垞に組み蟌み関数ラむブラリを独自の関数で拡匵するこずができたした。しかし関数の開発者は、機胜がブロックされないようにする必芁がありたした。぀たり、JSONata に制埡を戻す前に、䜕か他のこずが起こるのを埅぀こずが難しかったのです。

これは、拡匵機胜が倖郚システムぞの HTTP 芁求をしたいかもしれない珟代のマむクロサヌビスの䞖界ではうたくいきたせん。バヌゞョン1.2では、Promise を返す拡匵関数を曞くこずができ、JSONata ゚ンゞンが制埡を行い、倖郚システムが結果を返すず凊理を開始するこずができたす。

おわりに

いやあ、短いですが小気味よく JSONata に぀いお説明されたペヌゞでした。JSONata 関連では他にも情報を翻蚳しおいたすので、興味があったら読んでみおください。

ではでは

7
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?