GAE開発の落とし穴
Googleのクラウド環境をつかったGoogle App Engineによる開発するにあたり、初めての試みで苦悩する開発者達の経験をもとに、各開発フェーズにあわせて問題点やどう解決したかをご紹介します
ブックマークされました!
ブックマークがエラーになりました。もう一度お願いします。
作者 Boris Lublinsky , 翻訳者 竹中 翔 - (株)ポータルアイランド 投稿日 2009年6月1日
Arnon Rotem-Gal-Oz氏はこの新たな投稿の中で、RESTに対する彼の考えを述べた (Arnon氏のRESTに関する考察の詳細は、ここから参照できる)。
Arnon氏によれば、RESTには3つの利点がある。
...すぐれたRESTful APIは最初のURIから発見できます。ただしこれは、サービスを呼び出すアプリケーションが何をするサービスなのか自動的にわかるということではありません。サービスを統合するためにAPIを利用している開発者が楽になることを意味しています。特に、ハイパーメディアによって次にすべきことのロードマップが提供されれば。
WebのプロトコルであるHTTPについて言えば、JSONやATOMPubで発信することは、どんな言語やプラットフォームにおいても、サービス接続に使用可能なライブラリを簡単に見つけられることを意味します。
...ステートレス通信、複製レポジトリはすぐれた拡張可能性を生み出します。
Arnon氏はRESTの欠点についてもいくつか述べている。氏の見解によると、RESTには主に2つの欠点がある。
技術的にはまだRESTfulなのですが、私にとって2つのHTTPメソッドでは本当に有益だとは思えません(実は多くの実装をunRESTfulにします)。
...プログラミング言語はリソース指向ではないので、URIとマッピングするコードは汚くなりがちです。言い換えると、REST APIをハイパーテキスト駆動にするのは比較的難しいのです(これはRESTの制約です)。
最後にArnon氏はRESTのひどい部分を指摘した。これらのほとんどはRESTの誤用によって促進される。
RESTだけではなく、すぐれた技術やアイディア(AgileやTDDなど)は、お気に入りのアイディアを盛り込むのは素晴らしいことで、みんな自分たちのようにすべきだと考えている支持者たちのシェアを得ます。
...GETsfulな実装の構築(つまり全てhttpのGETで行います)やURIがコマンドである素のRPCの実行、HTTPメソッドを使ったCRUD操作の実行などなど。
Arnon氏は投稿を以下の主張で締めくくった。
RESTはシンプルに見えますがそうではありません。RESTは考え方の変化を要求します(例えばリソースの識別、状態遷移の具体化など)...RESTはあなたにとって重要で有用なツールとなります。しかし... どのアーキテクチャ/テクノロジとも同様に、よくない実装は全ての利点を打ち消してしまいます。
WS*対RESTの議論は終わりがないように思われるが、実際にはどちらも「あらゆるものへの回答」にはならない(「ハンマー」症候群を警戒せよ)。
... 完全なビジネスの全体論的視野をとった時、あなたは異なるアーキテクチャの原則がうまくフィットする場所を目にするでしょう。アーキテクチャスタイル(そしてアーキテクチャパターン)は課題を解決するために使う道具です。ハンマーを使うのが適切な場所はありますが、ハンマーよりも適切な道具があることを確認するのもまた賢明なことです。
例えば、ほとんどのRESTの実装は非同期呼び出しとイベントをサポートしておらず、結果として、イベント駆動型のアーキテクチャスタイルはおそらくREST向きではない。別の例として、SOAPエンベロープによって提供されるビジネスとインフラの関心事の分離は、RESTの場合は実装者に委ねられている。結果的に、REST向きではないような、将来変更される可能性があるインフラについての関心事の実装を要求される。
RESTはWeb 2.0、特にマッシュアップとAJAXの発展によって最近さらに人気を得た。この場合、RESTサービスはJavaScriptからアクセスされ、マーシャリングメカニズムとしてJSONが使用される。これを根拠に、REST支持者の多くは、RESTはおびただしい数のWS*標準を使う場合に比べ、サービスの呼び出しがより簡単であると主張している。これは「手で」サービス呼び出しコードを実装している場合には正しい。一方、WSDLからサービス呼び出しコードを生成するツールがあり、それが多くの言語を対象にしていれば、この作業は取るに足りないものになる。
REST対何かの例のリストには終わりがなく、それはリストの作者に大きく依存する。Arnon氏の投稿の中で、氏は実装のための適切なアーキテクチャを採用するためのすぐれた架空の議論を提示する。
世界の先進エンジニアが集結 - QCon TOKYO 2012 早期割引実施中!
【豆蔵】「オブジェクト指向を現場で活かすリファクタリング入門」新規講座キャンペーン中
Googleのクラウド環境をつかったGoogle App Engineによる開発するにあたり、初めての試みで苦悩する開発者達の経験をもとに、各開発フェーズにあわせて問題点やどう解決したかをご紹介します
去る1月12日、定理証明支援系ツールCoqの初心者向けチュートリアルが開催さ れた(http://kokucheese.com/event/index/23667/)。今後も2月2日 (http://kokucheese.com/event/index/23744/)、2月9日、2月16日と引き続き開 催されていく予定である。本記事では、開催の様子をレポートする。
Neal Gafter氏はOracleによるJava買収の影響に関する議論、Javaにセグメンテッドスタックやメタオブジェクトプロトコルを追加することについての主張、そしてJavaとC#との比較について話をしてくれた。
GoogleはVMをともなう新しい言語であり、JSコンパイラでもあるDartをプレビューした。 InfoQはDartのアプリの構築に貢献する文法の裏側を探った:スナップショット、Isolate、モジュール方式
本記事ではCSPベースの「マルチドメイン・モデル検査ツール」である、PAT(Process Analysis Toolkit)について紹介する。モデル検査は、形式手法(Formal Method)という方法論を基礎とする技術であり、複雑さが増大しながらも安全性を求められる、現在のソフトウェア開発の状況に対する処方箋の1つとして注目されている手法である。
前回まで、Jenkinsの幾つかの側面に注目して解説をしてきました。シリーズ最後の今回は、Jenkinsをサービスとして使う方法を紹介します。
Alloyは、MITにて開発された仕様記述言語であり、ツールによる自動解析を使い、インクリメンタルに形式仕様が書けることが特長である。筆者らはAlloy開発者による、Alloyを使った形式手法入門書を翻訳、今夏にオーム社より刊行した。本記事では、Alloyの簡単な概要と、翻訳書『抽象によるソフトウェア設計』(「Alloy本」)を紹介する。
スマートフォンを中心としたマルチデバイスにおけるタッチユーザーインターフェイスへの対応は、既に必須の項目となりつつある。本記事では、Windows デバイスにおける UX のベースとなっている「メトロ」というデザイン言語を掘り下げながら、既存環境を意識しつつもどのようにタッチユーザーインターフェイス開発に取り組んでいくべきであるかについて解説していく。
No comments
スレッド表示 返信