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

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

はじめに

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

ということで主に Android で 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. サンプルプロジェクトのダウンロード / Application ID と Client Key の取得

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

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

が欲しいです。ということで、まずはサンプルの ToDo アプリをダウンロードしましょう。メニューから「Downloads」を選択します。すると「Android」グループの中に「Example App」というのがあるのでクリックしてダウンロードします。

android_getting_started05_2

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

android_getting_started06_2

これであとはアプリの実行だけです。

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

ダウンロードしてきたサンプル ToDo アプリのプロジェクトファイルは解凍するとそのまま Android アプリケーションプロジェクトになっています。これを ADT または Android Studio のどっちでも良いので、得意なほうにインポートしましょう。

android_getting_started07

プロジェクトをビルドすると、いきなり ToDoListApplication クラスでコンパイルエラーが発生しますが、それで OK です。ToDoListApplication のエラーが起きている YOUR_APPLICATION_IDYOUR_CLIENT_KEY を先ほどコピーしてきた Application ID と Client Key に書き換えてください。

package com.parse.demo;

import com.parse.Parse;
import com.parse.ParseACL;

import com.parse.ParseUser;

import android.app.Application;

public class ToDoListApplication extends Application {

	@Override
	public void onCreate() {
		super.onCreate();

		Parse.initialize(this, YOUR_APPLICATION_ID, YOUR_CLIENT_KEY);


		ParseUser.enableAutomaticUser();
		ParseACL defaultACL = new ParseACL();
		// Optionally enable public read access.
		// defaultACL.setPublicReadAccess(true);
		ParseACL.setDefaultACL(defaultACL, true);
	}

}

これでコンパイルエラーが消えるので、アプリケーションが実行できるはずです。

android_getting_started08

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

さて、そんなわけで起動した ToDo アプリを使ってみましょう。起動すると次の画面になっていると思いますが、オプションメニューを開いて「Add Todo」を選択します。

android_getting_started09

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

android_getting_started10

これでサーバーに送信され、リスト画面で取得結果を表示されます。アイテムをタップすると編集、ロングタップで削除できます。

android_getting_started11

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

android_getting_started12

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

サンプルアプリがどんなことをやっているか見てみたいと思います。まず Parse アプリに必要なのは Parse の SDK です。libs フォルダに入ってます。

android_getting_started13

次に AndroidManifest.xml を見てみましょう。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.parse.demo"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="15"/>

    <uses-permission android:name="android.permission.INTERNET" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" android:name="ToDoListApplication">
        <activity
            android:name=".ToDoListActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".CreateTodo" >
        </activity>
    </application>

</manifest>

activity タグの android:name にカスタムの Application クラスが定義されています。ここで Parse サービスとのコネクションの初期化を行う感じですね。ということで次は ToDoListApplication クラスを見てみます(さっき開いたやつです)。

package com.parse.demo;

import com.parse.Parse;
import com.parse.ParseACL;

import com.parse.ParseUser;

import android.app.Application;

public class ToDoListApplication extends Application {

	@Override
	public void onCreate() {
		super.onCreate();

		Parse.initialize(this, YOUR_APPLICATION_ID, YOUR_CLIENT_KEY);


		ParseUser.enableAutomaticUser();
		ParseACL defaultACL = new ParseACL();
		// Optionally enable public read access.
		// defaultACL.setPublicReadAccess(true);
		ParseACL.setDefaultACL(defaultACL, true);
	}

}

ParseUser.enableAutomaticUser() は Web アプリに接続するクライアントを匿名ユーザーにするメソッドです。ログイン前にパブリックなデータ (Parse では ParseObject と呼ぶ) を受信したいときとかに使えますね。あと ParseACL.setDefaultACL() は現在の利用ユーザーの ACL (アクセス制御リスト) を設定するメソッドです。アプリを利用しているユーザーに紐づく ParseObject に対するアクセス制限がかけれるというわけです。コメントアウトされている ParseACL.setPublicReadAccess()true に設定すると作成した ParseObject に誰でもアクセスできるようになります。

あとは ToDoListActivity クラスと CreateTodo クラスですが、Parse に関係している箇所は少しだけなのでコードを引っ張ってきて以下に並べました。

// ParseObject の追加
ParseObject todo = new ParseObject("Todo");
todo.put("name", "hoge");
try {
    todo.save();
} catch (ParseException e) {
}

// ParseObject の取得
List<ParseObject> todos;
ParseQuery<ParseObject> query = new ParseQuery<ParseObject>("Todo");
query.orderByDescending("_created_at");
try {
    todos = query.find();
} catch (ParseException e) {
}

// ParseObject の更新
todo = todos.get(0);
todo.put("name", extras.getString("name"));
try {
    todo.save();
} catch (ParseException e) {
}

// ParseObject の削除
try {
    todo.delete();
} catch (ParseException e) {
}

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

まとめ

そんな感じで5分でわかる(?) Parse の Getting Started でした。私自身も使い始めたばかりなので、知らないところが多いですが、少しずつコツコツとやっていきたいと思います。質問・間違い・アドバイスなどあればお気軽にコメントいただければと思います。お待ちしてまーす!