ひ日誌
2007-10-28 ( ja -> en )
_ [macosx][ruby][cocoa][rubycocoa] LeopardでのRubyCocoaアプリ作成手順を動画にしてみた
Leopardで、ボタンをクリックするとテキストフィールドに入力したテキストを読み上げるだけの単純なRubyCocoaアプリケーションを作る様子を動画にしてみました。あまりにぼけぼけでわかりにくいので公開はなしにしようかと思ったけど、せっかく作ったので字幕だけつけて公開します*1。
おおよその流れは以下の通り。
- プロジェクトを作る
- コントローラの実装 (ボタンが押されたら標準出力にテキストをプリント)
- InterfaceBuilderでビューを編集
- 実行して確認
- ボタンが押されたらテキストを読み上げる機能を機能を実装
- 実行して確認
最初のコントローラ(テキストを標準出力にプリント)のソース:
# SpeechController.rb
class SpeechController < OSX::NSObject
include OSX
ib_outlet :textField
ib_action :speech do
puts @textField.stringValue
end
end
読み上げ機能を実装したSpeechController.rbのソース:
class SpeechController < OSX::NSObject
include OSX
ib_outlet :textField
ib_action :speech do
speech_string @textField.stringValue
end
def speech_string(str)
voice = NSSpeechSynthesizer.defaultVoice
synth = NSSpeechSynthesizer.alloc.initWithVoice(voice)
synth.startSpeakingString(str)
end
end
_ [macosx][ruby][cocoa][rubycocoa] Xcode 3.0 と InterfaceBuilder 3.0 の連係が素晴らしい
何が素晴らしいか。Xcode上でRubyで書いたコントローラのプログラムを更新(保存)すると、InterfaceBuilderでコントローラのクラスが選択できるように自動的に反映されます。コントローラプログラムに書いたアウトレットやアクションも自動的に反映されます。上の動画ではこのあたりを見せているつもりです(ぼけぼけでわかりにくいけど)。
逆に、InterfaceBuilderで追加したアウトレット・アクションを、Xcode上のRubyファイル編集ウィンドウにドラッグドロップすることもできます。また、IBで作ったコントローラからRubyプログラムを生成することもできるようになっています(これはまだ改善の余地がある感じ、RubyCocoa.frameworkの中にあるrb_nibtool.rbに改善の余地あり)。
基本的には、Xcodeでソースを編集してから、InterfaceBuilderで接続したりするという流れの方が使い勝手が良さそうです。
_ [macosx][ruby][cocoa][rubycooca][rails] 近況
Loepardとtypoしまくってます。ForeFrontという会社でRailsアプリを開発したりしてます。それから、MOSA Software Meeting 2007 で、RubyCocoaを中心にLeopardのRuby環境について話したりデモしたりすることになっています。
_ [ruby][cocoa][rubycocoa][macosx] RubyCocoa 1.0 とは
RubyCocoa 0.12 (Leopardに入っている)のことです。ひとりひとり名前をあげることはできませんがいろんな形でサポートしていただいた皆様どうもありがとう。
*1 最初、初音ミクに解説をお願いしてみたのだけどちょっと難しくて断念。歌は上手に歌ってくれますがナレーションは苦手なよう
MacOS X v10.5 Leopard
Nice screencast :)
I think it's out of focus too much ;)
Cool video! I reshot this in English and with the important parts zoomed in, if anyone's interested.
kutuma.blogspot.com/2008/08/hello-world-in-cocoa-ruby.html