Windows Azure Mobile Services iOS SDK、登場!
皆様、こんにちは!いかがお過ごしでしょうか?
一週間ほど前になりますが、この件はうちのチームの誰も詳しく書いてないので、私が書きますねw。ご存じの通り約一月前、Windows Azure Mobile Services Preview がリリースされました。今日は、10月17日のUpdateの一部である、 Windows Azure Mobile Services 用の iOS SDK について書きたいと思います。 これはオフィシャルには“これで決まり!”的な SDK ではありませんが、いまだ開発中のものです。今回のUpdateでは、iOS SDK では、現在 Windows 8 用SDK がサポートしている機能のほぼすべてのサポートに加えて、いくつかの新しい特長が付加されました。
このエントリーでは、iOS SDK のハイレベルな概要の説明と、いくつかの新しい特長について紹介します。後日、もう少しDeep Dive な記事は書きたいと思っていますのでご期待ください。
Windows Azure アカウントの取得
Mobile Services と iOS SDK を使うためには、 Windows Azure アカウントが必要です。まだお持ちでない方は、こちらで90日間無償評価版をお試しください。 この3か月のトライアルにサインアップすれば、Windows Azure の他の新しい特長や諸機能にも触れることができますが、Mobile Services はそれらとは別の特長を持ち、Preview の期間中は無料となります。
iOS SDK について
iOS SDK を取得するにはいくつかのオプションがあります。Windows 8 用に最適化されたクライアントSDKと同じように、 iOS SDK は既に GitHub にオープンソースとして公開されています。 これは要するに、ソースコードにアクセスできるだけではなくて、それを修正したりOSSとしての完成度に貢献したりといったことを、リクエストベースで行えることです。それに加えて、新しい Mobile Service を作成した後にQuickstart page に移動すると、iOS SDK のダウンロードリンクと、Xcode で作られたスタータープロジェクトを入手することができます。このプロジェクトは既に SDK がインストールされています。:
データストレージについて
この iOS SDK では、Win8 SDK の場合と同様のデータストレージアクセスが可能です。この SDK の仕組みとしては、Mobile Services の REST API に対して JSON ペイロードを送信します。もしあらかじめ作成された Quick start プロジェクトをWindows Azure portal から落とした場合には、既に一つのサービスクラスを持ち、データストレージにアクセスするための機能を保有しています。このクラスは、テーブル名と一緒に初期化されます。それに伴い、その他の項目の追加や修正を NSDictionary を使って実装できます。それらは当該サービスクラスに対応するテーブル内にある各アイテムを 含みます。 アイテム群を削除するには、item id を含む NSDictionary を送信します。更に、フィルタリング用のメソッドもあり、これは NSPredicate クラスを利用しテーブルへのクエリー実行を容易にしています。
認証機能について
前回のリリースで Windows 8 用SDK がラウンチされたとき、サポートされていた認証は、Windows Live アカウント(Microsoft アカウント)を使った Live Authentication だけでした。 iOS SDK のリリースに伴い、Live に加えて、Facebook、Twitter、そして Google による認証も追加されました。これらを有効にして実行するには、Windows Azure ポータルに移動し、Identity セッティングの箇所で、対象となるアプリケーションに、どれを使いたいかを設定する必要があります。この設定を行う前に、新しいアプリケーションを一つ作り、それに対して正しくサインアップして置く必要があります。各 IDにおけるサインアップの方法のリンクは下記の通りです。:
一度、対象となるアプリケーションのIdentity セッティングが終われば、iOS SDKの中に包含されている MSClient クラスの中のメソッドを使って、認証を実装可能です。iOS SDK を使った認証のセッティングと実装に関して詳しくは、こちらのリンクを参照してください。サンプルの TodoListController.m ファイルの中の、ViewDidLoad() メソッドの修正およびViewDidAppear() メソッドへの追加が掲載されています。
例:
//Table にデータをリロードする下記のコードを削除:
[todoService refreshDataOnSuccess:^{
[self.tableView reloadData];}];
// viewDidLoad メソッドの直後に、下記のコードを追加:
- (void)viewDidAppear:(BOOL)animated
{
// If user is already logged in, no need to ask for auth
if (todoService.client.currentUser == nil)
{
// We want the login view to be presented after the this run loop has completed
// Here we use a delay to ensure this.
[self performSelector:@selector(login) withObject:self afterDelay:0.1];
}
}
- (void) login
{
UINavigationController *controller =
[self.todoService.client
loginViewControllerWithProvider:@"facebook"
completion:^(MSUser *user, NSError *error) {
if (error) {
NSLog(@"Authentication Error: %@", error);
// Note that error.code == -1503 indicates
// that the user cancelled the dialog
} else {
// No error, so load the data
[self.todoService refreshDataOnSuccess:^{
[self.tableView reloadData];
}];
}
[self dismissViewControllerAnimated:YES completion:nil];
}];
[self presentViewController:controller animated:YES completion:nil];
}
// これにより、現在のユーザーを格納するメンバー変数が作成され、
// 認証プロセスを制御するメソッドが作成される:
// このユーザーは Facebook ログインを使って認証される:
Push 通知について
今回の iOS SDK のリリースでは、Push 通知はサポートされません。この機能に関しては近々リリースされますので、リリースされ次第、またお知らせします。
Service 側 スクリプトについて
他のMobile Services に接続するアプリ同様、パワフルな Service 側のスクリプティングの実装が可能で、それらはデータが格納されているテーブルへの何らかの CRUD 処理により実行されることになります。この Service 側スクリプトでは多くのことが実装可能です (他のテーブルへのJoin、他のサービスへの HTTP リクエストの送信、その他…)。現在のところ、Service 側スクリプトは Azure SDK にアクセスしており、これはすなわち、これらのスクリプトはBlob ストレージ、Table ストレージ、その他にアクセスできるということです。更に、今回のUpdateでは、SendGrid を使ったE-mail の送信や、Twilio を使用した SMS テキストメッセージ等がサポートされました。
まとめ
iOS 開発者であれば、 Windows Azure Mobile Services をぜひ見てみてください。iOS アプリのバックエンドをすぐに作成でき、実行させることができますし、その他多くのパワフルな機能を利用することができます。Mobile Services を使えば、モバイルアプリの開発にベストを尽くし集中することが可能となり、データストレージや認証等の取扱いに悩む必要はなくなります。加えて、将来にわたりさらに多くの特長が Mobile Services に頻繁に追加されていくことになるでしょう。ぜひ楽しみにして戴ければと思います。
それではまた!
鈴木 章太郎