Adwaysエンジニアブログスマートフォン用の表示で見るAdwaysエンジニアブログ2012-08-03続・TitaniumからACSを利用する【Statuses/Reviews編】こんにちは、エンジニアのヨネモトです。Services)を利用する」というタイトルで記事を書きましたが、今回もACSについて調べてみました。Service)の一つで、ユーザー管理やソーシャル連携機能、プッシュ通信機能など主にモバイル向けアプリケーションのバックエンドに必要な一般的な機能を備えたクラウドサービスです。前回の記事では、Titanium.Cloud.UsersとTitanium.Cloud.Postsを使いましたが、ドキュメントを読むとTwitter風のタイムラインにはTitanium.Cloud.Statusesを使う方が良さそうなので今回はこちらを使用します。Titanium.Cloud.Reviewsを使うと投稿に対するコメントや評価(rating)を付ける事が出来ます。評価は数値を入力出来ますが、「1」のように固定の値を登録するようにすれば「いいね!」や「お気に入り」も実現出来ます。今回はこの機能を使って「お気に入り」つけられるようにしました。ACS側にアクセスする部分のソースは以下のようにしています。前回と同様にACSModel.jsというクラスにACS側にアクセスする処理を集約しました。});}事前に取得したReviewのリスト(reviews)をcallback関数の中でStatusのリストとマージしています。});}このケースではuser_idを指定してログインした本人が投稿したReviewを取得していいます。});}以下のドキュメントによると、Reviewを投稿する際は、Reviewの親となるオブジェクトのIDを指定する必要があります。http://cloud.appcelerator.com/docs/api/v1/reviews/create[object_type]_idのところは今回はStatusなので"status_id"を指定しました。1"を指定してやればいいようです。1},のようにレビュー数や評価の平均、評価のサマリーなどがつきますが、StatusオブジェクトからReviewオブジェクトの一覧への参照は持っていないため、Statusに紐づくReviewは自分でAPI経由で取得する必要があります。(Userへの参照は持っています)任意でJOIN出来るような機能があればいいのですが現在のAPIには見当たりませんでした。ここは少し面倒なところかもしれません。他の注意点として登録後にReviews.query()でReviewのリストを取得しても、その中に親のStatusのIDは含まれていません。そのため今回は"custom_fields"に"status_id"を入れてデータの突合せに使用しました。自分でサーバーサイドの処理を実装する場合は1回の通信で必要なデータをサーバー側で取得してクライアントへ返すように出来ますが、ACSを使う場合はクライアントから何度かクラウドへ問合せしないと必要なデータが揃わない場面がありそうです。このあたりの仕様は事前にしっかり調査してアプリケーションをACSに合わせて設計する必要があると感じました。以下は今回のサンプルの動作画面です。非常に手軽に使える反面、必要な機能が足りなかったり、APIの戻り値が予想と異なっていたりするケースが多かったので(当たり前なんですが)ACS側の仕様を理解したうえでアプリケーションを設計する必要があると感じました。考えると一括でデータの登録や削除を行える機能があった方がよいかと思います。ACS自体がまだ6月にリリースされたばかりなので、恐らく時間と共に解決されていくものも多いと思います。非常に魅力的なので、今後も注目していきたいと思います!おまけアドウェイズ開発部では一緒に頑張れる仲間を募集しています。(1)ABOUT株式会社アドウェイズのエンジニアによるブログです!このブログでは、アドウェイズのエンジニアがざっくばらんに技術のことや日常生活について書いていきますので、みなさんよろしくお願いいたします。アドウェイズ中途採用情報スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。