2012年10月18日木曜日

RestKitの概要(翻訳)

RestKitについて検索しても国内であまりヒットしないのでトップページを翻訳。
使ってるけど、包括的にあんまり理解できてないので。冷静に読んでみると発見がある。
つか使い方覚えるまで、ちょっと違った書き方するだけで、BAD_ACCESSしまくるし、エラーメッセージが超曖昧。ばんばんAPIがObsolateしまくっていて、少し古い情報が役立たなかったりする、厄介なフレームワークですよほんとに。使いこなせれば便利そうだが。

http://restkit.org/
============================================================

RestKitはiOS向けのObjective-Cのフレームワークで、RESTful web serviceと、シンプルかつ高速に楽しく、対話することを目的としたものです。クリーンでシンプルなHTTPリクエスト/リスポンスのAPIと強力なオブジェクトマッピングシステムは製品作成において構築するべきコードを大量に減らしてくれることでしょう。

RestKitの第一目標はデベロッパが、リクエストの送信や、リスポンスのパース、リモートリソースの形式の構築に悩まされずに アプリケーションのデータモデルに注力できるようにすることです。

============================================================

RestKitがしてくれること

○シンプルで高レベルなHTTP Request/Response
RestKitはNSURLConnectionを基底としたHTTPクライアント と一緒にリリースされます。これはMIMEタイプやステータスコードの検査に関する便利なメソッドを含んでいます。フォームデータのサブミットもディクショナリによるパラメーターを指定することで簡単に行うことが出来、マルチパートデータの構築も容易に行うことが可能です。

○CoreDataのサポート
RestKitはオブジェクトマッピングレイヤの基底部分において、Appleのコアデータフレームワークとのインテグレーションを行っています。 このことにより、Restkitはリモートから読みこんだデータをローカルストアに直接永続化して、高速なローカルキャッシュとして、またはクラウドと定期的に同期するプライマリデータストアとして扱うことができます。
RestKitはCore Dataとの連携を用意し、データモデルをプロパティそのままの値を用いて、トラバースすることができます。また、コアデータのプリミティブに用意された良質なAPIを用いることで設定とユースケースの確認を省力化することができます。

○データベースシーディング
CoreDataをオブジェクトストアとして用いる場合、データファイルの集合としてデータベースをシードしておくことができます。このことによりAppStoreにサブミットする際に、アプリケーションバンドルにすぐに使えるデータベースを含めた形で提供することができます。

○サーバー及び開発環境の変更をフレームワークレベルでサポート
(development/production/staging)
RestKitは完全URLでなく、ベースURLとリソースパスの組み合わせでURLを管理します。このためターゲットとなるサーバーを容易に変更可能です。URL文字列の保管やNSURLオブジェクトの生成に頭を悩ませる必要はありません
 
○オブジェクトマッピングシステム
RestKitは、データのペイロードをネイティブのCocoaオブジェクトに宣言的にマッピングすることのできるモデリングレイヤを提供します。このことによりアプリケーションプログラマは、パース処理を行うことを考えずに、フレームワークに対してリモートリソースを非同期に呼び出し、結果をデリゲートを介して受け取ることができます。オブジェクトマッピングはキーバリューコーディングで実装されており、パースされたオブジェクトグラフを迅速にトラバースすることが可能です。リフレクション処理がプロパティに対して行われ、Stringに加工された日付をNSDateに復元することもできます。

○プラグイン可能なパーシングレイヤ
RestKitは現在JSON(SBJSON)とYAJLパーサーをサポートしています。パース操作はシンプルなインターフェースの背後に実装されており、容易かつ透過的に新規のデータフォーマットを追加することが可能です。
============================================================