ã¯ããã!Ruby(Motion)ã§iOSã¢ããªéçº
ã¤ãã«ãã®æ¥ããã¾ããããããiPhoneã»iPadã¢ããª(iOSã¢ããª)ãRubyã§éçºã§ããããã«ãªã£ãã®ã§ãã
ãã£ããããã£ããã«ãã£ã¦ã¿ã¾ãããã
[STEP1] RubyMotionã®ã¤ã³ã¹ãã¼ã«
iOSã¢ããªãRubyã§éçºããã«ã¯ RubyMotion ãå¿
è¦ã§ãã Write cross-platform native apps in Ruby | RubyMotion ããè³¼å
¥ãã¾ãã(å®ã¯ç¡æã§ã¯ãªãã®ã§ãããã)
RubyMotionã¯ãã®MacRubyã®éçºè
ã® Laurent Sansonetti ããã«ã¿ã¤ã ã§éçºãã¦ããã½ããã¦ã§ã¢ã§ããå½¼ã¯ãã§ã«Apple社ããé¢ãã¦ã¨ã¼ãããã§ãããªãã¨ããã¦ããã®ã§ããã
ä»ãªã25%ãªãã®ã»ã¼ã«ããã¦ãã¦æ¥æ¬åã§12,348åã§ãã(æå¾ã®8ã5ã ã£ããããã£ãã®ã«ã)
iOSãããããã¼ããã°ã©ã ã¨åãããã¨ç´2ä¸åã®åºè²»ã§ããããããé«ãã¨èãããé©åã¨èããã¨ãã¯ãã®è¨äºãæå¾ã¾ã§èªãã§ããå¤æãã¦ããããã°ã¨æãã¾ãã(ã ã£ã¦ãä»ã®é¸æè¢ãObjective-Cã ããã)
RubyMotionãè³¼å
¥ããã¨ã¤ã³ã¹ãã¼ã©ã®ãã¦ã³ãã¼ãURLã¨ã©ã¤ã»ã³ã¹ãã¼ãæä¾ããã¾ãã
ãã¦ã³ãã¼ãããã¤ã³ã¹ãã¼ã©ãèµ·åãã¦RubyMotionãã¤ã³ã¹ãã¼ã«ãã¾ãã
ã©ã¤ã»ã³ã¹ãã¼ãå
¥åããã¨RubyMotionã®ãã¦ã³ãã¼ããå§ã¾ãã¾ããã¤ã³ã¹ãã¼ã©ã«ã¯RubyMotionèªä½ã¯å«ã¾ãã¦ããããã©ã¤ã»ã³ã¹ãã¼ã§èªè¨¼ãã¦ãããã¦ã³ãã¼ããããä»çµã¿ãªã®ã§ããã
ããã§RubyMotionãã¤ã³ã¹ãã¼ã«ã§ãã¾ããã
念ã®ããã¤ã³ã¹ãã¼ã«ã§ãããã©ãã確èªãã¦ã¿ã¾ããããã¿ã¼ããã«.appãèµ·åãã¦æ¬¡ã®ã³ãã³ããå®è¡ãã¾ãã
$ motion -v (以ä¸ãå®è¡çµæ) 1.3
[STEP2] Xcodeã®ã¤ã³ã¹ãã¼ã«
å½ç¶ãRubyMotionã§iOSã¢ããªãéçºããããã«ã¯iOS SDKãå¿
è¦ã§ãã
iOS SDKã¯Xcodeã«å«ã¾ãã¦ããã®ã§App StoreããXcodeãã¤ã³ã¹ãã¼ã«ãã¾ãã
ã¾ããiOS 5ã®ã·ã¥ãã¬ã¼ã¿ãã¤ã³ã¹ãã¼ã«ãã¾ããXcodeãèµ·åãã¦ã¡ãã¥ã¼[Xcode]-[Preferences...]ãé¸æãã¦ãDownloadsã¿ãã®ComponentsããiOS 5.0 Simulatorãã¤ã³ã¹ãã¼ã«ãã¾ãã
[STEP3] Hello World
ããæºåãã§ãã¾ãããç°¡åãªãµã³ãã«ããã°ã©ã ã¨ãã¦ç»é¢ã«ãHello Worldãã¨ããã¡ãã»ã¼ã¸ãã¤ã¢ãã°ã表示ããã¢ããªã±ã¼ã·ã§ã³ãä½ã£ã¦ã¿ã¾ãããã
ã¿ã¼ããã«.appãèµ·åãã¦æ¬¡ã®ã³ãã³ããå®è¡ãã¦ã¢ããªã±ã¼ã·ã§ã³ã®ã²ãªå½¢ãä½æãã¾ãã
$ motion create Hello (以ä¸ãå®è¡çµæ) Create Hello Create Hello/.gitignore Create Hello/Rakefile Create Hello/app Create Hello/app/app_delegate.rb Create Hello/resources Create Hello/spec Create Hello/spec/main_spec.rb
ç¶ãã¦æ¬¡ã®ã³ãã³ããå®è¡ãã¾ãã(RubyMotionã¯Mac OS Xæ¨æºæ·»ä»ã®Rubyã¤ã³ã¿ããªã¿ã使ãã¾ãã®ã§RVMãªã©ã§ç¬èªã®Rubyå¦çç³»ãã¤ã³ã¹ãã¼ã«ãã¦ããå ´åã¯/usr/bin/rakeã¨ããããã«rakeã³ãã³ãããã«ãã¹ã§æå®ãã¾ã)
$ /usr/bin/rake (以ä¸ãå®è¡çµæ) (in /Users/kouji/work/RubyMotion/Hello) Build ./build/iPhoneSimulator-5.1-Development Compile ./app/app_delegate.rb Create ./build/iPhoneSimulator-5.1-Development/Hello.app Link ./build/iPhoneSimulator-5.1-Development/Hello.app/Hello Create ./build/iPhoneSimulator-5.1-Development/Hello.app/Info.plist Create ./build/iPhoneSimulator-5.1-Development/Hello.app/PkgInfo Create ./build/iPhoneSimulator-5.1-Development/Hello.dSYM Simulate ./build/iPhoneSimulator-5.1-Development/Hello.app (main)>>
ã»ããããåãã¡ãã£ã¦ã¾ãããªã«ãã!!ã£ã¦æãã§ãããã
ãããæå¾ã®è¡ã«ã(main)>> ãã¨è¡¨ç¤ºããã¦ãã¾ããããã«ãä½ãå ¥åãã¦ãã ããã£ã¦æãã§ãããããããããã®å¸æã«çãã¡ããã¾ãããã
(main)>> alert = UIAlertView.new (以ä¸ãå®è¡çµæ) => #<UIAlertView:0x6c6f090> (main)>> alert.message = "Hello World!" (以ä¸ãå®è¡çµæ) => "Hello World!" (main)>> alert.show (以ä¸ãå®è¡çµæ) => #<UIAlertView:0x6c6f090>
ã©ãã§ã?ã¿ãªããã®æ³åéãã¡ãã»ã¼ã¸ãã¤ã¢ãã°ã表示ããã¾ããããã
å½ç¶ã¡ãã»ã¼ã¸ãã¤ã¢ãã°ãæ¶ããã¨ãã§ãã¾ãã
(main)>> alert.hidden = true (以ä¸ãå®è¡çµæ) => true
ãããããã£ã¦æãã§ããããã
åä½ç¢ºèªã¯ãããããã«ãã¦ãä¸æ¦Helloãçµäºããã¾ãã
(main)>> quit
ããã§ã¯ããã°ã©ã ãä½æãã¦ã¿ã¾ãããã
好ããªã¨ãã£ã¿ã§ãã¡ã¤ã«ãHello/app/app_delegate.rbããéãã¾ããããã¦æ¬¡ã®ããã«ä¿®æ£ãã¾ãã
class AppDelegate def application(application, didFinishLaunchingWithOptions:launchOptions) alert = UIAlertView.alloc.initWithTitle("Hello", message: "Hello World!", delegate: nil, cancelButtonTitle: nil, otherButtonTitles: "OK") alert.show true end end
ããã»ã©ã¨åæ§ã«rakeã³ãã³ãã§å®è¡ãã¾ãã
ããã§Helloã¯å®æã§ãã
å®éã®iOSããã¤ã¹ã§è©¦ãã«ã¯iOSãããããããã°ã©ã ã«åå ãã¦ãã次ã®ã³ãã³ããå®è¡ããã¨ã§ããããã§ãã(ãã¿ã¾ãããã¾ã ç§ã試ãã¦ãã¾ãã...)
$ rake device
[STEP4] ãããã
ãããããã§Rubyã§iOSã¢ããªãéçºããç°å¢ãæ´ãã¾ãããããã¨ã¯ãã°ãããã¢ããªãéçºããã ãã§ããRubyã使ã£ã¦ã :-)
https://github.com/HipByte/RubyMotionSamples ã§Helloãå«ãã¦11åã®ãµã³ãã«ããã°ã©ã ãå
¬éããã¦ãã¾ããåèã«ãªãã¢ããªãããã®ãããã§ãããã
ã¾ã¨ã
RubyMotionã使ãã°iOSã¢ããªãRubyã§éçºã§ãã¾ããééãããã¾ããã
ããããªãããiOSã¢ããªéçºã§ã¯GUIãã©ãã ãç°¡åã«ãã¶ã¤ã³ã§ãããã¨ããã®ãéè¦ãªãã¨ã§ããXcodeã®ãããªUIãã¶ã¤ããªãã§ã©ãã¾ã§ã§ããã®ããªã£ã¦æãã§ãã
ã§ãã¾ã ã¾ã çºå£²ãããã°ããã§ããããããããã®RubyMotionã«æå¾
ãã¾ãã
ãªã«ã¯ã¨ããããRubyMotionã¨ãããã°ãããã½ããã¦ã§ã¢ãæä¾ãã¦ããã HipByte ã«æè¬ãã¾ãã