大富豪家2.0の日記全体に公開

2007年05月30日
14:22
 RubyCocoa
慣れればProcessing並に楽ちんに使えるかも。

require 'osx/cocoa'
include OSX

class HelloView < OSX::NSView
 def drawRect(rect)
  string = NSString.stringWithUTF8String("こんにちは")
  string.drawAtPoint_withAttributes([30,50], nil)
 end
end

if __FILE__ == $0
 application = NSApplication.sharedApplication

 window = NSWindow.alloc.
  objc_send(:initWithContentRect, [200, 200, 150, 100],
       :styleMask, 15, :backing, 2, :defer, 0)

 view = HelloView.alloc.initWithFrame([0, 0, 150, 100])
 window.setContentView(view)

 window.makeKeyAndOrderFront(nil)
 window.orderFrontRegardless()

 trap('SIGINT') { $stderr.puts "bye." ; exit 0 }

 application.run
end
 

コメント    

2007年05月30日
14:32
大富豪家2.0
目標はemacs.rbか?
2007年05月30日
14:57
itojun
試さずごめんなさい。CFNetworkは使えますか?
2007年05月30日
15:31
大富豪家2.0
さぁ...でもRubyのライブラリ使えばいいんじゃないですか。
2007年05月30日
16:36
ぴよまるソフトウェア
楽……なんですか?(汗)
2007年05月30日
19:13
ひろのぶ
なんか15年ぶりぐらいにNS何とかというクラス名を見た気がする。

懐かしい〜
2007年05月31日
00:59
Takachin
RubyCocoaとObjective-C++(Objective-CとC++)を混在させてプログラムを書いてました。http://generative.info/works/2006/ptmail/
OpenGLの速度優先のところはObjective-CとC++で、ネットワーク周りはRubyのTMailをそのまま使う、なんてことをしてました。

「慣れればProcessing並に楽ちん」なのは納得できますが、ふつうのCocoaになれてからでないとなかなかRubyCocoaに翻訳できないのでその学習コスト次第かな、というのが私の感想です。RubyCocoaのサンプルコードが充実していればなぁと。

2007年05月31日
01:23
大富豪家2.0
> Takachinさん
Dじゃなかったんですか。しかしいろいろ詳しいですね〜

Cocoa本のサンプルを全部RubyCocoa化した人がいて勉強になります。
http://pub.cozmixng.org/~the-rwiki/rw-cgi.rb?cmd=view;name=RubyCocoa%A4%C7Cocoa%CB%DC
大したことをしないなら慣れるのは楽かなと。私が一番悩んだのが「日本語文字列を表示する方法」だったんですが、それはこのサンプルに書いてありますし。ファイルとか文字列とかネットワークとかの処理はRuby使えばいいので。
2007年05月31日
01:25
大富豪家2.0
> ぴよまるソフトウェアさん

XcodeもMakefileも要らないので楽ですね。オマジナイはこれぐらいなら我慢します。AppleScriptも強力に使えるそうですよ。
2007年05月31日
02:00
カスミの哲
objc_send()メソッドを使うと、メソッド呼び出しにキーワード分かち書きと引数が使えるのですね。でも、コロンの位置がキーワードの前なのが微妙…。
2007年05月31日
03:50
Takachin
> Cocoa本のサンプルを全部RubyCocoa化
これは知りませんでした!ありがとうございます。日本語文字列は納得です。RubyCocoaを知る前はRubyのchompに相当するものが無い!などの悩みがあって、OgreKitを使っていました。(全然つかいこなせてませんが。。)
http://www8.ocn.ne.jp/%7esonoisa/OgreKit/

最初はD言語だったんですが、D言語からGUIを操作する良いものが無い!ので、一番手軽そうで現実的な案だったのがMacOSXの開発周りでした。(なぜかメディアート系はMacで実装しているケースも多かったというのもありますが)