mruby/cとは?mrubyとの違いや開発環境の構築の仕方も解説
mruby/cとは
mruby/c(えむるびーすらっしゅしー)とは、Rubyをベースに開発されたプログラミング言語です。2018年にしまねソフト研究開発センターと九州工業大学の共同開発によって誕生した言語で、IoTに使用される組み込みソフトの開発をメインに考えられています。
また、mruby/cでは組み込み機器に対応するためC言語と比較しても実装が容易で、Rubyと比較して100分の1の容量で動作し、さらに大幅な小電力化も実現しています。
mrubyとの違いとは
Rubyをベースにしたmruby/cが誕生するよりも以前に、福岡で「mruby」と呼ばれる組み込み向けの軽量プログラミング言語が生まれました。
mrubyとは、C言語の問題を解決しRubyの特徴を生かすことで、組み込み開発におけるさまざまな課題を解決するために開発されたプログラミング言語です。
また、mruby/cはこのmrubyをさらに小型化した言語となっています。ここではmrubyとの違いについてご紹介しますので、ぜひ参考にしてみてください。
メモリの消費量が少ない
mruby/cとは、mrubyよりもメモリの消費量を少なくしたプログラミング言語です。mrubyと同様にRubyのメリットを受け継ぎながらも、プログラム実行時のメモリ消費量が従来のmrubyよりも少なく済みます。
具体的には、プログラム実行時に必要なメモリ量が、mrubyであれば200kbであるところ、mruby/cであればメモリ量64kbで済みます。
マルチタスク機能をサポート
mruby/cとは、マルチタスク機能をデフォルトでサポートしているプログラミング言語です。マイコンを使用した開発を行う場合、外部デバイスの監視や応答待ちといった非同期処理が多数発生します。
mruby/cの場合はタスク間での共通のクラス定義やグローバル変数空間を参照しており、排他処理が実装できます。さらに、mruby/cでは非同期処理を実装するためのマルチタスク機能を利用することが可能です。
mruby/cの開発環境の構築手順10個
mruby/cを使った開発を行おうと考えている方の中には、開発環境をどのように構築すればいいのかわからないという方もいるでしょう。実際に、mruby/cの開発環境はどのようにして構築すればよいのでしょうか。
ここではmruby/cの開発環境の構築手順10個をご紹介しますので、ぜひ参考にしてみてください。
1:使用するハードウェアを用意
mruby/cの開発環境を構築する場合、まずは使用するハードウェアを用意しましょう。
mruby/cはOS環境として「Windows10」「macOS(10.8以降)」での動作や操作を想定しているため、mruby/cの開発に使用するハードウェアは上記のいずれかがインストールされているハードウェアを用意するようにしましょう。
2:Arduino IDEをインストール
用意したハードウェアにArduino IDEをインストールしましょう。
「https://www.arduino.cc/en/software」から自身の環境に合ったソフトウェアのリンクを探し、クリックします。リンクするとソフトウェアのダウンロード画面に移行し、「JUST DOWNLOAD」をクリックするとダウンロードが始まります。
3:使用するハードウェア用のボードマネージャーをインストール
使用するハードウェア用のボードマネージャーをインストールしましょう。ダウンロード後の手順はOSによって異なりますが、インストールを行って「追加のボードマネージャーのURL」に「https://dl.espressif.com/dl/package_esp32_index.json」を追加する必要があります。
さらに、どちらのOSを使用する場合でもArduino IDEのボードマネージャーから「arduino-esp32」のツールをインストールする必要があります。ボードマネージャーの検索フォームに「ESP32」と入力して、「esp32 by Espressif Systems」のインストールをクリックしましょう。
4:Rubyをインストール
Rubyをインストールしましょう。mruby/cを利用する場合にはmrbcコマンドを使用して、C言語の中間バイトコードに変換する作業が必要となりますが、mrbcコマンドはmrubyによって提供されているため、mrubyのインストールも必要になります。
さらにmrubyのインストールにはRubyが必要となるため、まずはRubyをインストールしましょう。
5:bisonをインストール
Windows10の場合はbisonをインストールしましょう。bisonとはWindows10でmrubyをコンパイルするためのツールです。
「http://downloads.sourceforge.net/gnuwin32/bison-2.4.1-setup.exe」でbisonをダウンロードし、インストーラーの画面の案内に沿って進み、「select Components」では全ての項目にチェックが入っているのを確認して、インストールを行いましょう。
6:bisonのインストール先のパスを通す
bisonのインストール先のパスを通しましょう。bisonを利用するにはパスを通す必要があります。「システムのプロパティ」画面を開き、「詳細設定」タブの「環境変数」をクリックし、環境変数ウィンドウを開きましょう。
さらに「Path」を選択して「編集」をクリックし、開いた「環境変数の編集」ウィンドウの「新規」からbisonをインストールしたパスを「’」でくくった状態で追加し、OKを押しましょう。
7:Rubyinstallerに付属しているgccなどのパスを通す
Rubyinstallerに付属しているgccなどのパスを通しましょう。mrubyをビルドするために必要になります。
bisonと同様に「環境変数」ウィンドウの「Path」変数を選択して「編集」ボタンをクリックし、「C:\Ruby26-x64\msys64\mingw64\bin」を追加しましょう。
8:mrubyを導入
前述のとおりmruby/cを利用するためにはmrubyも必要になるため、mrubyを導入しましょう。「https://github.com/mruby/mruby/archive/2.0.1.zip」からRubyをダウンロードし、Cドライブ直下に配置して解凍しましょう。
さらにコマンドプロンプトで「cd C:\mruby-2.0.1 ruby minirake」を実行し、mrubyをコンパイルします。
9:mrubyのフォルダのパスを通す
mrubyのフォルダのパスを通しましょう。「システムのプロパティ」画面を開き、「詳細設定」タブの「環境変数」をクリックし、環境変数ウィンドウを開きます。
さらに「Path」を選択して「編集」をクリックし、開いた「環境変数の編集」ウィンドウの「新規」から入力項目に「C:\mruby-2.0.1\bin」を追加し、OKを押します。
コマンドプロンプトで「mrbc.exe -v」を入力し、「mruby 2.0.1 (2019-4-4) mrbc.exe: no program file given」と表示されることを確かめましょう。
10:Arduinoにmruby/cを導入
Arduinoにmruby/cを導入しましょう。Arduino環境でmruby/cを動かすためには、いくつかの手順を踏んでmruby/cをポーテイング(移植)する必要があります。
ここではArduinoにmruby/cを導入する手順をご紹介します。
mruby/cリポジトリを取得
mruby/cのリポジトリを取得しましょう。GitHubの「https://github.com/mrubyc/mrubyc」に置いてあるmruby/cのソースコードを取得します。
Arduinoのライブラリを作成
Arduinoのライブラリを作成しましょう。例えばMacの場合、「~/Documents/Arduino/libraries/」というようなディレクトリの下に「libmrubycForWioLTEArduino」というディレクトリを用意し、以下に「 library.properties」と「src/」を配置します。
「library.properties」はArduinoのライブラリの設定ファイルとなっているため、Arduino IDEのライブラリとして認識できるように「name」や「version」、「url」などを書き込みましょう。
mruby/cのソースをライブラリにコピー
mruby/cのソースをライブラリにコピーしましょう。GitHubから取得したmruby/cのソースコードから、「src/」配下のファイルを「libmrubycForWioLTEArduino/src」にコピーします。
その際に「hal_○○○」というディレクトリがあるため、「hal_posix/」は「hal/」にリネームし、ほかの「hal_○○○」は削除しましょう。
HALを実装
HALを実装しましょう。「hal.h」にはインライン関数hal_writeとして文字列出力関数が定義されていますが、そのままでは動作しません。
HALを実装する際は、文字列の出力先を開発者が環境に合わせて実装する必要があります。
ボード固有の機能を使うにはC言語との連携が必要
ボード固有の機能を利用する場合、C言語で記述されたAPIをmruby/cから呼び出す必要があります。そのためには「mrbc_define_class()」関数でC言語により定義したクラスを追加し、「mrbc_define_class()」関数でメソッドを追加するといった作業が必要になります。
しまねソフト研究開発センターとは
しまねソフト研究開発センターとは、公益財団法人しまね産業振興財団内に平成27年10月に開設されたITを活用する企業支援や研究開発の拠点です。mruby/cの開発元であり、IT分野での技術発展やオープンイノベーションの加速を目指しています。
mruby/cを使ってIoT開発にトライしてみよう
mruby/cとはRubyをベースに開発された、IoTの組み込みソフト開発向けの言語です。
ぜひこの記事でご紹介したmruby/cの概要やmruby/cの開発環境の構築手順などを参考に、さまざまなIoT開発にmruby/cを活用してみてはいかがでしょうか。
ネプラス株式会社はサービス開始から10年以上
『エンジニアの生涯価値の向上』をミッションに掲げ、
多くのインフラエンジニア・ネットワークエンジニアの就業を支援してきました。
ネプラス株式会社はこんな会社です
秋葉原オフィスにはネプラス株式会社をはじめグループのIT企業が集結!
数多くのエンジニアが集まります。
-
インフラ業界に特化
ネットワーク・サーバー・データベース等、ITインフラ業界に特化。Cisco Systemsプレミアパートナーをはじめ各種ベンダーのパートナー企業です。
業界を知り尽くしているからこそ大手の取引先企業、経験豊富なエンジニアに選ばれています。
-
正社員なのにフリーランスのような働き方
正社員の方でも希望を聞いたうえでプロジェクトをアサインさせていただいており、フリーランスのような働き方が可能。帰社日もありません。
プロジェクト終了後もすぐに次の案件をご紹介させていただきますのでご安心ください。
-
大手直取引の高額案件
案件のほとんどが大手SIerやエンドユーザーからの直取引のためエンジニアの皆様へに高く還元できています。
Ciscoをはじめ、Juniper、Azure、Linux、AWS等インフラに特化した常時300件以上の案件があります。
-
スキルアップ支援
不要なコストを削減し、その分エンジニアの方へのスキルアップ支援(ネットワーク機器貸出、合格時の受験費用支給など)や給与で還元しています。
受験費用例)CCNP,CCIE:6-20万円、JNCIS:3-4万円、AWS:1-3万円など
※業務に関連する一定の資格のみ。各種条件がありますので詳しくは担当者へにお尋ねください。
-
現給与を保証します!※
前職の給与保証しており、昨年度は100%の方が給与アップを実現。収入面の不安がある方でも安心して入社していただけます。
※適用にはインフラエンジニアの業務経験1年以上、等一定の条件がございます。
-
インセンティブ制度
ネットワーク機器の販売・レンタル事業等、売上に貢献いただいた方にはインセンティブをお支払いしています。
取引先企業とエンジニア側、双方にメリットがあり大変好評をいただいています。
-
社会保険・福利厚生
社員の方は、社会保険を完備。健康保険は業界内で最も評価の高い「関東ITソフトウェア健康保険組合」です。
さらに様々なサービスをお得に利用できるベネフィットステーションにも加入いただきます。
-
東証プライム上場企業グループ
ネプラスは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
ネプラス株式会社に興味を持った方へ
ネプラス株式会社では、インフラエンジニアを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
オンライン面接も随時受付中。ぜひお気軽にご応募ください。