2024.10.10
将来は卵1パックの価格が2倍に? 多くの日本人が知らない世界の新潮流、「動物福祉」とは
#23 mruby/c (全1記事)
リンクをコピー
記事をブックマーク
まつもとゆきひろ氏:こんにちは、まつもとゆきひろです。Matzチャンネル、23回目ですね。今日は、前回予告した「mruby Kaigi」のパネルの話をする前に、mruby/c、「エムルビーシー」って発音しています……の紹介を先にしておこうと思います。
Rubyの派生で、別実装であるmrubyなんですが、さらに派生として、mruby/cというのが存在しています。
背景としては、軽量Rubyとして始まったmrubyなんですけれども、2010年の時点で、5年後のマイクロコントローラのCPUパワーとメモリは、Rubyを実行するのに十分なだけのパワーと容量を持っているという予想をしていたんですね。2010年から数えて5年後なので、2015年にはそんな感じになっていると思っていたんです。
2年かけてmrubyを開発して、オープンソースソフトウェアとしてリリースしてしばらく経って、思ったよりマイクロコントローラの進歩が遅いなということに気づいたんですね(笑)。
私は、組み込み出身じゃないのであまり気づいておらず、すごく恥ずかしい話ではあるんですが、メモリって当然ですが電力を食うんですよね。マイクロコントローラの、特に電池で動く系のマイクロコントローラにおいて、この電力消費量の増加は無視できないものでし。
そのせいもあって、特に小さめのマイクロコントローラがなかなか駆逐されないというか……もちろん、「Raspberry Pi」とか、あるいは、ちょっと大きめのマイクロコントローラで、何百キロとか、1メガとか、メモリを積んだのもあるのはあるんですが。
どうしてもそっちは値段も高いので、ホビー系になりがちで、なかなか仕事で使われるようなマイクロコントローラにmrubyが載ることにならないという話になってくるんですね。
どうがんばってもメモリ16キロの、しかもOSも積んでいないマイクロコントローラでmrubyのVMを走らすというのはだいぶ無理がある。
そんなことを考えていたんですが、一方で、Rubyそのものを作った人としては、サブセットと言うんですか、「Rubyっぽい見かけはしているんだけど、結局機能が足りなくてね」みたいなものは作りたくないという、矛盾、対立があって、どうしようかなと思っていました。
軽量Rubyの初期から、関わってくださった九州工業大学の田中先生(田中和明准教授)が「じゃあ、私のほうでそのサブセットを作りましょう」と手を挙げてくださって作られたのが、このmruby/cです。
特徴としては、フラッシュ(フラッシュメモリ)があるので、マイクロコントローラでもプログラム容量はだいぶ制限が少ないんですが、もうとにかくRAMが厳しいので、16キロRAMがあればとりあえず動くぐらいのものにしましょうと。その代わり、提供するクラスも少ないですし、機能制限もありますというRubyのVMだけ作ってくださいました。
実際には、mrubyとmruby/cって、バイトコードが共通なんですよね。なので、mrubyのコンパイラでRubyのプログラムをバイトコードに変換して、それをVMに送りつけて実行するかたちになります。もちろん16キロバイトでコンパイラは動かないので、ホスト側でバイトコードにコンパイルするわけですね。
もちろん、存在しないクラスや存在しない機能とかにアクセスした場合には、「その命令はサポートされていません」とか「そのクラスは定義されていません」というエラーになります。
一方、機能も拡張されていて、mruby/cの「c」には、「compact」とか「controller」と同時に、「concurrency」という意味もあって、プログラム自身がモニターとかOSとかに依存しない状態で複数のタスクを実行できる機能がついています。
設定した命令数だけ実行するとコンテキスト切り替えをするタイプのconcurrencyですね。この点については、純粋なmrubyよりも機能が多いということになっています。
そうそう、もう1つ大きな制限があって、mruby/cは、「mrbgems」……gemがないんですよね。なので、自分で関数とかを書けば別ですが、gemというかたちでモジュラーに機能を追加したり取り外したりができないという制限があります。
こうやって登場したmruby/cなんですが、名刺の3分の1ぐらいのサイズしかないようなマイクロコントローラボードで、メモリが16キロとか32キロしかない小さなマイクロコントローラでも動きます。Lチカぐらいなら簡単に作れるという特徴があります。
鋭意改善中で、最初のバージョンではなかったガベージコレクタとか例外処理とかが追加されていて、機能はどんどん豊富になっていっていますが、一方で、メモリ消費量は過去よりもさらに小さくなっていますし、性能も改善しています。
サブセットよりも、mruby/cが1つの選択肢になるケースはけっこう多いんじゃないかなと思っています。
mrubyのほうは、相変わらず文法的にも、機能的にもgemをフルフル盛り込めばほぼフルセットになるというところまで来ています。だから、マイクロコントローラの領域ではmruby/cとか、機能がもっと必要な時にはmrubyとか、そういう住み分けができるといいなと思っています。
あと、ちょっと興味深いのは、mrubyってオープンソースソフトウェアではあるんですけども、開発の初期から福岡県がね、スポンサーになって応援してくださっているんですよ。
一方mruby/cのほうは、わりと初期の時点から、島根県のITOC(しまねソフト研究開発センター)という組織が、スポンサーになっています。mrubyのメインの開発者は私で、mruby/cのメインの開発者は、九州工業大学の田中先生というように、福岡と島根でねじれ現象が起きているのは、非常におもしろいなと思います。
もちろんmrubyを作っているコントリビューターの中には、福岡の人もいますし、mruby/cのほうも、島根の技術者がだいぶ手伝ってくださっているので、完全にねじれているというわけではないんですけれども。
今日はまたちょっと技術的な話になっちゃいましたが、mruby/cについて説明しました。
最近、次回予告がだいぶ狂っているんですが、心積もりとしては、次回は「mruby Kaigi」のパネルで話したmrubyの今後の改善やパーザとか、そういう話をしたいなと思っています。
それでは、最後まで聞いていただいて、ありがとうございました。また今度。じゃあね。
関連タグ:
2024.11.13
週3日働いて年収2,000万稼ぐ元印刷屋のおじさん 好きなことだけして楽に稼ぐ3つのパターン
2024.11.11
自分の「本質的な才能」が見つかる一番簡単な質問 他者から「すごい」と思われても意外と気づかないのが才能
2024.11.13
“退職者が出た時の会社の対応”を従業員は見ている 離職防止策の前に見つめ直したい、部下との向き合い方
2024.11.12
自分の人生にプラスに働く「イライラ」は才能 自分の強みや才能につながる“良いイライラ”を見分けるポイント
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.11.11
気づいたら借金、倒産して身ぐるみを剥がされる経営者 起業に「立派な動機」を求められる恐ろしさ
2024.11.11
「退職代行」を使われた管理職の本音と葛藤 メディアで話題、利用者が右肩上がり…企業が置かれている現状とは
2024.11.18
20名の会社でGoogleの採用を真似するのはもったいない 人手不足の時代における「脱能力主義」のヒント
2024.11.12
先週まで元気だったのに、突然辞める「びっくり退職」 退職代行サービスの影響も?上司と部下の“すれ違い”が起きる原因
2024.11.14
よってたかってハイリスクのビジネスモデルに仕立て上げるステークホルダー 「社会的理由」が求められる時代の起業戦略