虚無庵

徒然なるままに

mruby x IoT ビジネスフォーラム 2018 に行ってきた

 人生二度目の Matz を見に行った。

 

参加の動機

  • Fukuoka.rb で id:udzura さんから「mruby やりましょう!」と言われてから mruby が気になっている
  • IoT って実際ビジネスだとどうなの?

この二点が気になったので参加してきた。

セッションの感想

全セッション聞いてきた。感想の情報量が違うのは俺の興味・関心度に比例していると思ってもらいたい。あと mruby の知識も組み込み開発の知識も乏しいので、間違いが多分に含まれている可能性は大いにある。ツッコミをお待ちしております。

軽量 Ruby の現状、未来

Matz の基調講演。プレゼンツールは Rabbit です

f:id:jinroq:20180907124650j:plain

mruby 誕生までの経緯

www.meti.go.jp

この公募に採択されたのがきっかけ。基本的に OSS は「義務」というものが発生しないが、採択されたことにより 2 年で成果を出さなければいけなかった。そのため mruby 開発のモチベーションが上がった。

モチベーションは高いけど、問題は山積み。

  • ソフトウェアが複雑化
    →ソフトウェアには物理的な限界が存在しないため、機械はいいかもしれないが人間が追いつけない
  • ソフトウェア生産性
    → 100 万行のソースコードを書くのは大変
  • 組み込み開発の特殊性
    →メモリーなどハードウェアのリソースに余裕がない

また、Ruby(CRuby)の問題点として以下のようなものがある。

  • Ruby が主(C 言語が従)
  • 組み込みに不向き(システムの一部になるという開発に不向き)
  • API 不足
  • リアルタイム性
    Ruby の動きはメモリーなどのリソースが潤沢
    → 組み込みではリソースが足りない
  • ソフトリアルタイム
    YARV があるので不向き
  • 機能が多すぎる

そこで

  • Ruby を従とし
  • 組み込み向けの
  • 組み込み API を用意した
  • ソフトリアルタイムを採用
  • 足りない機能はモジュール化

することで出来るのではなかろうか。

そんなわけで 2012 年に mruby 爆誕

未来を見据えて

2010 年の時点で 2015 年の世界を考えていた。

  • CPU の性能は上がるだろう
  • モリー容量は増えるだろう
  • バッテリー容量は増えるだろう

実際の 2015 年はこんな感じ。

  • CPU の性能 → それなり
  • モリー容量 → 思ったほど伸びてない
  • バッテリー容量 → 伸びていない

また「メモリー容量が増える = 消費電力が増える」ということは知らなかった。2015 年では mruby が活躍できそうな土壌がまだ出来ていなかったと思える。

ただ 2018 年現在、ようやく時代が追いついてきたと思える。

mruby の活躍の場

2018 年現在、ハイエンドマイコンが出てくるようになった(小さなマイコンは今でもある)。背景には IoT がある。

  • エッジコンピューティング
    → mruby の活躍の余地あり
  • Maker ムーブメント
    → 個人が趣味でプログラミングすることは珍しいことではなくなった
  • プロトタイプ
    → production では mruby を採用しなくとも、プロトタイプなら mruby の活躍の余地あり
  • 余裕のある組み込み(リソース的に余裕のあるジャンル)
    → mruby の活躍の余地あり

また、Ruby 全体で考えるとレイヤーは以下のようになる。

嬉しい誤算としては「アプリケーションの組み込み」というものが出てきた

  • haconiwa*2
  • mitamae*3
  • ゲームに組み込む*4
mruby 2.0 リリース
  • 今年の 11 月頃を予定(遅れる可能性はある)
  • キーワード引数
  • Ruby 2.x 対応
  • Ruby 3.x 対応(一部)
  • モリー使用量削減(予定)
  • バイトコード再実装
  • ???の再実装(聞き逃したm(_ _)m)
  • Hash の再実装
  • 移植性の向上

今までよりも広い領域で Ruby を使ってもらえそう。

最後に

M5Stack の紹介とか。パッケージに「MicroPYTHON」なる文字列が見えたり。mruby も動くよ。

手軽に遊べるツール(ハード)が増えてきた。mruby を触る母集団が増える。面白いことが誕生する。

IoT の触媒のような存在になりたい。

マイクロソフトの IoT 最新テクノロジー概要と Ruby・mruby への期待

Azure の話メイン。ほぼ製品紹介。ラスト 5 分くらいでようやく Ruby の話が出てきた。

SDK が全然 Ruby に対応していない」

f:id:jinroq:20180909020443j:plain

知ってます。早く対応してくれると id:matcu とか id:devchick とかが喜びます。

直感型ビジュアルプログラミングプラットフォーム「Springin’」への mruby 実装

www.springin.org

「ビジュアルプログラミング」なるもののサービスの一つ。和製 Scratch?

最初は色々な自社プロダクトのデモ動画を披露。KAGURA はかっこよかったが、段々飽きてきた。EAON のカメラが付いているアレも手がけているらしい。

「楽しい」ということを大事にしたプロダクトばかり。広告も「以下に顧客に体験をさせるか」が大事。

仕事は AI やロボットに取られるのでは?という不安がある。
→別にいいじゃん。むしろ嫌な仕事は AI やロボットにドンドン任せよう
→人間は「楽しむ」という能力がある
→「楽しむ」ためには創造力が大事

創造力(クリエイティブ)って才能なのでは?
→そんなことはない。

