Upgrade to Pro — share decks privately, control downloads, hide ads and more …

MBaaS で巨人の肩に乗る #awscasual

Naoya Ito
November 01, 2013

MBaaS で巨人の肩に乗る #awscasual

Naoya Ito

November 01, 2013
Tweet

More Decks by Naoya Ito

Other Decks in Technology

Transcript

  1. ࣗݾ঺հ •  ޷͖ͳήʔϜ –  θϊϒϨΠυ –  ελʔΫϥϑτ •  ࠓ΍͍ͬͯΔήʔϜ – 

    '' –  Ϟϯελʔϋϯλʔ –  %BSL4PVMT8JOEPXT൛ •  ࠓޙͷ༧ఆ –  (0%&"5&3 –  υϥΰϯΫΤετ຾ΕΔ༐ऀͱڹ͖ͷໍ༑ –  %BSL4PVMT**
  2. 1BSTF3&45"1* curl  -­‐X  POST  \      -­‐H  "X-­‐Parse-­‐Application-­‐Id:  "..."

     \      -­‐H  "X-­‐Parse-­‐REST-­‐API-­‐Key:  "..."  \      -­‐H  "Content-­‐Type:  application/json"  \      -­‐d  '{                  "data":  {                      "where":  {  "owner":  "naoya"  }                      "alert":  "Hello,  World!"                  }              }'  \      https://api.parse.com/1/push     ϓογϡ௨஌ʹ·ͭΘΔ໘౗ͳՕॴ͸Ϋϥ΢υଆͰ΍ͬͯ͘ ΕΔ ྫ"1/αʔόͱͷ઀ଓҡ࣋ 
  3. .#BB4ͷఏڙ͢Δ΋ͷ •  Ϣʔβొ࿥ɾ؅ཧɾೝূ •  ϝοηʔδϯά ϓογϡ௨஌  •  Ϋϥ΢υετϨʔδ – 

    ϑΝΠϧετϨʔδ –  ΦϒδΣΫτετϨʔδ •  Ϋϥ΢υ্Ͱͷܭࢉॲཧ •  ՝ۚ *O"QQ1VSDITF  •  ར༻෼ੳ •  Ґஔ৘ใɺιʔγϟϧͳͲͷίϯςΩετ
  4. ͜ͷ͋ͨΓ͕ఆ൪ •  Ϣʔβొ࿥ɾ؅ཧɾೝূ •  ϝοηʔδϯά ϓογϡ௨஌  •  Ϋϥ΢υετϨʔδ • 

    Ϋϥ΢υ্Ͱͷܭࢉॲཧ •  ՝ۚ *O"QQ1VSDITF  •  ར༻෼ੳ •  Ґஔ৘ใɺιʔγϟϧͳͲͷίϯςΩετ
  5. ྫ1BSTF4%,ͰετϨʔδ #  RubyMotion   query  =  PFQuery.queryWithClassName("User")   query.whereKey("screenname",  equalTo:"ito")

      query.limit  =  10   query.findObjectsInBackgroundWithBlock(      lambda  do  |objects,  error|          if  not  error              objects.each  do  |user|                  puts  user["name"]              end          end      end   )
  6. ྫ1BSTFͰ3&45"1* curl  -­‐X  POST  \      -­‐H  "X-­‐Parse-­‐Application-­‐Id:  "..."

     \      -­‐H  "X-­‐Parse-­‐REST-­‐API-­‐Key:  "..."  \      -­‐H  "Content-­‐Type:  application/json"  \      -­‐d  '{                  "data":  {                      "where":  {  "owner":  "naoya"  }                      "alert":  "Hello,  World!"                  }              }'  \      https://api.parse.com/1/push    
  7. 1BSTFͳΒ user  =  PFUser.user   user.username  =  "naoya"   user.password

     =  "******"   user.email  =  [email protected]   user.signUpInBackgroundWithBlock(      lambda  do  |succeeded,  error  |          if  !error              puts  "success"          end      end   )  
  8. 5XJUUFSϩάΠϯ͍ͤͨ͞ PFTwitterUtils.logInWithBlock(      lambda  do  |user,  error|    

         if  !user              NSLog("キャンセル")              return          elsif  user.isNew              NSLog("Twitterアカウントで初めてログイン")          else              NSLog("Twitterアカウントでログイン")          end      end   )  
  9. ϓογϡ௨஌ #  Push  Notification  を有効に   #  ParseのKVS  に  deviceToken

     ó  user_id  のマッピングを保持   PFInstallation.currentInstallation.tap  do  |install|      install.setDeviceTokenFromData(deviceToken)      install.setObject(@user_id,  forKey:"owner")      install.saveInBackground   end
  10. 1BSTF3&45"1* #  REST  API  で、push通知を端末に送るよう  Parse  に指令   curl  -­‐X

     POST  \      -­‐H  "X-­‐Parse-­‐Application-­‐Id:  "..."  \      -­‐H  "X-­‐Parse-­‐REST-­‐API-­‐Key:  "..."  \      -­‐H  "Content-­‐Type:  application/json"  \      -­‐d  '{                  "data":  {                      "where":  {  "owner":  "naoya"  }                      "alert":  "Hello,  World!"                  }              }'  \      https://api.parse.com/1/push    
  11. 1BSTFͷ͕͍͍͜͜ •  ந৅౓͕ͪΐ͏Ͳྑ͍ –  ߴ͗ͣ͢ɺ௿͗ͣ͢ –  4%,΍"1*ઃܭ͕σϕϩούͷۤ௧ΛΑ͘෼͔ͬͯΔ  •  1'2VFSZͱଞαʔϏεͱͷ࿈ܞ

    –  42-෩໰͍߹Θ͕ͤεΩʔϚϨε%#ʹՄೳ •  4%,Ͱ΋ɺ3&45"1*Ͱ΋XIFSFMJNJU –  Ϣʔβʔొ࿥ϓογϡ௨஌ొ࿥ʹ෇ਵ͢Δσʔλϕʔε Λશͯ1'2VFSZͰ໰͍߹Θͤ •  εέʔϥϏϦςΟΞϕΠϥϏϦςΟ –  ·ͬͨ͘ؾʹͤͣ࢖͍͑ͯΔ
  12. .#BB4ͷ࣮ࡍ •  Ұ౓׳ΕΔͱපΈ͖ͭʹ •  ͜Ε͚ͩͰશͯͷόοΫΤϯυ͕࿫͑Δ  –  ཁ݅ʹΑΔ΋ɺ͋Δఔ౓ͷن໛Ͱ͸೉ͦ͠͏ –  ผ్*BB41BB4ʹஔ͍ͨΞϓϦέʔγϣϯͱ

    ૊Έ߹Θͤ •  ϨΠςϯγ –  ϞόΠϧΞϓϦέʔγϣϯͰ͸ؾʹͳΒͳ͍͜ͱ ͕ଟ͍ •  εέʔϥϏϦςΟ –  લड़ͷͱ͓Γ
  13. "84ͱ.#BB4ͷରൺ Ϋϥ΢υετϨʔδ •  4 •  %ZOBNP%# •  3%4  Ϣʔβʔೝূ

    •  -PHJOXJUI"NB[PO ඇ"84  •  "NB[PO*". ˞  ϓογϡ௨஌ "NB[PO4/4.PCJMF1VTI Ϋϥ΢υܭࢉ •  &MBTUJD.BQ3FEVDF •  3FETIJGU ΞφϦςΟΫεɺҐஔ৘ใɺ՝ۚͳͲ ͷ෇Ճػೳ ˞*".ͷιʔγϟϧαʔϏεೝূ (PPHMF'BDFCPPL Ͱ"84֤αʔϏεͷ"$-ઃఆ͕Մೳ "84 4FDVSJUZ5PLFO4FSWJDF *".3PMFͰ࣮ݱ͞ΕΔ 
  14. 044#BB4 •  )FMJPT –  1BSTFͷϞσϧʹ͍ۙ •  J044%, •  3VCZͰॻ͔ΕͨόοΫΤϯυαʔϏε • 

    -PPQ#BDL –  4USPOH/PEF –  ྑͦ͞͏ɺͰ΋Α͘Έͯͳ͍͔ΒΘ͔Γ·ͤΜ •  %FQMPZE –  .#BB4ͱ͍͏ΑΓ#BB4 ˞  –  "1*όοΫΤϯυ ϞόΠϧʹ΋࢖͑Δ  ˞'JSFCBTFͱ͔ʹ͍ۙͷ͔΋
  15. $  helios  new  app   %  cd  app   %

     tree   .   ├──  Gemfile   ├──  Procfile   ├──  README.md   └──  config.ru #  config.ru   require  'bundler'   Bundler.require     app  =  Helios::Application.new  {      service  :data,  model:  Dir['*.xcdatamodel*'].first  if   Dir['*.xcdatamodel*'].any?      service  :push_notification      service  :in_app_purchase      service  :passbook   }     run  app
  16. %  helios  server     #  or     %

     git  push  heroku  master  
  17. #  プッシュ通知の登録  (iOS側):  Orbiter  というiOSライブラリを使う   url  =  NSURL.URLWithString(  

       "http://***.herokuapp.com/push_notification"   )   orbiter  =  Orbiter.alloc.initWithBaseURL(url,  credential:nil)   orbiter.registerDeviceToken(deviceToken,        success:  lambda  {            |responseObject|    NSLog("Registration  Success")  },      failure:  lambda  {  |error|  NSLog("Error:  %@",  error)  }   ) #  REST  API  で  helios  server  にプッシュ通知を依頼   curl  -­‐X  POST  -­‐d  'payload={"aps"  :  {"alert":"Hello,  Helios!!"}}'   http://***.herokuapp.com/push_notification/message  
  18. ·ͱΊ •  .#BB4ศརͰ͢ –  1BSTF,JOWFZ͋ͨΓ͕ਓؾɺ͔ͭయܕతͳ ϞσϧέʔεͬΆ͍ –  ͚ͲɺϩοΫΠϯ͞Ε·͢ •  "84͸෦඼ɺ.#BB4͸αʔϏε

    –  ϩοΫΠϯΛආ͚Δʹ͸"84Λ૊Έ߹Θ࣮ͤͯ ૷͢Δํ͕͍͍ •  044.#BB4 –  ੝Γ্͕͖ͬͯͯΔͷ͔ɺͲ͏ͳͷ͔ –  ·༷ͩࢠݟɺͱ͍͏ͱ͜Ζ