RubyMotionとは
- RubyでiOS, OS Xネイティブアプリを作る toolchain
- Cocoaフレームワークの上に薄いラッパをかけてRubyから使えるようにしている、よってRubyでCocoaフレームワークを使うというコーディングになる
- RubyMotionのコンパイラがRubyファイルをアセンブラにし、gccでobjファイルにする、そのためObjective-Cの実装と双方向でやり取りできる
- Objective-Cの資産も活かせる
- ネイティブにリンクされるので実行時にJitでコンパイルする他のこの手のものと比べて実行速度が速い
- エディタは好きなものを選ぶ
- gemはRubyMotion用のgemしか使えない、RubyMotion Wrappersに有名なものがある
- motion-cocoapodsを使えばCocoaPodsの実装も簡単に呼び出せる
ライセンス
- 有償, RubyMotionのサイトから購入可能
- 試してだめったら30日クーリングオフ可能
- 購入したバージョンについては有効期限はない
- 一年間はアップデートを無料で受け取れ、サポートがある
- 一年後からライセンスの半額で更新すると最新版のアップデートやサポートの権利を得られる
開発に必要なもの
- OS X 10.6 以上 (10.7以上推奨)
- RubyMotion
- ライセンスを買うとインストーラがダウンロードでき
/usr/bin/motion
にインストールされる - Xcode (IDE本体というより以下をインストールするために必要)
- iOS SDK や OS X SDK
- Xcode Command Line Tools
- お好きなエディタ
motionコマンド
$ motion -v
2.0
$ motion --help
Usage:
motion [-h, --help]
motion [-v, --version]
motion <command> [<args...>]
Commands:
account Access the software license account
activate Activate the software license
create Create a new project
ri Display API reference
support Create a support ticket
update Update the software
なんとなくmotion create
かmotion update
しか使わない予感。
motion create --help
ってやったら--help
ってプロジェクト作られたので注意。
Hello, World
なんとなくシミュレータ不要なOS Xの方が試すのは楽かなと思ってOS Xでやってみる。
motion create
でプロジェクト作成。
motion create --template=osx Hello
こんな感じの階層。
チュートリアルに沿って app/app_delegate.rb
にAlertを追加してみる。
app_delegate.rb
class AppDelegate
def applicationDidFinishLaunching(notification)
buildMenu
buildWindow
# 追加
alert = NSAlert.new
alert.messageText = 'こんにちは'
alert.runModal
end
def buildWindow
@mainWindow = NSWindow.alloc.initWithContentRect([[240, 180], [480, 360]],
styleMask: NSTitledWindowMask|NSClosableWindowMask|NSMiniaturizableWindowMask|NSResizableWindowMask,
backing: NSBackingStoreBuffered,
defer: false)
@mainWindow.title = NSBundle.mainBundle.infoDictionary['CFBundleName']
@mainWindow.orderFrontRegardless
end
end
rake
で実行。
これは便利だ。あとはサンプルプロジェクトを見ながら勉強していく。
https://github.com/HipByte/RubyMotionSamples