SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

MBaaSと連携するAndroidアプリを作る

RDBとの比較で理解する、MBaaSのデータストアの基本

MBaaSと連携するAndroidアプリを作る 第3回


  • X ポスト
  • このエントリーをはてなブックマークに追加

ダウンロード StampTime_03.zip (2.2 MB)

aclにはパーミッションを設定する

 さて、説明を飛ばした(2)以降のコードはaclフィールドについての処理です。aclフィールドにはパーミッションを設定します。パーミッションを設定するにはNCMBACLクラスを使います。NCMBACLクラスのコンストラクタでtaskACLオブジェクトを生成します(2)。taskACLオブジェクトを使って、パーミッションを設定していくわけですが、どんな風に設定したいかを先に説明しましょう。

 このアプリでは、タスク(仕事の名前)は誰でも作成できるようにします。そして、そのタスクに関係するメンバーはタスクを選んで、開始時間、終了時間を記録できるようにします。タスクに参加するメンバーはあらかじめ限定せず、誰でも参加できるようにしたいと思います。ですから、TaskClassのレコードは誰でも読み込むことができるようにしないといけません。

 しかし、タスクの名前を変更したり、このタスクはもう終わったので削除するといった更新権は、タスクを作成した人だけに与えたいと思います。それが、(3)以降のコードです。setPublicReadAccessメソッドの引数にtrueを指定してパブリックに読込権限を与えます。WriteAccess(更新権限)はNCMBUserクラスのgetCurrentUser()メソッドで、現在のユーザーを取得してsetWriteAccessメソッドで与えます。

 task.setACL(taskACL)でレコードにセットします。

青い「パーミッション編集」ボタンを押すとパーミッションが表示される
青いパーミッション編集ボタンを押すとパーミッションが表示される

 aclフィールドの青い「パーミッション編集」ボタンを押すとパーミッションの設定が表示されます。全員が読み込み可能で、特定の会員が更新・削除可能であることがわかります。

注釈

 Androidのアプリ開発でよくやるミスなのですが、Activity追加した場合は、忘れずにマニフェストファイルAndroidManifest.xmlにもActivityを追加してやりましょう。この場合だと、マニフェストにリスト4の(1)のようにActivityを追加します。そうしないと、Activityを呼び出したときにエラーになってしまいます。

リスト4
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="jp.co.easier.stamptime"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="16"
        android:targetSdkVersion="19" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            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=".LoginActivity">
        </activity>
        <activity
            android:name=".UserAddActivity">
        </activity>
        <activity (1)
            android:name=".TaskAddActivity">
        </activity>
        
    </application>

</manifest>

最後に

 今回はデータストアの基本について解説しました。クラスを管理画面から作成済のときでも、作成していないときでも同じコードでレコードを登録できるので便利ですね。

 また、aclでは、会員単位ではなくロール(共通の役割を持つグループ)を作成してロール単位でレコードやクラスに権限を与えることもできます。

 次回はもう少し高度なデータストアの使い方を説明します。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
MBaaSと連携するAndroidアプリを作る連載記事一覧

もっと読む

この記事の著者

金宏 和實(カネヒロ カズミ)

 富山県高岡市出身で在住。ソフトウェア開発者兼ライター。株式会社イーザー関西学院大学文学部仏文科卒。第一種情報処理技術者(今で言うと、応用情報技術者。第一種→ソフ開→応用と変遷したようだ)主な著書『作ればわかる!Androidプログラミング第2版 -SDK4対応-』『VS 2010で作る Web-DB アプリ入門』『ベテランが丁寧に教えてくれるデータベースの知識と実務』『はじめてのAndroidアプリ作成 センサー活用とクラウド連携』『はじめてのAndroidアプリ作成 基本プログラミング』Web連載『VB2008で楽々Webプログラミング』『再発見!VB2005快適プログラミング』 『こうしろうのMindStroms日記』 個人的なブログはこちらです。 

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/8126 2014/10/16 19:47

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング