[Parse][Android] 5分でわかるアカウント登録〜サンプル ToDo アプリの実行
はじめに
先日から Parse の連載が始まりました。Parse は概要でも解説した通り、いま話題の MBaaS の1つです。知識が少なくても誰でも簡単にモバイルのバックエンドが構築できる!(はず)のやつです。しかも無料!
ということで主に Android で Parse の使いかたについて、実際に試しながら解説していきたいと思います。本稿では Parse でアカウント登録して ToDo リストアプリを作るところまでやってみたいと思います!所要時間5分でできる!はず!w
1. サインアップ
よし、まずはサインアップだ。↓
名前とメールアドレス、パスワードを入力します。GitHub または Facebook でログインすることも可能です!
次に「Get started」なるフォームが表示されます。サインアップ時にはアカウント作成と同時に最初のアプリを作れるというわけです。「Company type」や「Company name」はご自身の所属先を入力しましょう。
OK、サインアップ完了です。メニューがいろいろ表示されます。
2. サンプルプロジェクトのダウンロード / Application ID と Client Key の取得
Welcome メニューにはイロイロあって目移りしそうですが、目的のものだけ探し出しましょう。今回はサンプルの ToDo アプリを実行したいので
- サンプルの ToDo アプリのプロジェクトファイル
- Application ID と Client Key
が欲しいです。ということで、まずはサンプルの ToDo アプリをダウンロードしましょう。メニューから「Downloads」を選択します。すると「Android」グループの中に「Example App」というのがあるのでクリックしてダウンロードします。
これでプロジェクトファイルが手に入ったので、ついでに Application ID と Client Key も手に入れます。「Dashboard」をクリックし、右上のドロップダウンから先ほど登録したアプリ名を選択、「Settings」タブをクリックして左メニューから「Application keys」をクリックします。そうすると Application ID と Client Key が出てくるのでメモしておきます。
これであとはアプリの実行だけです。
3. サンプル ToDo アプリの実行
ダウンロードしてきたサンプル ToDo アプリのプロジェクトファイルは解凍するとそのまま Android アプリケーションプロジェクトになっています。これを ADT または Android Studio のどっちでも良いので、得意なほうにインポートしましょう。
プロジェクトをビルドすると、いきなり ToDoListApplication クラスでコンパイルエラーが発生しますが、それで OK です。ToDoListApplication のエラーが起きている YOUR_APPLICATION_ID と YOUR_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); } }
これでコンパイルエラーが消えるので、アプリケーションが実行できるはずです。
4. アプリを動かしてみる
さて、そんなわけで起動した ToDo アプリを使ってみましょう。起動すると次の画面になっていると思いますが、オプションメニューを開いて「Add Todo」を選択します。
適当な文字列を入力して「Done」
これでサーバーに送信され、リスト画面で取得結果を表示されます。アイテムをタップすると編集、ロングタップで削除できます。
以上がサンプルアプリの機能です。データの送信・受信・更新・削除の基本的な処理は網羅されているので、ソースを見ればどんな感じにやればいいか分かりますね!ちなみにブラウザに戻って「Data Browser」を開くとサーバーに送信して記録されたデータの管理が行えます。ちゃんと保存されていますね!
5. ソースを軽く見てみる
サンプルアプリがどんなことをやっているか見てみたいと思います。まず Parse アプリに必要なのは Parse の SDK です。libs フォルダに入ってます。
次に 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 でした。私自身も使い始めたばかりなので、知らないところが多いですが、少しずつコツコツとやっていきたいと思います。質問・間違い・アドバイスなどあればお気軽にコメントいただければと思います。お待ちしてまーす!