0
初めての Parse                株式会社 ミクシィ                 田村 航弥12年7月23日月曜日
agenda              • @tamotamago              • what’s Parse?              • Data Store              • Query             ...
@tamotamago について12年7月23日月曜日
@tamotamago について              • 田村 航弥               • 東京 2 年目 iOS App developer               • mixi for iPhone, iPad 開発  ...
@tamotamago について              • 第2回 iphone_dev_jp 東京iPhone/Mac勉強会                                  @k_kinukawa            ...
What’s Parse?12年7月23日月曜日
What’s Parse              • Parse は BaaS (Backend as a Service)12年7月23日月曜日
What’s Parse              • Parse の機能               • ユーザ認証機能               • データストア、検索               • remote notification...
12年7月23日月曜日
Parse の導入              • Parse Quick Start              • tamotamago.com [Objective-C][Parse]初めての                Parse ー導入...
Data Store              https://parse.com/docs/ios/api/Classes/PFObject.html12年7月23日月曜日
Data Store              • Key Value Store              • ブラウザからデータ閲覧、編集が可能              • リレーションも持たせることができる12年7月23日月曜日
Data Store12年7月23日月曜日
Data Store   テーブル名みたいなもの      かってにつくられる              自分でつくっていく12年7月23日月曜日
Save -blocks-    PFObject *object = [[PFObject alloc]initWithClassName:@"TestClass"];    [object setObject:@"tamotamago" f...
Save -callbacks-   - (void)viewDidLoad   {       [super viewDidLoad];   ! // Do any additional setup after loading the vie...
Update    PFObject *object = [[PFObject alloc]initWithClassName:@"TestClass"];    [object setObject:@"tamotamago3" forKey:...
Array Data PFObject *object = [[PFObject alloc]initWithClassName:@"TestClass"]; NSArray *names = [NSArray arrayWithObjects...
Relation -one-to-many-                          Post                parent               Comment   Comment   Comment12年7月2...
Relation -one-to-many-    PFObject *myPost = [PFObject objectWithClassName:@"Post"];    [myPost setObject:@"Im Hungry" for...
Relation -one-to-many-    PFObject *myPost = [PFObject objectWithClassName:@"Post"];    [myPost setObject:@"Im Hungry" for...
Relation -many-to-many-                 Post   Post   Post          like                 user   user   user12年7月23日月曜日
Relation -many-to-many-  Parse blog : A More Scalable Many-to-Many Approach   PFObject *post2 = [PFObject objectWithClassN...
Relation -many-to-many-  Parse blog : A More Scalable Many-to-Many Approach   PFObject *post2 = [PFObject objectWithClassN...
Relation -many-to-many-  Parse blog : A More Scalable Many-to-Many Approach   PFObject *post2 = [PFObject objectWithClassN...
Queries              https://parse.com/docs/ios/api/Classes/PFQuery.html12年7月23日月曜日
Basic Query12年7月23日月曜日
Basic Query  PFQuery *query = [PFQuery queryWithClassName:@"TestClass"];  [query findObjectsInBackgroundWithBlock:^(NSArra...
Basic Query  PFQuery *query = [PFQuery queryWithClassName:@"TestClass"];  [query findObjectsInBackgroundWithBlock:^(NSArra...
Where 句              [query whereKey:@"name" equalTo:@"tamotamago"];12年7月23日月曜日
OrderBy              [query orderByAscending:@"name"];12年7月23日月曜日
IN 句              NSArray *array = [NSArray arrayWithObjects:                                @"tamotamago",               ...
Relation query12年7月23日月曜日
Relation query   PFQuery *query = [[PFQuery alloc] initWithClassName:@"Post"];   [query findObjectsInBackgroundWithBlock:^...
Paging                                           query.skip = 3; [query findObjects];                                     ...
Push Notification              https://parse.com/docs/ios/api/Classes/PFPush.html12年7月23日月曜日
Setup   https://www.parse.com/tutorials/ios-push-notifications                    証明書の発行とか12年7月23日月曜日
Setup12年7月23日月曜日
Setup    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:    (NSDictionary *)launchOptions ...
12年7月23日月曜日
channel              Push を投げるゾーン12年7月23日月曜日
channel    - (void)application:(UIApplication *)application    didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)...
channel                      tamotamago               Broadcast12年7月23日月曜日
channel12年7月23日月曜日
channel                  tamotamago3              tamotamago2           tamotamago                            Broadcast12年...
send notification   PFPush *push = [[PFPush alloc] init];   NSArray *channels = [NSArray arrayWithObjects:@"tamotamago", ni...
channel       push!!                    tamotamago3                tamotamago2           tamotamago                       ...
おわりに12年7月23日月曜日
Others              • Users                • https://parse.com/docs/ios/api/Classes/PFUser.html              • Geo Points ...
でもお高いんでしょう?12年7月23日月曜日
12年7月23日月曜日
enjoy12年7月23日月曜日
Upcoming SlideShare
Loading in...5
×

Parse introduction

6,523

Published on

Published in: Technology
0 Comments
20 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
6,523
On Slideshare
0
From Embeds
0
Number of Embeds
9
Actions
Shares
0
Downloads
57
Comments
0
Likes
20
Embeds 0
No embeds

No notes for slide

Transcript of "Parse introduction"

  1. 1. 初めての Parse 株式会社 ミクシィ 田村 航弥12年7月23日月曜日
  2. 2. agenda • @tamotamago • what’s Parse? • Data Store • Query • Push Notification12年7月23日月曜日
  3. 3. @tamotamago について12年7月23日月曜日
  4. 4. @tamotamago について • 田村 航弥 • 東京 2 年目 iOS App developer • mixi for iPhone, iPad 開発 • http://alpha.mixi.co.jp/2012/10974/ • tamotamago.com12年7月23日月曜日
  5. 5. @tamotamago について • 第2回 iphone_dev_jp 東京iPhone/Mac勉強会 @k_kinukawa mixi の iOS アプリ開発 http://alpha.mixi.co.jp/2012/11000/12年7月23日月曜日
  6. 6. What’s Parse?12年7月23日月曜日
  7. 7. What’s Parse • Parse は BaaS (Backend as a Service)12年7月23日月曜日
  8. 8. What’s Parse • Parse の機能 • ユーザ認証機能 • データストア、検索 • remote notification • twitter, facebok SDK をラップ • and so on ...12年7月23日月曜日
  9. 9. 12年7月23日月曜日
  10. 10. Parse の導入 • Parse Quick Start • tamotamago.com [Objective-C][Parse]初めての Parse ー導入編ー12年7月23日月曜日
  11. 11. Data Store https://parse.com/docs/ios/api/Classes/PFObject.html12年7月23日月曜日
  12. 12. Data Store • Key Value Store • ブラウザからデータ閲覧、編集が可能 • リレーションも持たせることができる12年7月23日月曜日
  13. 13. Data Store12年7月23日月曜日
  14. 14. Data Store テーブル名みたいなもの かってにつくられる 自分でつくっていく12年7月23日月曜日
  15. 15. Save -blocks- PFObject *object = [[PFObject alloc]initWithClassName:@"TestClass"]; [object setObject:@"tamotamago" forKey:@"name"]; [object saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) { NSString *result = succeeded ? @"success" : @"error"; NSLog(@"result : %@", result); }];12年7月23日月曜日
  16. 16. Save -callbacks- - (void)viewDidLoad { [super viewDidLoad]; ! // Do any additional setup after loading the view, typically from a nib. PFObject *object = [[PFObject alloc]initWithClassName:@"TestClass"]; [object setObject:@"tamotamago2" forKey:@"name"]; [object saveInBackgroundWithTarget:self selector:@selector(saveCallback:error:)]; } -(void)saveCallback:(NSNumber*)result error:(NSError*)error { if(!error){ NSLog(@"%@", result); }else{ NSLog(@"%@", error); } }12年7月23日月曜日
  17. 17. Update PFObject *object = [[PFObject alloc]initWithClassName:@"TestClass"]; [object setObject:@"tamotamago3" forKey:@"name"]; [object saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) { [object setObject:@"tamotamago4" forKey:@"name"]; [object save]; }]; PFObject が 1 タプル12年7月23日月曜日
  18. 18. Array Data PFObject *object = [[PFObject alloc]initWithClassName:@"TestClass"]; NSArray *names = [NSArray arrayWithObjects:@"tamotamago5", @"tamotamago6", nil]; [object addUniqueObjectsFromArray:names forKey:@"names"]; [object save];12年7月23日月曜日
  19. 19. Relation -one-to-many- Post parent Comment Comment Comment12年7月23日月曜日
  20. 20. Relation -one-to-many- PFObject *myPost = [PFObject objectWithClassName:@"Post"]; [myPost setObject:@"Im Hungry" forKey:@"title"]; [myPost setObject:@"Where should we go for lunch?" forKey:@"content"]; // Create the comment PFObject *myComment = [PFObject objectWithClassName:@"Comment"]; [myComment setObject:@"Lets do Sushirrito." forKey:@"content"]; // Add a relation between the Post and Comment [myComment setObject:myPost forKey:@"parent"]; // This will save both myPost and myComment [myComment saveInBackground];12年7月23日月曜日
  21. 21. Relation -one-to-many- PFObject *myPost = [PFObject objectWithClassName:@"Post"]; [myPost setObject:@"Im Hungry" forKey:@"title"]; [myPost setObject:@"Where should we go for lunch?" forKey:@"content"]; // Create the comment PFObject *myComment = [PFObject objectWithClassName:@"Comment"]; [myComment setObject:@"Lets do Sushirrito." forKey:@"content"]; // Add a relation between the Post and Comment [myComment setObject:myPost forKey:@"parent"]; // This will save both myPost and myComment [myComment saveInBackground];12年7月23日月曜日
  22. 22. Relation -many-to-many- Post Post Post like user user user12年7月23日月曜日
  23. 23. Relation -many-to-many- Parse blog : A More Scalable Many-to-Many Approach PFObject *post2 = [PFObject objectWithClassName:@"Post"]; [post2 setObject:@"Im Hungry" forKey:@"title"]; [post2 setObject:@"Where should we go for dinner?" forKey:@"content"]; PFRelation *relation = [post2 relationforKey:@"likes"]; for (PFObject *object in objects){ [relation addObject: object]; } [post2 save];12年7月23日月曜日
  24. 24. Relation -many-to-many- Parse blog : A More Scalable Many-to-Many Approach PFObject *post2 = [PFObject objectWithClassName:@"Post"]; [post2 setObject:@"Im Hungry" forKey:@"title"]; [post2 setObject:@"Where should we go for dinner?" forKey:@"content"]; PFRelation *relation = [post2 relationforKey:@"likes"]; for (PFObject *object in objects){ [relation addObject: object]; } [post2 save];12年7月23日月曜日
  25. 25. Relation -many-to-many- Parse blog : A More Scalable Many-to-Many Approach PFObject *post2 = [PFObject objectWithClassName:@"Post"]; [post2 setObject:@"Im Hungry" forKey:@"title"]; [post2 setObject:@"Where should we go for dinner?" forKey:@"content"]; PFRelation *relation = [post2 relationforKey:@"likes"]; for (PFObject *object in objects){ [relation addObject: object]; } [post2 save];12年7月23日月曜日
  26. 26. Queries https://parse.com/docs/ios/api/Classes/PFQuery.html12年7月23日月曜日
  27. 27. Basic Query12年7月23日月曜日
  28. 28. Basic Query PFQuery *query = [PFQuery queryWithClassName:@"TestClass"]; [query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) { if (!error) { // The find succeeded. for (PFObject *object in objects){ NSLog(@"object name -> %@", [object objectForKey:@"name"]); } } else { // Log details of the failure NSLog(@"Error: %@ %@", error, [error userInfo]); } }]; 2012-07-20 13:14:29.786 ParseTest[948:f803] object name -> tamotamago 2012-07-20 13:14:29.787 ParseTest[948:f803] object name -> tamotamago2 2012-07-20 13:14:29.787 ParseTest[948:f803] object name -> tamotamago4 2012-07-20 13:14:29.788 ParseTest[948:f803] object name -> (null) 2012-07-20 13:14:29.788 ParseTest[948:f803] object name -> tamotamago712年7月23日月曜日
  29. 29. Basic Query PFQuery *query = [PFQuery queryWithClassName:@"TestClass"]; [query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) { if (!error) { // The find succeeded. for (PFObject *object in objects){ NSLog(@"object name -> %@", [object objectForKey:@"name"]); } } else { // Log details of the failure NSLog(@"Error: %@ %@", error, [error userInfo]); } }]; 2012-07-20 13:14:29.786 ParseTest[948:f803] object name -> tamotamago 2012-07-20 13:14:29.787 ParseTest[948:f803] object name -> tamotamago2 2012-07-20 13:14:29.787 ParseTest[948:f803] object name -> tamotamago4 2012-07-20 13:14:29.788 ParseTest[948:f803] object name -> (null) 2012-07-20 13:14:29.788 ParseTest[948:f803] object name -> tamotamago712年7月23日月曜日
  30. 30. Where 句 [query whereKey:@"name" equalTo:@"tamotamago"];12年7月23日月曜日
  31. 31. OrderBy [query orderByAscending:@"name"];12年7月23日月曜日
  32. 32. IN 句 NSArray *array = [NSArray arrayWithObjects: @"tamotamago", @"tamotamago2", nil]; [query whereKey:@"name" containedIn:array];12年7月23日月曜日
  33. 33. Relation query12年7月23日月曜日
  34. 34. Relation query PFQuery *query = [[PFQuery alloc] initWithClassName:@"Post"]; [query findObjectsInBackgroundWithBlock:^(NSArray *posts, NSError *error) { for (PFObject *post in posts){ PFRelation *relation = [post relationforKey:@"likes"]; PFQuery *relationQuery = [relation query]; [relationQuery findObjectsInBackgroundWithBlock:^(NSArray *tamotamagos, NSError *error) { for(PFObject *object in tamotamagos){ NSLog(@"%@", [object objectForKey:@"name"]); } }]; } }];12年7月23日月曜日
  35. 35. Paging query.skip = 3; [query findObjects]; [query findObjects]; object name -> tamotamago object name -> tamotamago2 object name -> (null) object name -> tamotamago4 object name -> tamotamago7 object name -> (null) object name -> tamotamago712年7月23日月曜日
  36. 36. Push Notification https://parse.com/docs/ios/api/Classes/PFPush.html12年7月23日月曜日
  37. 37. Setup https://www.parse.com/tutorials/ios-push-notifications 証明書の発行とか12年7月23日月曜日
  38. 38. Setup12年7月23日月曜日
  39. 39. Setup - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions { // Override point for customization after application launch. [Parse setApplicationId:@"app id" clientKey:@"client key"]; [application registerForRemoteNotificationTypes:UIRemoteNotificationTypeBadge| UIRemoteNotificationTypeAlert| UIRemoteNotificationTypeSound]; return YES; } - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)newDeviceToken { // Tell Parse about the device token. [PFPush storeDeviceToken:newDeviceToken]; // Subscribe to the global broadcast channel. [PFPush subscribeToChannelInBackground:@""]; }12年7月23日月曜日
  40. 40. 12年7月23日月曜日
  41. 41. channel Push を投げるゾーン12年7月23日月曜日
  42. 42. channel - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)newDeviceToken { // Tell Parse about the device token. [PFPush storeDeviceToken:newDeviceToken]; // Subscribe to the global broadcast channel. [PFPush subscribeToChannelInBackground:@""]; [PFPush subscribeToChannelInBackground:@"tamotamago"]; }12年7月23日月曜日
  43. 43. channel tamotamago Broadcast12年7月23日月曜日
  44. 44. channel12年7月23日月曜日
  45. 45. channel tamotamago3 tamotamago2 tamotamago Broadcast12年7月23日月曜日
  46. 46. send notification PFPush *push = [[PFPush alloc] init]; NSArray *channels = [NSArray arrayWithObjects:@"tamotamago", nil]; [push setChannels:channels]; [push setMessage:@"push test"]; [push sendPushInBackgroundWithBlock:^(BOOL succeeded, NSError *error) { }];12年7月23日月曜日
  47. 47. channel push!! tamotamago3 tamotamago2 tamotamago Broadcast12年7月23日月曜日
  48. 48. おわりに12年7月23日月曜日
  49. 49. Others • Users • https://parse.com/docs/ios/api/Classes/PFUser.html • Geo Points • https://parse.com/docs/ios/api/Classes/PFGeoPoint.html • Facebook Users • https://parse.com/docs/ios/api/Classes/PFFacebookUtils.html • and so on ...12年7月23日月曜日
  50. 50. でもお高いんでしょう?12年7月23日月曜日
  51. 51. 12年7月23日月曜日
  52. 52. enjoy12年7月23日月曜日
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×