[Parse][iOS] 5分でわかるアカウント登録〜サンプル ToDo アプリの実行

2014.02.10

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

はじめに

先日から Parse の連載が始まりました。Parse は概要でも解説した通り、いま話題の MBaaS の1つです。知識が少なくても誰でも簡単にモバイルのバックエンドが構築できる!(はず)のやつです。しかも無料!

ということで主に iOS で Parse の使いかたについて、実際に試しながら解説していきたいと思います。本稿では Parse でアカウント登録して ToDo リストアプリを作るところまでやってみたいと思います!所要時間5分でできる!かもしれない!w

1. サインアップ

よし、まずはサインアップだ。↓

Sign up for Parse | Parse

android_getting_started01

名前とメールアドレス、パスワードを入力します。GitHub または Facebook でログインすることも可能です!

android_getting_started02

次に「Get started」なるフォームが表示されます。サインアップ時にはアカウント作成と同時に最初のアプリを作れるというわけです。「Company type」や「Company name」はご自身の所属先を入力しましょう。

android_getting_started03

OK、サインアップ完了です。メニューがいろいろ表示されます。

android_getting_started04

2. 公式サイトからサンプルプロジェクトをダウンロ・・・

Welcome メニューにはイロイロあって目移りしそうですが、目的のものだけ探し出しましょう。今回はサンプルの ToDo アプリを実行したいので

  • サンプルの ToDo アプリのプロジェクトファイル
  • Application ID と Client Key

が欲しいです。ということで、まずはサンプルの ToDo アプリをダウンロードしましょう。メニューから「Downloads」を選択します。すると「iOS」グループの中に「Example App」というのがある・・・ん?えーっと「iOS」グループの中に「Example App」というのが・・・あれっ?!ない!

なんとiOSは「Example App」がないようです。。なので、しょうがない。。。作りましょう!

3. サンプルプロジェクトのダウンロード

で、今回は公式サイトにサンプルプロジェクトが無いので作りました! 作ったXcodeプロジェクトはGithubにアプロードしてあるのでダウンロードしてください。

hirai-yuki/ParseToDoSample

4. SDK(v1.2.18)のダウンロード

SDK(v1.2.18)をダウンロードしましょう。ダウンロードしたparse-library-1.2.18.zipを解凍するとParse.frameworkができます。これをプロジェクトにインポートします。

parse-ios-getting-started-1

parse-ios-getting-started-6

5. Application ID と Client Key の取得

次にApplication ID と Client Key を手に入れておきましょう。「Dashboard」をクリックし、左上のドロップダウンから先ほど登録したアプリ名を選択、「Settings」タブをクリックして左メニューから「Application keys」をクリックします。そうすると Application ID と Client Key が出てくるのでメモしておきます。

android_getting_started06_2

6. サンプル ToDo アプリの実行

サンプル ToDo アプリを実行する前に、取得した Application ID と Client Key をXcodeプロジェクトに記述しましょう。AppDelegate.mを開き、your_application_idyour_client_keyを先ほどコピーしてきた Application ID と Client Key に書き換えてください。

#import "AppDelegate.h"

#import <Parse/Parse.h>

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [Parse setApplicationId:@"your_application_id" clientKey:@"your_client_key"];

    [PFUser enableAutomaticUser];

    PFACL *defaultACL = [PFACL ACL];

    [PFACL setDefaultACL:defaultACL withAccessForCurrentUser:YES];

    return YES;
}

@end

これで、アプリケーションが実行できます。

7. アプリを動かしてみる

さて、そんなわけで起動した ToDo アプリを使ってみましょう。起動すると次の画面になっていると思います。右上の「+」ボタンが有効になったら、タップしてTodoを追加しましょう。

parse-ios-getting-started-2

適当な文字列を入力して「Done」

parse-ios-getting-started-3

これでサーバーに送信され、リスト画面で取得結果を表示されます。アイテムをタップすると編集、フリック?(いつものリスト削除の動作のやつ)で削除できます。

