[Parse][iOS] 残念出来事共有アプリ「どんまい!」をリリースしました

2014.07.22

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Parse を利用したアプリをリリースしました

このたび、MBaaS でお馴染みの Parse を利用した iOS アプリ「どんまい!」をリリースしました!

iOS 7 以上の iPhone、iPod touch、iPad でご利用いただけます。

iTunesArtwork-Mask@2x

App Store で見る

アプリの紹介

「どんまい!」は、日常の残念だった出来事を写真・テキストで共有できる、とってもシンプルなソーシャルアプリです。投稿されている記事には「どんまい!」ボタンを連打することでどんまいポイントを増やすことができます。 ユーザー登録なども不要なので、ガッカリした出来事があったら、まずは気軽に投稿してみてください!

Screenshot-2014.07.04-12.28.53

Parse を利用して良かったところ

どんまい!はサーバーサイドに Parse を利用しています。Parse を利用して良かったところを少しだけ紹介したいと思います。

サーバーサイドのコーディングが不要

Parse SDK を使うと、クライアントだけでデータの保存や読み出し、画像などのファイルのアップロードなども簡単に行うことができます。例えば本アプリでは、以下のような感じで保存しています。

PFObject *article = [PFObject objectWithClassName:@"Article"];
article[@"title"] = self.titleTextField.text;
article[@"description"] = self.descriptionTextView.text;
article[@"nickname"] = self.nicknameTextField.text;
article[@"installation"] = installation;

if (self.image) {
    // 画像の追加
    NSData *imageData = [[NSData alloc] initWithData:UIImageJPEGRepresentation(self.image, 90)];
    NSData *thumbData = [[NSData alloc] initWithData:UIImageJPEGRepresentation(self.thumb, 90)];
    article[@"file"] = [PFFile fileWithName:@"image.jpg" data:imageData contentType:@"jpeg"];
    article[@"thumbFile"] = [PFFile fileWithName:@"thumb.jpg" data:thumbData contentType:@"jpeg"];
} else if (!self.image && ![NSObject isEmptyObject:self.record[@"file"]]) {
    article[@"file"] = [NSNull null];
    article[@"thumbFile"] = [NSNull null];
}

[article saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
}

PFObject にどんどんデータをセットしていき、saveInBackgroundWithBlock を呼ぶことで、サーバーに送信し、新規レコードとして保存されます。画像ファイルは PFFile でセットするだけで、レコードの保存と一緒にアップロードも行ってくれます。こういったかゆいところに手が届いてくれるところが Parse の良い点です。

困ったときの Cloud Code

Parse には、クライアントには行わせたくない処理やバッチ処理などを Cloud Code という機能を使って実現することができます。Cloud Code は JavaScript で記述することができます。

本アプリでは、投稿された記事に「どんまい!」ポイントを付けることができます。この条件値が規定値を超えないように、次のような Cloud Code を定義しています。

const MAX_COUNT = 999999999999;
const MIN_COUNT = 0;
 
Parse.Cloud.beforeSave("Article", function(request, response) {
  if (request.object.get("comfortCount") >= MAX_COUNT) {
    request.object.set("comfortCount", MAX_COUNT);
  } else if (request.object.get("comfortCount") <= MIN_COUNT) {
    request.object.set("comfortCount", MIN_COUNT);
  }
  response.success();
});

beforeSave メソッドで、指定したテーブルのレコードが保存される前に呼び出される処理を定義することができます。

まとめ

Parse を使うことで、時間をかけずにサーバーサイドが絡んだアプリを簡単に作ることができます。弊社では、今後も Parse を活用したアプリやサービスを公開していく予定です。お楽しみに!

iTunesArtwork-Mask@2x

App Store で見る