Slide 1

Slide 1 text

࣮ફ3VCZ.PUJPO ΞϓϦ։ൃऀͷࢹ఺͔Β !OBPZB@JUP

Slide 2

Slide 2 text

)#'BWX3VCZ.PUJPO

Slide 3

Slide 3 text

ʊਓਓਓਓਓਓਓʊ ʼɹಥવͷ಴࠳ɹʻ ʉY^Y^Y^Y^Y^Yʉ (༁: ୯ʹ్தͰΊΜͲ͘ͳ͚ͬͨͩ)

Slide 4

Slide 4 text

4JHOBMTNFFUT3VCZ.PUJPO

Slide 5

Slide 5 text

3VCZ.PUJPO͸͕͜͜ҧ͏ •  0CKFDUJWF$3VOUJNFͷ্ʹ࣮૷͞Εͨ3VCZ –  ϒϦοδͰ͸ͳ͍ –  ଎͍ –  0CKFDUJWF$ͳ࣮૷ͱ௚઀ϦϯΫͰ͖Δ

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

class  HelloViewController  <  UIViewController      def  viewDidLoad          super            self.view.backgroundColor  =  UIColor.whiteColor            @label  =  UILabel.new          @label.frame  =  [[10,  10,],  [320,  20]]          @label.text    =  "Hello,  World!”            self.view.addSubview(@label)      end   end

Slide 8

Slide 8 text

Α͋͘Δ࣭໰ •  ʮ0CKFDUJWF$Θ͔Βͳͯ͘΋։ൃͰ͖·͔͢ ʯ •  ͸͍ɺେৎ෉Ͱ͢

Slide 9

Slide 9 text

ͨͩ͠ •  ͨͩ͠J04։ൃͷ஌ࣝ͸ඞཁͰ͢ !?

Slide 10

Slide 10 text

$PDPB5PVDIͱ3VCZ.PUJPO •  0CKFDUJWF$͸ݴޠ㱺3VCZ •  J04։ൃ$PDPB5PVDIϑϨʔϜϫʔΫ –  ʮ0CKFDUJWF$Ͱ$PDPB5PVDIͷ"1*ΛݺͿʯ –  㱺ʮ3VCZͰ$PDPB5PVDIͷ"1*ΛݺͿʯ view.backgroundColor  =  UIColor.whiteColor   view.addSubview(@label)   navigationController.pushViewController(c,  animated:true)  

Slide 11

Slide 11 text

3BJMT೴ͰJ1IPOFΞϓϦ͕࡞ΕΔ ͱࢥͬͨ

Slide 12

Slide 12 text

3VCZ.PUJPOͷجຊΫϥε •  0CKFDUJWF$ϥϯλΠϜͷΫϥεʹͳ͍ͬͯΔ –  0CKFDU/40CKFDU (main)>  Object.new   =>  #  

Slide 13

Slide 13 text

Ώ͑ʹ •  ී௨ʹ3VCZͱͯ͠ॻ͚Δ UILabel.new.tap  do  |label|      label.text  =  "Hello,  World!"   end     •  $PDPBͷ"1*͕ݺ΂Δ self.willChangeValueForKey('bookmarks')   ...   self.didChangeValueForKey('bookmarks')  

Slide 14

Slide 14 text

