ITOC 東裕人 専門研究員 インタビュー
2020年08月11日
しまねソフト研究開発センターでは、平成27年から小型IoTデバイス向け組込み開発に最適なプログラミング言語「mruby/c」の開発を、国立大学法人九州工業大学(田中和明 准教授)と共同研究を行っています。東研究員は、このmruby/cの開発や島根県内の企業とのIoTに関する共同研究や相談対応に携わってもらっています。
今回、東専門研究員にインタビューを行い、「mruby/c」とはどのような言語なのか、これからどのようなシチュエーションで「mruby/c」の活用が期待されるかなどについて語ってもらいました。
(インタビュー日:2020年7月31日)
これまでどのような研究開発に取り組んでこられましたか
いくつかありますが、生産機械とネットを接続し、生産情報を自動設定して、生産に関わる情報や製品品質に関わる情報をリアルタイムで収集・分析したりするシステム開発が最も多く関わったものですね。
研究レベルでは、インターネット通信におけるパケット遅延の制御装置や、センサネットワークの1種であるZigbeeの物理層、IEEE802.15.4規格の無線ICとプリント基板上に形成した逆Fアンテナを使って試作したRFモジュールの評価などがあります。
身近なものであれば、RFIDを使った店舗会員証システムや、バス車内の行き先案内用電光掲示などもありますので、私の仕事を見たことがある人も多いかもしれませんね。またRubyが使えそうな業務では、早くからRubyの適用可能性を試していました。その活動の中で得た多くの知見をフレームワークの形にし、「Alone」という名前でオープンソースとして公開しています。
ITOCでは、小型IoTデバイス向け組込み開発に最適なプログラミング言語「mruby/c」を開発していますが、これはどのような言語でしょうか
mruby/c とは、プログラミング言語 Ruby を、組み込みマイコンでも動くように再実装したものです。もともと組み込み向けRubyとして、経済産業省の「地域イノベーション創出研究開発事業」によって、まつもとゆきひろ氏と福岡県の企業、大学とが共同で開発したmrubyがありました。mruby/cは、そのmrubyの実行部分をさらに縮小して、小さなワンチップマイコンでも動作するように実装し直したものです。
これによって、例えば単価数百円程度の小さなマイコン、いわゆるワンチップマイコンを使った開発でも Rubyの開発生産性の高さや保守性の高さといったメリットが得られます。mruby/cは、C言語やAssembler等の低レイヤー言語では煩雑になってしまう処理、特に通信やテキスト処理、ユーザーインターフェースなどの記述性に優れています。
また、小さなマイコンでも実行できるという特性を生かして、電池で動作する機器などにも使われます。例えば、松江市内では河川の水位観測にmruby/cを使いました。このシステムでは、松江市内数カ所に設置した水位計とワンチップマイコンにより、測定異常値の排除やLoRa通信モジュールの制御をmruby/cで行いながら、乾電池で1年以上データを送り続けています。
「mruby/c」はこれからどのようなシチュエーションで活用されていくことを期待されていますか?
組み込みの世界では、多くの場合C言語が使われています。C言語は、機械に近い記述ができるため少ないリソースで動作させることが可能ですが、その分プログラマ(人間)が、機械の都合に合わせて事細かな記述をしてやる必要があります。
もちろんそういった細かな指示が必要なケースもありますが、多くの場合、機械側の都合によらずにもっと上位の概念でプログラミングをした方が効率が上がります。なんでもそうですが、一つの開発にかけられる時間には限りがあります。その限られた時間を有効に使うためには、効率化は欠かせません。
今までC言語やラダー言語などしか使ったことがない人でも、Ruby言語による開発を体験することで、たくさんの得られるものがあるでしょう。もともとRuby言語は、繰り返し開発のしやすさから、アルゴリズム開発にもとても相性が良いとも考えています。
IoTで収集するデータは、ノイズシェービング、異常値判定、特徴点検出などの1次加工を行ってから通信に乗せる場合も多く、その最適なアルゴリズムはデータの性質によって変わってきます。より少ないデータにすることや検出の正確性がアプリケーションの性能や運用コストを左右することも多く、ビジネスの成功に大きく関わってきます。
島根県内のIT企業の皆様へメッセージをお願いします
プログラミングの世界は、オープンソースの台頭やライブラリの充実などで、より身近なものになりました。
一方IoTと呼ばれる新しい概念は、パソコンやサーバーアプリケーションだけではできない、さまざまなモノを相手にした世界です。それは、データや状況を収集する「入力」は言うに及ばず、モーターやアクチュエータ、音、光などを使った「出力」もでき、従来のモニターとキーボードに閉じこもっていた仮想世界からより大きな現実世界へと広がります。
より多くの人がmruby/cによって簡単にIoTの世界を体験し、あらたな価値の創造の手助けになれれば良いなと考えています。
プロフィール
【専門分野】
- プログラミング (C, C++, Assembler, Ruby, JavaScript)
- データベース (SQL)
- ネットワーク (TCP/IP, センサネットワーク)
- マイコン応用回路
- 計測技術 (電気計測, 物理量計測, 計測管理)
【主な研究実績】
<共同研究>
- 島根大学総合理工学部との共同研究『組込み向けプログラミング言語「mruby/c」に関する調査研究』
https://www.s-itoc.jp/activity/research/mrubyc/mrubyc_collaborative/809 - 島根大学総合理工学部との共同研究『組込み向けプログラミング言語「mruby/c」における調査研究』成果の公開
https://www.s-itoc.jp/activity/research/mrubyc/mrubyc_collaborative/896 - mruby/c室内換気IoTシステム開発の共同研究
https://www.s-itoc.jp/activity/research/mrubyc/mrubyc_collaborative/969
<利用事例>
- 農業分野での利用|水田の水管理システム
https://www.s-itoc.jp/activity/research/mrubyc/mrubyc_usecase/510 - 防災・減災に向けた活用|河川の雨量・水位観測システム
https://www.s-itoc.jp/activity/research/mrubyc/mrubyc_usecase/658 - 老舗酒造にて温度変化を測定するIoTシステムを導入開始
https://www.s-itoc.jp/activity/research/mrubyc/mrubyc_usecase/753
<論文>
- Mruby—rapid IoT software development language
https://ieeexplore.ieee.org/document/8282880 - Concurrent Execution in Scripting Programming Language ‘mruby’
https://link.springer.com/chapter/10.1007%2F978-3-319-95168-3_9 - ダム湖の溶存酸素濃度改善システムの開発
https://www.jstage.jst.go.jp/article/transjsme/83/853/83_17-00147/_article/-char/ja/