PR

F-Rubyが入居している福岡県の庁舎
F-Rubyが入居している福岡県の庁舎
[画像のクリックで拡大表示]

先日、福岡県博多のF-Ruby(福岡Rubyビジネス拠点推進会議)の拠点にお邪魔したのですが、その拠点内の通称「まつもとゆきひろ研究室」には、産業用のアーム・ロボットが置いてありますね。同ロボットは、VxWorksで動かしているとお聞きしました。割り込み周りは、C言語で記述してあるということでしょうか。

 あれはVxWorksのタスクとしてmruby(のVM)が2~3個、動いているという形だったかと思います。割り込みは(mrubyとは)別のタスクで扱っていたかと。mruby自身はそれを受け取り、ロボットに与える命令をキューに入れる処理をしていたかと思います。

F-Rubyの「まつもとゆきひろ研究室」に置いてある産業用ロボット
F-Rubyの「まつもとゆきひろ研究室」に置いてある産業用ロボット
[画像のクリックで拡大表示]

 仮に私が割り込みを必要とするコードを書くとすれば、割り込み部分はやはりC言語なりアセンブラなりで書くと思うんですよ。そこを無理してRubyで書く必要もないかなと。

 CRubyの場合ですと、アプリ全体をRubyで書くというケースがほとんどなので、「割り込み部分についてもRubyで」という発想は不自然ではありませんが、mrubyの場合、C言語などで書いたアプリ全体の中で、ごく一部の部分をRubyに下請けに出しますよ、という使い方です。ですので、割り込みが入ってきたら、それはアプリ本体のC言語(プログラム)の中で処理すればいいことかと思っています。

もともとmrubyは、C言語の本体プログラムにリンクさせて使うものなのだから、割り込みを扱いたければ本体のC言語側で処理すればいいと。

F-Rubyにある「まつもとゆきひろ研究室」
F-Rubyにある「まつもとゆきひろ研究室」
[画像のクリックで拡大表示]

 そうです。それを本当にRubyでやる必要があるのかというのが今の認識でして、重要度は低いと思います。

 ソフトウエア開発の生産性の観点からいうと、できるだけたくさんの部分をRubyで書ければ嬉しいのは確かです。(mruby上で)できることは増やしていった方がいいとは思います。

 ただ、mrubyの導入で本当に一番有効な部分というのは、ソフトウエアのアルゴリズムの複雑な部分、さまざまなデータ構造を使っている複雑な部分。これらをRubyで書くと、C/C++言語で書くより楽になりますよ、というのがmrubyの原点だと思います。それ以外の部分は幸い本体アプリがあるはずなので、「そっちでやって下さいよ」ということになるのではないかと、今は思っています。

 将来的に割り込みに対応するにしても、μITRON、VxWorks、Linuxなり、割り込みに要求されるものは異なりますから、OSごとに個別の対応になるかと思います。「割り込みに共通のものは何ぞや」ということになると、なかなか結論は出ないと思いますので。