2024.12.19
システムの穴を運用でカバーしようとしてミス多発… バグが大量発生、決算が合わない状態から業務効率化を実現するまで
#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.12.12
会議で発言しやすくなる「心理的安全性」を高めるには ファシリテーションがうまい人の3つの条件
2024.12.19
12万通りの「資格の組み合わせ」の中で厳選された60の項目 532の資格を持つ林雄次氏の新刊『資格のかけ算』の見所
2024.12.16
32歳で成績最下位から1年でトップ営業になれた理由 売るテクニックよりも大事な「あり方」
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.12.10
メールのラリー回数でわかる「評価されない人」の特徴 職場での評価を下げる行動5選
2024.12.13
ファシリテーターは「しゃべらないほうがいい」理由 入山章栄氏が語る、心理的安全性の高い場を作るポイント
PR | 2024.12.20
モンスター化したExcelが、ある日突然崩壊 昭和のガス工事会社を生まれ変わらせた、起死回生のノーコード活用術
2024.12.18
「社長以外みんな儲かる給与設計」にした理由 経営者たちが語る、優秀な人材集め・会社を発展させるためのヒント
2024.12.12
今までとこれからで、エンジニアに求められる「スキル」の違い AI時代のエンジニアの未来と生存戦略のカギとは
PR | 2024.11.26
なぜ電話営業はなくならない?その要因は「属人化」 通話内容をデータ化するZoomのクラウドサービス活用術
Climbers Startup JAPAN EXPO 2024 - 秋 -
2024.11.20 - 2024.11.21
『主体的なキャリア形成』を考える~資格のかけ算について〜
2024.12.07 - 2024.12.07
Startup CTO of the year 2024
2024.11.19 - 2024.11.19
社員の力を引き出す経営戦略〜ひとり一人が自ら成長する組織づくり〜
2024.11.20 - 2024.11.20
「確率思考」で未来を見通す 事業を成功に導く意思決定 ~エビデンス・ベースド・マーケティング思考の調査分析で事業に有効な予測手法とは~
2024.11.05 - 2024.11.05