『エムスリー x Gunosy Beer bash』( http://gunosy-beer.connpass.com/event/22825/ ) での発表スライドです。 - 内容をまとめたBlog記事はこちら: http://blog.toshimaru.net/json-schema-col…
{ "response": { "id": 3342124, "message": "Hi!", "user": { "id": 3456, "name": "Taro Yamada", "image_url": "/images/taro.png" } } } など、どの構造がいいでしょうか? もっと違う構造も考えられます。 JSONはシンプルですが、構造に制約がなさすぎます。適切な設計を行うには適切な制約が必要です。 そこで、plain JSONに少し制約を加えたJSONベースのフォーマットを使うことをおすすめします。 もしあなたが、JSONレスポンスをどのようなフォーマットにするかをチームで議論したことがあるなら、JSON APIは『自転車置き場の議論』に対抗する武器となる。 共有された規約に従うことで、生産性が向上し、汎用的なツールを利用でき、アプリケーションという重要なものに集中
Java SE の標準 API を使って、JSON データを扱い易い Java オブジェクトに変換しようと思ったら、意外と日本語の情報が見当たらなかったので、ごく適当に書いてみます。 あ、もちろん Jackson や JSONIC、Gson 等の外部ライブラリを使う方法や、Java EE 7 で追加された Java API for JSON Processing(javax.json)についてならば情報は沢山あるんですが、ここで取り上げるのはあくまで Java SE の標準 API だけを使用した方法についてです。 Java SE 6(JDK 1.6)以降は標準ライブラリで簡単に JavaScript を扱えるので、わざわざ記事にするほど難しいことは無い上に、情報の少なさから言って、多分ほとんど誰も必要としてないんだろうなーとは思うんですが(素直に外部ライブラリを使うか、サーバーサイドなら
[レベル: 上級] ナレッジグラフでのソーシャルプロフィール リンクの表示機能の提供や新しい構造化データテストツールの公開と同時に、構造化データに関するガイドラインをGoogleは更新しました(今のところ英語だけでの提供)。 ひととおり目を通して僕が個人的に気になったことをこの記事では書きます。 JSON-LDをプッシュ schema.orgのシンタックスとして次の3つをGoogleはサポートしています。 Microdata RDFa (RDFa Lite) JSON-LD 新しいドキュメントでは、この3つのシンタックスのなかからJSON-LDの利用を推奨しています。 まずコードのサンプルがほぼすべてJSON-LDを使ったものです。 JSON-LDに加えて、Microdataも使った例がごく一部にあるだけです ナレッジグラフに表示するイベント講演者の説明ページでは次のように説明しています。
現在ではREST APIはとても一般的な話題です。ほとんどすべてのWebアプリケーションの一部分となっています。シンプルで一貫性があり実際的なインターフェースは必須です。これは皆さんのAPIを他の人が使うことをとても容易にします。皆さんにとってはRESTの実践が日常的に感じられるかもしれませんが、RESTをあまり尊重しない人々もよく見かけます。これがRESTについて投稿するきっかけでした。 この記事にはRESTfulなAPIを設計する時に考慮すべきベストプラクティスがあります。 注意 : ここでのベストプラクティスは、私が過去の経験に基づいて良いと考える事例です。もし違う考えをお持ちであれば、お気軽にメールをくだされば意見交換できると思います。 APIのバージョンを示す APIのバージョンは必須であるべきです。これがあると時間が経ってAPIが変わっても影響を受けません。その方法の1つはUR
一人Advent Calendarの3日目です。 JSONPを使って外部のAPIを呼び出して、結果を取り込むということは色々なところで行われています。しかし、そもそもJavaScriptを利用した場合、クロスドメイン通信が使えないという前提があります。JSONPだったら、何故そこを回避できるのでしょうか?あまり詳しく考えたことが無かったので、簡単に調べてまとめてみました。なんというか4周くらい遅れている話題ですが、気がついた時に整理するとスッキリします。 JSONPの動作原理 Wikipediaさんをみてみると、そのものずばりのことが書かれています。scriptタグ内のsrc属性は別ドメインのURLを指定できるという点と、そのレスポンスはJavaScript関数呼び出し形式になるという点をついたのが、JSONPの動作原理です。なんというか、仕様の考慮不足を利用した仕組みだと思います。 JS
mozaic.fm #7 RESTや#mozaicfm REST を聴いての感想、それから「Web+DB vol82のWebAPIデザインの鉄則」に触発されたので書こうと思う。 REST設計について WebAPIを設計するうえでRESTが重要であることは周知のとおりである。 “Constraints are liberating”「制約は自由をもたらす」 @t_wadaさんがおっしゃっているように、RESTを前提にすれば、「アーキテクチャとしてもそうだし、アプリケーションフレームワークも「適切な制約」を設けることで設計のコストが下がる」という大きなメリットが生まれる。 しかし、相変わらずリソース設計やらインターフェース設計やらで悩んでおられる方も多いと聞く。 その一方で個人的には適切なフレームワークを使えばREST設計で悩まなくてもよいはず(※3)という思いもある。 インターフェース設計な
TL;DR JSON Schemaを使ってこういうことが実現可能になった。 ダミーAPIサーバの提供 ドキュメントの自動生成 APIクライアントの動的定義 APIサーバのバリデータの動的定義 APIサーバのレスポンスの自動テスト JSON Schemaとは JSON SchemaというのはあるJSONのデータ構造を記述するための方法および書式の仕様で、 JSON SchemaもJSONで記述される。 これを利用すれば、リソースベースの(=RESTfulライクな)APIの仕様が簡便に記述できる。 例えば、我々のAPIはレシピとユーザというリソースを扱っていて、 それぞれCRUDのAPIを備えており、レシピはidとtitleとdescriptionという属性を持つ、 という旨をJSON Schemaで表現できる。 なんで最近ちょっと流行ってんの Mobile First、 Service Or
JavaでJSONを使う方法を解説する。 1. (What) JSONとは何か 2. (Why) なぜJSONを使うのか 2-1. データベース的な視点から 2-2. Web的な視点から 2-3. モバイルアプリでなぜJSONを使うのか 3. (How) どうやってJavaでJSONを使うのか 3-1. HTTPリクエストで文字列を取得する 3-2. とってきた文字列をJSONオブジェクトに変換する 3-3. JSONを解析してデータをとりだす 1. JSONとは何か JSON(ジェイソン、JavaScript Object Notation)は、JavaScriptにおけるオブジェクトの表記法をベースとした軽量なデータ記述言語である。JavaScript Object Notation - Wikipedia とりあえずは「JSONオブジェクト」というのを知っておけばOK。JSONオブジ
JSON は、「JavaScript Object Notation」の略で「ジェイソン」といいます。
JSON文字列とJavaScriptオブジェクトの相互変換 JSONオブジェクトがサポートされるならば、そのメソッドによりJSON文字列とJavaScriptオブジェクトを簡単に変換できます。それがサポートされるかどうかは、簡単にはWindowオブジェクトにJSONプロパティが存在するかどうかで判別できます。 if( window.JSON ) { // JSONがサポートされる } ちなみにPrototype.jsでは、 var NATIVE_JSON_PARSE_SUPPORT = window.JSON && typeof JSON.parse === 'function' && JSON.parse('{"test": true}').test; のように判別しています。 JSON文字列 → JavaScriptオブジェクト JSON.parseがサポートされるならば、それでJSO
Twitterで「早く今流行のMPPの大まかな使い方の違い書けよ!」というプレッシャーが半端ないのでてきとうに書きます.この記事は俺の経験と勉強会などでユーザから聞いた話をもとに書いているので,すべてが俺の経験ではありません(特にBigQuery).各社のSAの人とかに聞けば,もっと良いアプローチとか詳細を教えてくれるかもしれません. オンプレミスの商用MPPは使ったことないのでノーコメントです. MPP on HadoopでPrestoがメインなのは今一番使っているからで,Impalaなど他のMPP on Hadoop的なものも似たような感じかなと思っています. もちろん実装の違いなどがあるので,その辺は適宜自分で補間してください. 前提 アプリケーションを開発していて,そのための解析基盤を一から作る. 簡単なまとめ データを貯める所が作れるのであれば,そこに直接クエリを投げられるPre
By: Wonderlane – CC BY 2.0[/caption] Rails4からJSONも標準でjbuilderを使ってテンプレートから出力できるようになった けど、しっくり来ないので簡単に比べてみた 以下の例はすべて次のようなJSONを返すテンプレート [{"title":"hello","price":100,"url":"http://192.168.1.19:3000/books/1.json"},{"title":"hello2","price":200,"url":"http://192.168.1.19:3000/books/2.json"}] [{"title":"hello","price":100,"url":"http://192.168.1.19:3000/books/1.json"},{"title":"hello2","price":200,"url"
データベースから取得したデータをJSON形式やXML形式で返したい場合があります。ここではrenderメソッドを使ってJSON形式やXML形式で利用者へ結果を返す方法を解説します。またrespond_toメソッドを使いリクエストで指定されたフォーマットに合わせて出力する形式を決める方法についても解説します。 1.JSON形式で出力 2.XML形式で出力 3.respond_toメソッドを使った形式の選択 JSON形式で出力 JSON形式で出力を行なうには次の書式を使います。 オブジェクトをJSON形式に変換した上で利用者へ返します。 では実際に試してみます。作成済みのコントローラクラス(app/controllers/movies_controller.rb)の中の「index」アクションメソッドを次のように修正します。 class MoviesController < Applicati
Ginza.rb.第4回を開催しました。今回はjsonのライブラリについて。当日のまとめはこちら。 rabl、jbuilder、active_model_serializerについてサンプルで遊びながら比較を実施。以下その場で出た内容のまとめ(ちょっと主観が入っている気がするが)。 rabljbuilderactive_model_serializer良い・他のライブラリと比べて記述量が少なくて済む ・jsonだけでなく、msgpack、bson等様々なフォーマットに対応している ・viewテンプレートなのでcontrollerに手を入れる必要が無い・記述が通常のrailsのviewに近しいので、割と書きやすい/読みやすい ・viewテンプレートなのでcontrollerに手を入れる必要が無い・オブジェクト指向的に書ける。 ・(他の二つと比べて)早い。悪い・記述が独自DSLっぽく、慣れない
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く