前回の記事,
で問題解決の糸口が見えてきたので早速試してみたのですが,いろいろやっぱり問題があります。
このサイトで言ってることは
まずはおさらい。
このサイトで言われていた「プリコンパイルしておいてから使えよ」ということは何か調べてみたところ,
(1) Ruby のコードを書く
厳密には mruby
のコードなんですが,
puts "Hello, world"
こんな感じで書いたコードを sample.rb
として保存しておきます。
(2) mrbc コマンドでコンパイルする
そしてこれがミソ。コマンドラインから mrbc
コマンドで Ruby のコードをコンパイルします。
$> mrbc sample.rb
こうすると sample.mrb
というファイルが出来上がります。これ何かと言うと,
5249 5445 3030 3033 872d 0000 0066 4d41 545a 3030 3030 4952 4550 0000 0048 3030 3030 0000 0040 0001 0004 0000 0000 0004 0080 0006 0100 003d 0080 00a0 0000 004a 0000 0001 0000 0c48 656c 6c6f 2c20 776f 726c 6400 0000 0100 0470 7574 7300 454e 4400 0000 0008
こんな感じの中身です。どーやらこれは中間コードが生成されるようですね。
(3) Objective-C などから実行する
そしてこの sample.mrb
を C/Objective-C から実行します。
つまり
はい。要するに上の (1) 〜 (3) の流れだと (2) の mrbc
でコンパイルを事前にやっておかなくてはならないのですね。iPhone アプリ側に mrbc
などは取り込んでいないのでアプリ上から mrbc
やそれに相当することをやるのは現時点では無理です。詰みました。
別の手段
いろいろ調べていたら,当初やっていた mruby
のビルドだと途中でエラーになるのですが,実際はライブラリの libmruby.a
が生成されてから落ちているので,これ使っちゃえ,という記事を見つけました。試しにやってみたのですが,結局は同じところで落ちますので問題の解決にはならず。
もう少し mruby
を Objective-C 内から動かすには研究が必要そうです。まだまだ続きます。