LoginSignup
14
15

More than 5 years have passed since last update.

Swift×Azureをやってみたらすごく簡単便利っぽい!

Last updated at Posted at 2014-12-21

大学も冬休みに突入して三日目ですが、曜日感覚が速攻でお亡くなりになられています。
今日が土曜日だと思っていたらアドカレ担当日の日曜日でした。
日は超えてますが、まだ21日の25時ということでこれから書きます。。。

やってみた経緯

以前、仙台iOS開発者勉強会でMicrosoft MVP様でいらっしゃる@nnasaki さんのAzureに関する話でMobileServiceを使ってデータベース連携が簡単にできるよ!ということを聞き、かくかくしかじかあってMicrosoft BizSparkも手に入れることができたので早速試してみました。
その時の資料はこちら。
Microsoft Azure と Swift で開発をする

AzureのMobileServiceを新規に立ち上げるとSwiftで書かれたTodoアプリのサンプルソースがダウンロードできます。
詳しくはこちら。
Microsoft Azureモバイルサービスにてswift版がダウンロードできるようになってました。

最近のMSはトップが変わってから純粋なMS製品とかだけでなくiOSとかAndroidとか今の時代の環境を取り巻くようなサービス展開を目指しているようで、こういうものが用意されたのもその動きなんだと思います。

2014-12-22 01.33.51.png

サンプルソースを動かす上での注意点

サンプルソースをダウンロードしていざ実行!と思ったところ、いくつか直さなくてはいけない点があったのでそれの紹介です。
これは2014/12/17のバージョンでの話です。

その一

ToDoTableViewController.swiftのこの部分

cell.textLabel?.text = item["text"] as? String
cell.textLabel?.textColor = UIColor.blackColor()

を以下のように直す。

cell.textLabel.text = item["text"] as? String
cell.textLabel.textColor = UIColor.blackColor()

その二

AppDelegate.swiftのこの部分

appearance.titleTextAttributes = NSDictionary(objects: [UIColor.darkGrayColor(), UIFont(name: "Helvetica-Light", size: 20.0)], forKeys: [NSForegroundColorAttributeName, NSFontAttributeName])

を以下のように直す。

appearance.barTintColor = UIColor(red: 69.2/255.0, green: 177.2/255.0, blue: 255.0/255.0, alpha: 1.0)
        appearance.titleTextAttributes = NSDictionary(objects: [UIColor.darkGrayColor(), UIFont(name: "Helvetica-Light", size: 20.0)], forKeys: [NSForegroundColorAttributeName, NSFontAttributeName], count: 2)

その三

iPhoneでビルドする場合はMain.storyboardのSegueをPopoverからModalに直す。
iPadの場合だとPopoverのままでオーケーです。

スクリーンショット 2014-12-22 1.28.58.png

美味しいところ

フィールドを自動で追加してくれる

テーブルへの値の挿入はToDoTableControllerのdidSaveItem(text:)関数で行われています。
その中を見るとDictionary型のオブジェクトを追加する形になっています。

追加するオブジェクトはこちら。

let itemToInsert = ["text": text, "complete": false]

プラスボタンを押して遷移した画面の先で記入したtextを追加します。
TODOアプリなのでcompleteはそのTODOが完了したかどうかのフラグ。
この値で追加するとテーブルはこんな感じ。

スクリーンショット 2014-12-22 1.43.52.png

ここにnumberというkeyで値を追加すると以下のように自動でフィールドを追加してくれます。

let itemToInsert = ["text": text, "complete": false, "number": 1]

スクリーンショット 2014-12-22 1.50.02.png

便利なフレームワーク

MSTable

フレームワークはダウンロードしたサンプルプロジェクトに入っていますが、その中のMSTableでテーブルの値に変更を加えることができます。フレームワークはObjective-Cで書かれているため、Swiftで扱うためにBridgingHeaderを使っています。

Insert

-(void)insert:(NSDictionary *)item completion:(MSItemBlock)completion;
-(void)insert:(NSDictionary *)item
   parameters:(NSDictionary *)parameters
   completion:(MSItemBlock)completion;

Read

-(void)readWithId:(id)itemId completion:(MSItemBlock)completion;
-(void)readWithId:(id)itemId
       parameters:(NSDictionary *)parameters
       completion:(MSItemBlock)completion;
-(void)readWithQueryString:(NSString *)queryString
                completion:(MSReadQueryBlock)completion;
-(void)readWithCompletion:(MSReadQueryBlock)completion;
-(void)readWithPredicate:(NSPredicate *) predicate
      completion:(MSReadQueryBlock)completion;

Update

-(void)update:(NSDictionary *)item completion:(MSItemBlock)completion;
-(void)update:(NSDictionary *)item
   parameters:(NSDictionary *)parameters
   completion:(MSItemBlock)completion;

Delete

-(void)delete:(NSDictionary *)item completion:(MSDeleteBlock)completion;
-(void)delete:(NSDictionary *)item
   parameters:(NSDictionary *)parameters
   completion:(MSDeleteBlock)completion;
-(void)deleteWithId:(id)itemId completion:(MSDeleteBlock)completion;
-(void)deleteWithId:(id)itemId
         parameters:(NSDictionary *)parameters
         completion:(MSDeleteBlock)completion;

まとめ

さて、サンプルからごにょごにょいじってみた感想としては超簡単
サーバーだのデータベースだのを良く知らずとも良い感じに処理してくれたり、WindowsAzureMobileServices.frameworkが分かりやすくて便利なクラスを提供してくれているので簡単なことならiOSの知識だけで全然イケます。
これがBaasの力か...!!

今のところ触ってみたところまでだとここまでです。
次回はもうちょっと色々試してみます。

14
15
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
15