hello_world.py

"Doing good is part of our code"

ParseのAndroidStudioでの使い方(前編)


最近クッソお世話になっているParseのAndroidStudioでの使い方のメモ。




MBaaSとは



BaaS 【 Backend as a Service 】 MBaaS / Mobile Backend as a Service
スマートフォン向けのWebアプリケーションが必要とするサーバ側の様々な機能をインターネットを通じてサービスとして提供するクラウドサービスの一種。
提供される機能はサービスにより様々だが、利用者情報の登録・管理や認証、データの保管、プッシュ通知、課金・決済、ソーシャルメディアとの連携などが実装されていることが多い。アプリケーション開発者はこれらの機能のAPIを呼び出すよう設定することで、自らのアプリケーションの一部として取り込むことができる。
出典: BaaSとは 【 MBaaS 】 【 Backend as a Service 】 - 意味/解説/説明/定義 : IT用語辞典

代表的なものの中に、Parse, Google Cloud Platform, Microsoft Azure Mobile Services, niftyとかがある。


Parseとは(めっちゃざっくり)

f:id:tanajun99:20150310022144p:plain


http://www.parse.com/


ParseとはMBaaS(Mobile Backend as a Service)で最も有名なサービスの一つ。基本的なクラウド機能やユーザー登録(email, username, facebook, twitterログイン)はもちろんのこと、プッシュ機能や解析機能もついていて、簡単に導入することができる。30req/sまでは無料で使うことができて、それ以降は10req/sごとに$100/monthずつ上がっていく。MongoDBみたいなNoSQLで、テーブルのカラムを定義しなくてもデータ保存が自由。プラットホームも豊富で、iOS, Android, Windows, Unity, Xamarinまである。有名なあーんな企業やこーんな企業が使っている。2013年にFacebookに買収された。


Android Studioでの使用方法

まずはめっちゃおしゃれなWebサイトからSign up して、Access Dashboardにはいり、Create a new Appで自分の開発するアプリを登録する。すると下のような感じになるので、Quick Startする。

あとは流れに沿ってmobile→Android→Native(Java)→Exist or Newで作成。Install the SDK のページに飛ぶので、Download the SDKからダウンロードする。そのあと、解凍したファイルから.jarのファイルを選び、libsに保存。

build.gradleに以下を追加し、ビルドする。

dependencies {
    compile 'com.parse.bolts:bolts-android:1.+'
    compile fileTree(dir: 'libs', include: 'Parse-*.jar')
}

ビルドが終わると各Parse オブジェクトがimportできるようになる。


AndroidManufest.xmlにNetwork-permissionの二行を追加する。

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

ApplicationクラスのonCreate()メソッドに、以下を追加。Application ID とClient Keyはランダムな文字列が自動で生成。

Parse.enableLocalDatastore(this);
 
Parse.initialize(this, "Application ID", "Client Key");

以上がすべておわったら、Activityに以下を追加してテスト。

ParseObject testObject = new ParseObject("TestObject");
testObject.put("foo", "bar");
testObject.saveInBackground();

Congratulation!となると、成功。


ユーザー登録機能

ユーザー登録の実装。activity_sign_up.xmlにeditTextでinputTypeがemail, password, password(again)のものをつくる。SignUpActivityのonCreate()に以下を追加。

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sign_up);

        emailEditText = (EditText) findViewById(R.id.email_sign_up);
        passwordEditText = (EditText) findViewById(R.id.password_sign_up);
        passwordAgainEditText = (EditText) findViewById(R.id.password_again_sign_up);
  //----------パスワード等の記入もれをはじくコード書く。今は省略。
        mActionButton = (Button)findViewById(R.id.sign_up_button);
        mActionButton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                signup();
            }
        });
private void signup(){

        String userEmail = emailEditText.getText().toString().trim();
        String password = passwordEditText.getText().toString().trim();
        String passwordAgain = passwordAgainEditText.getText().toString().trim();
        //ParseUserオブジェクトを呼び出してメールとパスワード登録
        ParseUser user = new ParseUser();
        user.setEmail(userEmail);
        user.setPassword(password);
        user.signUpInBackground(new SignUpCallback() {
            @Override
            public void done(ParseException e) {
                // 
                if (e != null) {
                    // エラーメッセージ
                    Toast.makeText(SignUpActivity.this, e.getMessage(),
                            Toast.LENGTH_LONG).show();
                } else {
                    // 次のアクティビティ起動
                    Intent intent = new Intent(SignUpActivity.this, NextActivity.class);
                    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
                    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    startActivity(intent);
                }
            }
        });
}

この時addFlagsしないと戻るボタン押した時ややこしくなるので注意。





本当はこんなことをまとめたかったのではなくて、Facebook連携とか、ログインとか、データをまとめたかったのですが、時間がないので明日また書きます。


今作成中のandroidSNSアプリをなんとか今週中にストアにあげて、密かに勉強しているSwiftiOSアプリ作成やpythonでの機械学習にもっと時間を使いたい、、、、

春休みもあと少ししかないので、これからもエンジンかけてがんばります。











最近、花粉症を1日で治しました。