Tech Sketch Bucket of Technical Chips by TIS Inc.

Backend as a ServiceのParseを使ってみる その1

Pocket

XaaS系の言葉を聞くと、またか、と思われる方もいらっしゃるかもしれませんが、ここは少しお付き合いください。ということで、これからお話するのはParseというBaaS(Backend as a Service)の使い方についてです。


Backend as a Serviceをご存知ですか?

BaaSは一般的にはモバイルアプリケーションのバックエンド部分をまるっとサービス化して提供しますというもので、データの同期やプッシュ配信、ユーザ管理やソーシャルとの連携など、一通りのことができるようになっているものが多いです。今回ご紹介するParseもそんなBaaSの一つです。Parseはアメリカのサンフランシスコに拠点を置くBaaSのスタートアップ企業で、本国ではすでに多数のモバイル向けサービスやモバイルアプリのバックエンドとして利用されています。

ParseのWebページ
ChrunchBase上のParseの情報
ParseのApp Gallery

Parseでできること

現在Parseで提供されているのは以下の機能です。

  • データストレージ
  • プッシュノーティフィケーション
  • ユーザ管理
  • ソーシャルプラットフォーム連携(Facebook、Twitter)
  • ロケーション
  • ファイルアップロード

上記のWebAPIを利用するためにiOSとAndroid用にそれぞれSDKが配布されています。また、Webベースでモバイルアプリを開発する場合には、JavaScriptのSDKが準備されていますし、RESTによるアクセスでのAPI利用も可能です。

Parseを利用する際の課金についてですが、1,000,000回APIコール/月、1,000,000回プッシュ/月、1GBのストレージなどのベーシックプランは無料となっていて、それ以外については、以下のリンク先の通りの条件になっています。

Parseの各プラン

今回やってみること

簡単なアプリを作りながら、実際にParseの機能を利用してみたいと思います。まず今回「その1」として利用してみる機能は

  • ユーザ管理
  • ソーシャルプラットフォーム連携

の辺りです。

