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とは(めっちゃざっくり)
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連携とか、ログインとか、データをまとめたかったのですが、時間がないので明日また書きます。
今作成中のandroidのSNSアプリをなんとか今週中にストアにあげて、密かに勉強しているSwiftでiOSアプリ作成やpythonでの機械学習にもっと時間を使いたい、、、、
春休みもあと少ししかないので、これからもエンジンかけてがんばります。
最近、花粉症を1日で治しました。