ฒߦॲཧ΋͓खͷ΋ͷ •  (SBOE$FOUSBM%JTQBUDI Dispatch::Queue.concurrent.async  do      image  =  UIImage.alloc.initWithData(          NSData.dataWithContentsOfURL(url.nsurl)      )        Dispatch::Queue.main.sync  do          @imageView.image  =  image      end   end  

Slide 15

Slide 15 text

ϝϞϦ؅ཧ •  3VCZ.PUJPOಠࣗͷϝϞϦ؅ཧ࣮૷ –  OPU"3$ –  OPU3VCZT($ •  ϦϑΝϨϯεΧ΢ϯλํࣜ –  "3$෩ʹࣗಈͰBHFTBHF –  8FBL3FGFSFODF͋Γ 3VCZ.PUJPO͔Β –  ʮ1FSMΈ͍ͨͳ΋ͷͩͱࢥ͑͹ྑ͍ʯʮ͑ͬʯ

Slide 16

Slide 16 text

͸·Βͳ͍3VCZ.PUJPO •  ʮϥΠϑλΠϜ͕௕ͦ͏ͳΦϒδΣΫτ͸Πϯελϯε ม਺ʹೖΕΔɻ͜Ε·Ί஌ࣝͳʯ @model  =  MyModel.new  

Slide 17

Slide 17 text

3VCZ.PUJPOͰ࠷΋େ੾ͳ͜ͱ

Slide 18

Slide 18 text

&NBDTͰॻ͚Δ

Slide 19

Slide 19 text

NPUJPONPEFFM

Slide 20

Slide 20 text

source: www.rubymotion.com

Slide 21

Slide 21 text

3VCZ.PUJPOͱϥΠϒϥϦ

Slide 22

Slide 22 text

wv  =  WebViewController.alloc.init   wv.url  =  'http://example.com'   navigationController.pushViewController(wv,  animated:true)  

Slide 23

Slide 23 text

ͤΊͯɺ Β ͠ ͘ 3VCZ

Slide 24

Slide 24 text

#  Rakefile   require  'rubygems'   require  'sugarcube'   navigationController  <<  WebViewController.new.tap  do  |c|      c.url  =  'http://example.com'   end  

Slide 25

Slide 25 text

3VCZ.PUJPOͱSVCZHFNT •  ௨ৗͷHFN͸࢖͑ͳ͍ –  ίʔυ಺Ͱ͸SFRVJSF͕࢖͑ͳ͍ •  3VCZ.PUJPO༻HFN͕࢖͑Δ –  3BLFpMF಺ͰSFRVJSF͢Δ

Slide 26

Slide 26 text

୅දతͳ΋ͷ •  #VCCMF8SBQ •  4VHBSDVCF •  NPUJPOTVQQPSU •  /BOP4UPSF*O.PUJPO •  (FPNPUJPO •  'PSNPUJPO •  ŋŋŋ

Slide 27

Slide 27 text

#VCCMF8SBQ #  Asynchronous  HTTP   BW::HTTP.get("https://api.github.com/users/mattetti")  do  |response|      p  response.body.to_str   end   #  Timer   timer  =  EM.add_periodic_timer  1.0  do      count  =  count  +  1      (count  <  10)  ||  EM.cancel_timer(timer)   end   #  Observers   include  BW::KVO   observe(@label,  :text)  do  |old_value,  new_value|      ...   end  

Slide 28

Slide 28 text

4VHBSDVCF #  navigationController.pushViewController(c,  animated:true)   navigationController  <<  c   #  self.view.addSubView(@label)   self.view  <<  @label   #  UIButton.buttonWithType(UIButtonTypeRoundedRect)   UIButton.rounded_rect   #  button.addTarget(self,  action:'ButtonDidPush',  forControlEvents:UIControlEventTouchUpInside)   button.on(:touch)  do      ...   end  

Slide 29

Slide 29 text

NPUJPOTVQQPSU #  motion-­‐support/core_ext/time   1.weeks.ago   17.days.from_now   #  motion-­‐support/inflector   "app_delegate".camelize   "thing".pluralize   #  motion-­‐support/core_ext/object   nil.blank?   1.try(:to_s)  

Slide 30

Slide 30 text

/BOP4UPSF*O.PUJPO class  User  <  NanoStore::Model      attribute  :name      attribute  :age      attribute  :created_at      bag  :cars   end     user  =  User.new(:name  =>  "Bob",  :age  =>  16,  :created_at  =>  Time.now)   user.save   users  =  User.find(:name  =>  {  NSFEqualTo  =>  "Ronald"  })        

Slide 31

Slide 31 text

SVCZNPUJPOXSBQQFSTDPN

Slide 32

Slide 32 text

3VCZ.PUJPOͱ0CK$ϥΠϒϥϦ •  ී௨ʹϦϯΫͰ͖Δ

Slide 33

Slide 33 text

NPUJPODPDPBQPET •  $PDPBQPETͷϥΠϒϥϦΛ3VCZ.PUJPOͰ #  Rakefile   Motion::Project::App.setup  do  |app|      app.name  =  'HBFav2'      app.pods  do          pod  'SSPullToRefresh'  #  Cocoapods      end   end   #  in  ViewController   @ptrv  =  SSPullToRefreshView.alloc.initWithScrollView(...)  

Slide 34

Slide 34 text

No content

Slide 35

Slide 35 text

5*14

Slide 36

Slide 36 text

3VCZ.PUJPOͱϏϧυγεςϜ •  ίϯύΠϥपΓ͸ϓϩϓϥΠΤλϦ •  ϏϧυγεςϜपΓ͸044ɺ׌ͭ3VCZ –  HFN͕৭ʑ͋Δͷ͸ͦͷࣀ –  &BTZUP)BDL

Slide 37

Slide 37 text

%BTI

Slide 38

Slide 38 text

#VOEMFS •  SVCZHFNTͷΠϯετʔϧʹ͸#VOEMFS࢖͑Δ %  emacs  Gemfile   %  bundle  -­‐-­‐path=vendor/bundle   %  bundle  exec  rake  

Slide 39

Slide 39 text

σόοά •  HEC͕࢖͑·͢ $  rake  debug=1  no_continue=1   [...]   (gdb)  break  hello_view.rb:10   Breakpoint  4  (hello_view.rb:10)  pending.   (gdb)  continue   Continuing.  

Slide 40

Slide 40 text

ओʹ QSJOUσόοά͚ͩͲͳ

Slide 41

Slide 41 text

ςετ •  3TQFDͰॻ͚Δ͠ɺ͍Ζ͍Ζ͋Δ

Slide 42

Slide 42 text

ςετ ॻ͍ͯͳ͍͚Ͳͳ

Slide 43

Slide 43 text

5SBWJT$*

Slide 44

Slide 44 text

$*͢Δςετ ͳ͍͚Ͳͳ

Slide 45

Slide 45 text

·ͱΊ •  3VCZ.PUJPO͸0CKFDUJWF$3VOUJNFͰ࣮૷͞Εͨ 3VCZ •  σϕϩούʔϑϨϯυϦʔͳπʔϧͰ։ൃͰ͖·͢ •  ϥΠϒϥϦͰ3VCZΒ͘͠ •  0CKFDUJWF$ͷࢿ࢈͕ͦͷ··࢖͑·͢