作ってみるアプリですが、遅刻や欠席、生存状況(?)を、状況に合わせたボタンを押すだけで定型文をソーシャルプラットフォームに送って知らせたり、プッシュで直接知らせるようなアプリです。(注:チームで遅刻や欠席の連絡するのに使おうかと思って作りだしている極々身内の理由なものです(汗 )Androidのネイティブアプリとして作成します。

連携するソーシャルプラットフォームですが、今回の投稿では、まずTwitterと連携してみます。

ParseとTwitterの下準備

まず何はともあれ、Parseにアカウントを作成します。ParseのWebページのトップに行くと、右上の方にSign Upボタンがあると思いますので、クリックしてサインアップし、アカウントを作成してください。

サインアップが終了するとアプリの作成・登録に進みます。アプリの名前を指定してCreate Appボタンを押すとアプリのダッシュボードが表示され、そのアプリからAPIを利用するのに必要なkey類が生成されます。アプリをさらに追加して作りたい場合は、ダッシュボードの左上にあるアプリ選択メニューの中にアプリ作成のリンクがありますので、そちらから作成します。

parse_create_app.jpg

parse_dashboard_createapp.jpg

Parseの準備と合わせて、今回はTwitterを利用しますので、そちらのAPIを利用するためのアプリの登録なども行ないます。たぶんみなさんよくご存知だと思いますので、詳細は割愛します。まだTwitterのAPIを利用してみたことがない方は以下のリンクのDevelopersサイトを参照してもろもろやってみてください。

TwitterのDevelopersサイト

また、Parse側でTwitterと連携した認証を利用するための設定を行なっておきます。ダッシュボードのSettingsボタンを押すとParse側で設定可能な項目の設定画面が表示されます。User authenticationを選択すると一番下にTwitterの設定項目がありますので、Allow Twitter authenticationをONにし、Consumer keyをTwitterから発行されたものを登録してください。

parse_twitter_auth_settings.jpg

以上で下準備は終りです。

Androidアプリの作成

それではAndroidのアプリを作っていきます。あらかじめAndroid用のSDKをダウンロードしておきます。ダウンロードはDocsのメニューにあるDownloadsリンクからたどれるダウンロードページから行えます。ちなみに同じダウンロードページにSDKだけでなくBlank ProjectやExample Projectをダウンロードできるようになっていますが、今回は特にBlank Projectなどは利用せず、一からAndroidのアプリを作成します。

Eclipseから普段通りAndroidアプリのプロジェクトを作成します。こちらも手順は割愛します。作成したプロジェクトにlibsなど適当なディレクトリを作成して、ダウンロードしたSDKのjarファイルをコピーしておきます。パスの設定も合わせて行ないます。

各種設定

まずAPIを利用するのに、当然ネットワークを使いますのでmanifestファイルにはINTERNETのパーミッション指定を追加しておきます。

次にAPIアクセスに関する初期化の処理を追加します。今回はApplicationクラスのonCreateメソッドの中で以下のように行なっています。

ParseクラスのinitializeメソッドにはそれぞれParseでのアプリ作成・登録時に生成されたアプリケーションIDとクライアントキーを第2、第3引数に渡して初期化します。また、今回はTwitterと連携しますので、Twitter連携に利用するParseTwitterUtilsクラスも初期化しておきます。こちらのinitializeメソッドにはTwitterから発行されているコンシューマキーとコンシューマシークレットを渡して初期化しておきます。

Twitterと連携してログイン

ParseのAPIとTwitterのAPIを利用する準備ができたら、実際にTwitterと連携してログインする部分を作成します。今回はLoginActivityを作成して、その中でLoginの処理を実行しています。

onTwitterLoginメソッドがLoginActivityの画面上のログインボタンを押下した際に呼ばれます。その中の処理で、先程初期化したParseTwitterUtilsのlogInメソッドを呼出します。このメソッドを呼出すことでTwitterのOAuthのAPIにアクセスし、認証を実行します。

logInメソッドにはログインの実行が終了した際の処理を追加するLogInCallBackクラスを渡しておきます。この中のdoneメソッドにログイン実行後の処理を記述します。doneメソッドにはParse上のユーザをラップするParseUserクラスとログイン実行時に例外が発生した場合に、その例外を返すParseExceptionクラスのインスタンスがそれぞれ渡されてきます。ここではログイン成功でParse上にまだ該当するユーザの登録が無かった場合、成功ですでにユーザ登録がある場合、失敗した場合それぞれで、簡単にメッセージをToastで出してログイン後画面のインテントを起動するかしないかの処理を書いています。

2012-07-31 17.54.09.png

2012-07-31 18.03.58.png

ログインが成功して、かつParse上にまだ該当するユーザの登録が無かった場合にはParse上への登録も同時に行われます。ParseUserクラスのisNewメソッドが今回新規で登録されたユーザかどうかの判定に利用できます。登録されたユーザの一覧はダッシュボードから確認することができます。

parse_dashboard_user.jpg

実際にTwitterに投稿してみる

ログインが成功して、ParseUserクラスのインスタンスが生成されている状態になっていれば、Parseプラットフォームとのセッションが生成され、かつ、Twitterへの認証も保持された状態になっています。基本ログアウトを実行するまで有効です。なので、Twitterに投稿する際も、現在のセッションで保持している認証情報を使って簡単に投稿することができます。

HttpClientとHttpPostを利用してPostを実行するのは通常のAPI利用と変わりません。TwitterのAPIにアクセスする際に必要な認証情報はParseTwitterUtilsでそれらを保持しているTwitterクラスを取得し、signRequestに生成したリクエストのHttpPostクラスのインスタンスを渡してやることで付加してくれます。あとは普通にexecuteしてやるだけです。

2012-08-01 16.59.55.png

2012-08-01 16.56.41.png
 

まとめ

さて、今回はParseを利用したTwitterとの連携をざっと見てみました。今回までのところでは個別のTwitterライブラリなどを使ってもできるところではあるので、そんなにバックエンドのプラットフォームのありがたみが感じられないかもしれませんが、それでもユーザ管理も含めた認証連携をSDKを使って比較的簡単に利用できるイメージは持っていただけるかと思います。その2以降(何回の続きものにするかは未定ですが、、)では、もう少し踏込んで使ってみます。

エンジニア採用中!私たちと一緒に働いてみませんか?