RubyMotion事始め
はじめに
今まではサーバーサイドの開発が主だったのですが、思い立ってRubyMotionを始めて見ました。
プロジェクトの開始
プロジェクトの開始はmotion create
コマンドで行います。
motion create sample
これで初期のファイルが作成されます。
Create sample
Create sample/.gitignore
Create sample/app/app_delegate.rb
Create sample/Gemfile
Create sample/Rakefile
Create sample/resources/Default-568h@2x.png
Create sample/spec/main_spec.rb
app/app_delegate.rb
class AppDelegate
def application(application, didFinishLaunchingWithOptions:launchOptions)
true
end
end
初めてのビルド
プロジェクトディレクトリに移動してrake
コマンドでビルドしてみます。
cd sample
rake
ビルドされて、自動的にシミュレーターが立ち上がります。
Build ./build/iPhoneSimulator-7.1-Development
Compile ./app/app_delegate.rb
Create ./build/iPhoneSimulator-7.1-Development/sample.app
Link ./build/iPhoneSimulator-7.1-Development/sample.app/sample
Create ./build/iPhoneSimulator-7.1-Development/sample.app/PkgInfo
Create ./build/iPhoneSimulator-7.1-Development/sample.app/Info.plist
Copy ./resources/Default-568h@2x.png
Create ./build/iPhoneSimulator-7.1-Development/sample.dSYM
Simulate ./build/iPhoneSimulator-7.1-Development/sample.app
(main)>
なにもコードを追加していないので、真っ黒なシミュレーターが現れます。
外部ライブラリの利用
RubyMotionは外部のライブラリを用いることも容易です。
CRubyのライブラリをそのまま使えるわけではありませんが、RubyMotion用Gemも豊富に用意されています。
使いたいライブラリをGemfile
に追記します。
今回はProMotionを使用してみます。
Gemfile
source 'https://rubygems.org'
gem 'ProMotion'
Gemfile
に依存関係を記述したらbundle install
コマンドでライブラリをインストールします。
グローバルに入れない場合はbundle install --path vendor/bundle
など、インストールパスを指定しましょう。
Rake
ファイルにbundler
を使う設定がなされていれば、bundle exec rake
としなくともrake
コマンドだけでタスクを実行できます。
Rakefile
# -*- coding: utf-8 -*-
$:.unshift("/Library/RubyMotion/lib")
require 'motion/project/template/ios'
begin
require 'bundler'
Bundler.require
rescue LoadError
end
Motion::Project::App.setup do |app|
# Use `rake config' to see complete project settings.
app.name = 'sample'
end
ProMotionをつかってみる
bundler
でProMotion
をインストールできたので、画面を作ってみます。
app/app_delegate.rb
class AppDelegate < PM::Delegate
def on_load(app, options)
open RootScreen.new(nav_bar: true)
end
end
app/screens/root_screen.rb
class RootScreen < PM::Screen
title "Root Screen"
def on_load
set_nav_bar_button :right, title: "Help", action: :open_help_screen
end
def open_help_screen
open HelpScreen
end
end
app/screens/help_screen.rb
class HelpScreen < PM::TableScreen
title "Table Screen"
def table_data
[{
title: "Help",
cells: [
{ title: "About this app", action: :tapped_about },
{ title: "Log out", action: :log_out }
]
}]
end
def tapped_about(args={})
open AboutScreen
end
def log_out
# Log out!
end
end
これでrake
すれば、画面のあるアプリが立ち上がります。
すこしアプリ開発っぽくなってきましたね。
CocoaPodsの利用
RubyMotionでもCocoaPodsで管理されているライブラリも利用することが可能です。
Gemfile
にmotion-cocoapodsを追加します。
Gemfile
source 'https://rubygems.org'
gem 'ProMotion'
gem 'motion-cocoapods'
Rakefile
の中でapp.pods
ブロックにてCocoaPodsライブラリとの依存関係を記述します。
Rakefile
# -*- coding: utf-8 -*-
$:.unshift("/Library/RubyMotion/lib")
require 'motion/project/template/ios'
begin
require 'bundler'
Bundler.require
rescue LoadError
end
Motion::Project::App.setup do |app|
# Use `rake config' to see complete project settings.
app.name = 'sample'
app.pods do
pod 'AFNetworking'
end
end
rake
タスクにpod:install
が追加されているので、CocoaPods管理ライブラリをインストールできます。
rake pod:install
これでvendor/Pods
以下にインストールされます。
まとめ
gemとCocoaPodsを用いての環境の準備をしてみました。
どちらも外部ライブラリを容易に扱えるので便利ですね。