parse-ios-getting-started-4

以上がサンプルアプリの機能です。データの送信・受信・更新・削除の基本的な処理は網羅されているので、ソースを見ればどんな感じにやればいいか分かりますね!(自分で書いたのでそりゃそうです)ちなみにブラウザに戻って「Data Browser」を開くとサーバーに送信して記録されたデータの管理が行えます。ちゃんと保存されていますね!

parse-ios-getting-started-5

8. ソースを軽く見てみる

AppDelegateクラスを見てみましょう。ここで、Parseサービスとのコネクションの初期化を行う感じです。これはBlank Projectを参考に作成しました。Androidともたぶん変わらないと思います。

#import "AppDelegate.h"

#import <Parse/Parse.h>

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [Parse setApplicationId:@"your_application_id" clientKey:@"your_client_key"];

    [PFUser enableAutomaticUser];

    PFACL *defaultACL = [PFACL ACL];

    [PFACL setDefaultACL:defaultACL withAccessForCurrentUser:YES];

    return YES;
}

@end

[PFUser enableAutomaticUser] は Web アプリに接続するクライアントを匿名ユーザーにするメソッドです。ログイン前にパブリックなデータ (Parse では ParseObject と呼ぶ) を受信したいときとかに使えますね。あと[PFACL setDefaultACL:defaultACL withAccessForCurrentUser:YES]は現在の利用ユーザーの ACL (アクセス制御リスト) を設定するメソッドです。アプリを利用しているユーザーに紐づく ParseObject に対するアクセス制限がかけれるというわけです。 あとは ToDoListViewControllerクラスと TodoViewControllerクラスですが、Parse に関係している箇所は少しだけなのでコードを引っ張ってきて以下に並べました。

// ParseObject の取得
PFQuery *query = [PFQuery queryWithClassName:@"Todo"];
[query orderByAscending:@"_created_at"];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
    if (error) {
        // エラー処理
        return;
    }

    // 取得したデータをゴニョゴニョ    
    ・・・
}];

// ParseObjectの追加・更新
PFObject *todo;

if (self.todo) {
    todo = self.todo; // 上の処理で取得したParseObject
} else {
    todo = [PFObject objectWithClassName:@"Todo"];
}

todo[@"name"] = self.textField.text;

[todo saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
    if (!succeeded) {
        // エラー処理        
        return;
    }

    // 成功時の処理をゴニョゴニョ    
    ・・・
}];

// ParseObjectの削除
PFObject *todo = self.todoList[indexPath.row];

[todo deleteInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
    if (!succeeded) {
        // エラー処理        
        return;
    }

    // 成功時の処理をゴニョゴニョ    
    ・・・
}];

こんな感じです。データの操作は簡単ですね♪

自力でXcodeプロジェクトを作成する場合

Blank Project(v1.2.18)も用意されていますが、中身を見るとiOS開発的にすこーし古い作りになっているため、今回は1から作ることにしました。その場合のやり方を少し紹介します。

SDK(v1.2.18)のダウンロード

SDK(v1.2.18)をダウンロードしましょう。ダウンロードしたparse-library-1.2.18.zipを解凍するとParse.frameworkができます。これをプロジェクトにインポートします。

parse-ios-getting-started-1

parse-ios-getting-started-6

必要な標準フレームワーク・ライブラリの設定

Parse.frameworkが依存する標準フレームワーク・ライブラリを設定しましょう。追加するものは以下の通りです。

  • CoreLocation.framework
  • StoreKit
  • QuartzCore
  • libz.1.1.3.dylib
  • Security
  • AudioToolbox
  • MobileCoreServices
  • SystemConfiguration
  • CFNetwork

parse-ios-getting-started-7

まとめ

使い始めてみて「えっ?こんな簡単にできちゃうの?」って思うぐらい導入が簡単でした。マジ凄すぎ!パネェっす。 小室氏諏訪氏同様、iOS担当としてコツコツやってくので、エロい方々のアドバイスお待ちしてます。頑張るんば!