PLCA サイクル大事。勝手に作った言葉なのでぐぐっても引っかからない(by 中村社長)。

  • Play(楽しむ)
  • Learn(学ぶ)
  • Create(作る)
  • Approved(承認される)

開発は「とりあえずさっさと作って動かす」をしている。

Springin' は iOS アプリで、「文字も数字も使わずにピタゴラ装置のようなものが出来る」「直感的にオブジェクトを置いて動きを付ける」というもの。

簡易的にできる。でも「もっとこうしたい」というものが(頑張れば出来るけど)出来ずフラストレーションが溜まる。そんな人のためにコードを書かせる機能を付けた。そこで mruby を使っている。ちなみにコードを書ける Springin' はまだ App Store にない。色々と大人の事情がある。

展示用デモを一晩で作ったらしい。Objective-C と mruby らしいが、アプリ内の mruby のコードをどうやって解釈させているのかは未だによく分からん。

軽量 Ruby を活用した世界初のプラットフォームと最新活用事例の紹介

www.slideshare.net

色々紹介してました。

「mruby は軽量である」という説明のために

  • mruby RAM 200KB
  • mruby/c RAM 64KB → 40KB

という数字が出てきたが、これが一体何の数値でどういう理由から「軽量である」と言っているのかさっぱり分からなかった。

Plato2 は OSS 化予定らしい。

トークセッション Question for Matz

Matz に質問のコーナー。メモを取っている/覚えいるものに限り記載。

 

Q:Ruby/mruby の利用者数はどのくらい?

A:OSS は数字に弱い。どのくらいの人が使っているかは分かりにくい。何人かは分からない。

 

Q:Ruby と mruby の利用者の絶対数はどっちが多い?

A:Ruby

 

Q:mruby は組み込み以外でも使われている?

A:H2O, nginx, apache, CDN とか色々使われている

 

Q:Ruby 以外で「いいな」と思う言語は?

A:最近だと Elixir が面白いと思う。Go/Rust/Swift とかも興味あり。新しい言語は調べてみる。他言語のいい所は取り込みたいとは思っている。だが根本が違うので何とも。

 

Q:新しい言語の情報はどこから入手している?

A:Hacker News の Programing Forum から。

 

Q:Ruby/mruby の標準開発環境はあるのか?

A:ない。Rails は RubyMine が多い(ような気がする)。オールドタイプは Vim/Emacs*5。「mruby のデバッガが欲しい」と思った有志が Eclipse plugin を作っていた。多分 VS Code plugin もあったと思う。

 

Q:「Ruby を作るとき」と「Ruby を使って何かを作る」という時のマインドセットはあるのか?

A:最近はテストコードを書くことが多い。mruby の作成は C 言語、RubyRuby で書く。C 言語と Ruby では見た目が違うのでそれでマインドセットは切り替えが出来る。JavaScript (特に TypeScript)が Java に近づいたけど、その人達はどうしてるんだろう?

 

Q:Ruby を作る時に考える自然言語は日本語?

A:日本語が多い

 

Q:全部出しきってから考える?小出し?

A:だいたい全体を俯瞰してから実装。実装していると細かいことに気付く。

 

Q:ゴールは見えている?

A:プログラミング言語を作る時はゴール見えている。でも実現できないこともたまにある。Ruby は使う人はまず自分(Matz)を想定して作っている。自分が気持ちいいが大事。

 

Q:Ruby の Docker 対応は?

A:言語としては Docker 対応はない。サーバーサイドは Mac ユーザーが多い。開発時に Docker で環境を作ってる人が最近増えてきた。開発環境ワンセットの Docker は増えてきた。

 

Q:ビジュアル言語についてどう思う?

A:Scratch は好きじゃない。子どもに対して見せて「以上」で終わる感じ。ビジュアル言語はテキストベースのプログラミングとの差異はそれほどないと思っている。Springin' & Ruby の導入は割とアリだと思っている。

 

Q:ビジュアル言語を作りますか?

A:ビジュアル言語を作ろうというモチベーションはない。ゲームを作る人間ではないので。データ表現のフローとして使われるという未来はあるのでは?

 

Q:今後ビジュアル言語で実装することはあるか?

A:自分の頭はテキストベースでロジックを考えることに最適化されている。ビジュアル言語はとっつきにくい。ボトムアップになりがち。ビジュアル言語はオブジェクトに名前をつけないが、人間の思考(概念)には名前をつける。

 

Q:

 A:クロスコンパイルさえできればコーディングは要らない。gem がリンクさえできればいいのでは?(ドキュメントされていないけど)

 

Q:触媒の意味は何?

A:(聞き逃した、というより疲れて聞いてなかったm(_ _)m)

懇親会とか

f:id:jinroq:20180909015709j:plain

「どこかで見たことある飯だなぁ」とか思ったが、記憶を辿ると弊社はここで社員総会&懇親会やったことあったわ。カレーライスにレーズン入ってたわ。

Matz は大人気で話しかけれず。RubyKaigi と違って特に絡みたい人いないので、声かけてくる人と雑談したくらい。

二次会とか

f:id:jinroq:20180909015933j:plain

懇親会が早々と終わったので、裏のデブサミの懇親会に乗り込んでみようかと思ったが、貸し切りっぽかったので自重した。

最後に

f:id:jinroq:20180909020052j:plain

ポケストップはちゃんと回していたらしい。