XamarinでParse SDKを利用する

# はじめに
念頭にはXamarinの導入について紹介するという意識はなかったのですが、一日目の記事を読んでXamarinがあまり知られてない状況で、二日目から試す人がいないようなマニアックなトピックというのもどうかと思いなおして、急遽、Parseの導入的な記事を書きました。

英語で書かれた公式サイトには、詳しい資料が潤沢にありますが、XamarinとParseを組み合わせた日本語の情報も少ないだろうということで紹介します。

XamarinStudioの導入は、別の記事を参考にしてください。

# Parse
Parseは、最も有名なMobile BaaSのひとつです。

Parse Pushの紹介するのにParseを、と考えていたのですが、現状Xamarin用にはParse Pushが実装されていないそうなので、今回はデータ保存までを行います。

Parseの概要については、こちらのスライド「5分でわかったつもりになるParse.com」がお勧めです。
http://www.slideshare.net/ktsujichan/5parsecom

SDKも各環境用に充実していて、iPhoneやAndroidのネイティブ、現在はWebアプリやWindows、OSX向けのSDKも用意されています。
C#用のSDKのなかに、XamarinやUnity用のdllがあります。

Xamarin用のSDKについては、先ほど説明したように残念ながらParse Pushが用意されておらず、別の方法でPush環境の設定をおこなう必要があります。今後に期待です。

追記：2013/12/12
Components Storeから、CloudeBase.ioとBuddy.comを試したところ、
Buddy.comの場合、Mono SDKのドキュメントにAndroid、iOS用のPushAPIの記載がありました。
BaasでPushを扱いたい場合は、まずBuddy.comを試してみてはいかがでしょうか。
ストレージ利用10GBまでは無料です。
開発者サイト http://dev.buddy.com/
ドキュメント http://buddy.com/developers

## 必要環境
.NET用のParse SDKの必要環境はドキュメントで、

https://parse.com/docs/dotnet_guide
> Visual Studio 2012 or Xamarin Studio and targets .NET 4.5 applications, Windows Store apps, Windows Phone 8 apps, and Xamarin.iOS 6.3+ or Xamarin.Android 4.7+ apps.

となっていますが、最新版のXamarinStudioを導入していれば問題ありません。

## Parseに登録
まずは、Parseにアカウント登録します。
登録時にひとつめのParseアプリを作成します。

## Parse on .net
ネイティブ向けには、ユーザごとにカスタマイズされたチュートリアルがダウンロードできます。
分から無いことがあれば、まずはネイティブ向けのチュートリアルから始めることをおすすめします。

今回は、.net用のチュートリアルから抜粋してすすめます。
https://parse.com/docs/dotnet_guide

まずは、サンプルプロジェクトをダウンロードしましょう。

### ParseのSampleプロジェクトをダウンロード

ダウンロードページからXamarin.Android用のSampleプロジェクトをダウンロードします。
https://parse.com/docs/downloads/

```csharp:sample1.cs
			ParseClient.Initialize("YOUR APPLICATION ID", "YOUR .NET KEY");
```

作成したParseアプリのDashbord から
Setting - Application Keys を開き、Application IDと.NET Keyをコピーして貼り付けます。
![スクリーンショット 2013-12-02 21.01.49.png](https://qiita-image-store.s3.amazonaws.com/0/31371/59b43ed3-0694-973b-6659-52cd4ec65ccc.png)

アプリを実機で起動してみましょう。
![スクリーンショット 2013-12-02 20.59.26.png](https://qiita-image-store.s3.amazonaws.com/0/31371/3c1abea4-cc51-8d73-08e5-1d809d3715d6.png)

PC上のシミュレータを使う場合は、トラブル対処にはノウハウが必要ですが、Genymotionでnexus7の4.1.1あたりが起動が速くチャレンジしてみてください。
こちらのAndroid 4.3はまだ不安定だと思います。
https://shop.genymotion.com/
https://cloud.genymotion.com/page/doc/
https://groups.google.com/forum/#!topic/genymotion-users/oe6slq3Da5c

#データ保存
ParseObjectを使って、データをサーバに保存します。

チュートリアルのドキュメントからMainActivity.csにコードを追加してみます。

![スクリーンショット 2013-12-02 23.55.21.png](https://qiita-image-store.s3.amazonaws.com/0/31371/08c7f2a0-07ff-da50-4292-7e0205091f03.png)

```csharp:MainActivity.cs:SaveScore
		async void SaveScore(int score) {
			ParseObject gameScore = new ParseObject("GameScore");
			gameScore["score"] = score;
			gameScore["playerName"] = "Sean Plott";
			await gameScore.SaveAsync();
		}
```

```csharp:MainActivity.cs:OnCreate
			SaveScore (1337);
```

ParseのDataBrowserから保存された内容が確認できます。

![スクリーンショット 2013-12-02 23.56.47.png](https://qiita-image-store.s3.amazonaws.com/0/31371/43d07cda-ef85-bd05-0801-ad02e40c1c5f.png)

# 今後の予定

おもったほど記事が充実しなかったため、補足的にXamarinとParse関連の記事を追加して充実させたいとおもいます。

その他、予定していたMono関連の局所トピック的な

- Mono LLVMの設定とベンチマーク結果

- Web Framework BenchmarksにおけるC#勢の現状

また、シンプルなMonoの入門記事として

- SinatraクローンのNancyフレームワークの紹介

- XamarinにおけるF#の紹介

- Cocos2D-XNAの入門の翻訳

あたりを追加していきたいとおもいます。