理想未来ってなんやねん

娘可愛い。お父さん頑張る。

RubyでCocoa

Leopardでは、RubyCocoaによりRubyからObjective-Cへのブリッジをサポートするようになった。
つまりRubyCocoaアプリケーションが書けるようになっている。

試しに『Cocoaはやっぱり!―MacOS Xプログラミング入門』の第3章 LengthConverterをRubyで書いてみた。
上がRubyのコード、下がObjective-Cのコード、
見て分かるけど、Rubyにするとコード量がかなり減る。
結構いいかもしれない。

# Ruby
require 'osx/cocoa'

class LengthConverter < OSX::NSObject
    ib_outlets :lengthCm, :lengthInch

    ib_action :convert do |sender|
        fInch = @lengthInch.floatValue
        @lengthCm.setFloatValue fInch * 2.54
    end
end
// Objective-C
// p69 LengthConvert.h
#import <Cocoa/Cocoa.h>

@interface LengthConverter : NSObject
{
    IBOutlet id lengthCm;
    IBOutlet id lengthInch;
}
- (IBAction) convert : (id) sender;
@end

// p73 LengthConvert.m
#import "LengthConverter.h"

@implementation LengthConverter
- (IBAction) convert : (id) sebder {
    float fInch = [ lengthInch floatValue ];
    [ lengthCm setFloatValue fInch * 2.54 ]; 
}
@end

Cocoaはやっぱり!―MacOS Xプログラミング入門

Cocoaはやっぱり!―MacOS Xプログラミング入門