MacRuby でアプリケーションを作成しようとすると、Mac OS X の API リファレンス を読まなければなりません。API リファレンスを読む上で、Objective-C を MacRuby の規則に置き換えて読む必要があります。
文字列の表現
Objective-C では文字列のリテラル表現として @""
を使います。Ruby では、単に ""
で表現できます。
- Objective-C
1
|
|
- MacRuby
1
|
|
メソッドの呼び出し方
Objective-C ではメソッドの呼び出しを [レシーバ メソッド]
という形式で記述します。また、引数の区切りに ,
は無く、単にスペースで区切ります。
- Objective-C
1 2 3 |
|
- MacRuby
1 2 3 |
|
以下のような手順で Objective-C を MacRuby の文法に置き換えます。
[レシーバ メソッド]
の[]
を消す- 1 つ目の引数の前にある
:
を(
に置き換える - 引数の区切りに
,
を使う ;
を)
で置き換える
encoding:
や error:
はキーワード引数を表していて、コロンの手前(encoding
) までをキーワードと呼ばれます。(Ruby 2.0 で同様の文法がサポートされるようです。)
メソッドの宣言
- Objective-C
1 2 |
|
- 一文字目の
-
はインスタンスメソッドであることを表しています。+
の場合はクラスメソッドを表しています。 (id)
はメソッドの返り値の型情報を表しています。(NSString *)
と(NSInteger)
は引数の型情報を表しています。MacRuby
1 2 |
|
-
とメソッドの返り値の型情報をdef
で置き換える- 引数の型情報を削除する
- 1 つ目の引数の前にある
:
を(
に置き換える - 引数の区切りに
,
を使う
という手順を踏むと、ほぼ MacRuby の文法になるかと思います。
Apple が提供している API リファレンスに MacRuby / RubyMotion の記述方法を表示する
Qiita に投稿していたのですが、こちらにも記載します。
Apple が提供している API リファレンスはとても充実していますが、説明されている API は Objective-C による構文ととなっています。
そこで、macruby-docs-js というユーザスクリプトをブラウザにインストールします。インストール後に API リファレンスを閲覧すると、MacRuby / RubyMotion で記述するとどうなるかが表示されるようになります。
- Google Chrome で macruby-docs.user.js をクリックしインストールします。(Firefox の場合には、Greasemonkey などをあらかじめインストールしておけば良いのかと思います)
- NSString Class Reference などの API リファレンスをブラウザで閲覧します。下の図のように、各 API の Objective-C の構文の下に MacRuby / RubyMotion での記述方法が表示されるようになります。(C Blocks を利用する API の表示がおかしいような感じではありましたが。)