Ruby で iOS アプリを開発できる Ruby Motion を使ってアプリを作り始めているのですが、Objective C で開発していたときと比べて楽過ぎてヤバいです。
Ruby Motion だけでも充分楽になるのですが、さらに BubbleWrap というラッパーと一緒に使うと、コードがとってもシンプルになって楽しい。
どんなにコードがシンプルになるかをデモするために、API にアクセスし、取得した JSON をパースする、という良くあるパターンを含んだサンプルアプリを作ってみました。
World Countries API にアクセスし、取得した JSON から国名のリストを作成し、画面をタップするごとにランダムに国名を表示します。
このサンプルを動かすには、
gem install bubble-wrap
で BubbleWrap をインストールしたあと、Rakefile に
require 'bubble-wrap'
を追加する必要があります。
アプリのソースコードは GitHub に置きました。
» champierre/RubyMotionSamples/Countries
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class AppDelegate | |
def application(application, didFinishLaunchingWithOptions:launchOptions) | |
@window = UIWindow.alloc.initWithFrame(UIScreen.mainScreen.bounds) | |
@window.backgroundColor = UIColor.whiteColor | |
label = UILabel.alloc.initWithFrame @window.frame | |
label.textAlignment = UITextAlignmentCenter | |
label.text = "Tap!" | |
BubbleWrap::HTTP.get("http://www.geognos.com/api/en/countries/info/all.json") do |response| | |
if response.ok? | |
json = BubbleWrap::JSON.parse(response.body.to_str) | |
@countries = json["Results"].values.map{|info| info["Name"]} | |
end | |
end | |
label.whenTapped do | |
label.text = @countries.sample | |
end | |
@window.addSubview(label) | |
@window.makeKeyAndVisible | |
true | |
end | |
end |
2012/06/15 18:53:48