自分はどのように考えているか具体的に述べたいと思う。http://yohei.hatenablog.com/entry/2014/03/12/001707に同意である。互換性を壊す必要がある場合は関数名を変更する、といったような感じで概ね解決できると思う。何というか、根本的なところで琴線に触れるものがあって、見過ごせないなあと感じている。率直にいうと、そもそもAPIのv2を作りたくなるような状況に陥ることこそが問題ではないかと思っている。JSONのような拡張可能なシリアライズフォーマットを用い、拡張可能な形で入出力パラメータを設計する。これは、いわゆるスキーマレスとかソフトスキーマといわれるもので、項目が変わったとしてもシステムに影響ないような仕組みである。項目が変更されても影響なければバージョン管理はそもそも必要ないというわけ。これはJSONだけでなくXMLやMessagepackでも同じことがいえる。メディアタイプでデータ表現を変えるという発想はReflexWorksに近いというか、そのものなんだけれども、RESTのリソースの概念では表現を変えてもデータは同じものであって、v2なんていう発想はない。(もちろん、データが更新されたらリビジョンは上がるがAPIのバージョンに相当するものはない)それから、私はJSONの文化大革命って呼んでいるのだが、過去にHTMLやXMLで積み上げたセマンティクスの議論が台無しになっている雰囲気があって、今回のようなAPIでバージョニングすべきかが問題になるのは当然の帰結のような気がしてしかたがない。いうように単にエンティティに操作をつけただけの関数をモッサリ作ってる。なんて欲しくなるわけ。データこそJSONかもしれないが、これこそSOAP時代の発想じゃないか。いいじゃん、と思う次第。CRUDに当てはまらないAPI一方で、単純にCRUDに当てはまらないものはどうするんだ?RESTでCRUD4つに集約できるなんて幻想だ!なんていうのもわかる。/XXXとすると、/XXXのデータがそのまま返る。/XXXの結果を加工したくて、サービスとしてサーバサイドで動的にビジネスロジックを動作させたいこともある。消費税計算関数calcがあり、デフォルトは5%であるとしよう。以下のように書くことで、calc(/XXX)を実行する。/XXXで取得した原価のフィードを関数calc()で消費税5%で計算して返す。8%で計算するv2も定義してURLパラメータで表現する。4月以降はv2をつけて実行すればよい。URLパラメータでバージョニングすればよいという結論である。結論からいえることいつのまにかURLにバージョン番号をつけるべきという結論になってしまっているが、言いたかったのはリソースはあくまで静的なものであって、リソースをCRUDする限りにおいてバージョニングは必要ないということ。リソースの項目の追加変更においても必要ない。唯一、必要になるのはCRUDに当てはまらない一部の動的なサービスAPIであって、それでもURLパラメータで管理すればよく、API全体をバージョニングする必要はないということ。/v2/~というように、URLにバージョン番号をつけるべきではないと思う。APIの認証をどうすべきか考えている。次のようなケースをどうするか。「既存のWebサイトがあり、既にユーザIDとパスワードによる認証によって、ブラウザでデータを提供している。MVCモデルについて一言いっておくかなーんて、MVCを語れるほどの知識はないのだが、琴線に触れてしまったので、私なりに言いたいことを言うことにする。vol82のWebAPIデザインの鉄則」に触発されたので書こうと思う。commitが可能である。いうイベントが開催された。Google、Amazon、SalesForce、Microsoftの4強+Niftyの、豪華面子でタイトルの通りごった煮にふさわしい感じの内容となった。ガチンコでお願いします8月12日、OracleがGoogleに対して訴訟を起こした。Oracleの持つJavaの知的所有権(特許および著作権)を侵害していることが理由とのこと。この問題はよくわからないので自分なりに整理してみることにした。(ただし私は法律には素人で間違いも多いと思う。Application)でサーバサイドをどうすべきかについて述べたいと思う。今、MEANが注目されている。OutputStreamをInputStreamに変換するOutputStreamからInputStreamに変換するにはどうしたらいいか。Pipeを使ってもOutputStreamと互換性がないので簡単にはいかない。Docsにオンライン・ファイルストレージ機能を追加するという発表があった。お題は、「フロントエンドエンジニアが主役のBaaSを作った話」です。Analyticsを使ってウェブサイトのトラフィック情報を収集しています。詳しくは、プライバシーポリシーを参照してください。