Linux 上に momo-mruby 開発環境を構築する

# はじめに

@GORO_Neko です。毎度の挨拶ではありますが、ご存知の方ご無沙汰してます。初めての方お初にお目にかかります。

いつも通り、まずお断りをば一言。

ボク、仕事では「未だ」一切 mruby 扱っておりません（趣味の時間には、結構弄っておりますが … ）。

以下は、自分が所属する会社の意向を反映したものでもスタンスを示すものでもなく、単なる一個人の趣味の活動から産まれた記述です。

# GR-PEACH ってご存知ですか？

 [mruby](http://forum.mruby.org/doc/mruby-141121135812-conversion-gate01.pdf)「も」動くマイコンボードです。


![gr-peach-full.jpg](http://gadget.renesas.com/ja/product/images/gr-peach-full.jpg)

結構な量のリソースが載っていたり、Lan その他ついていたりと、「 … これで OS が動いたら、お高いラズパ（げふんげふん）」な[代物](http://gadget.renesas.com/ja/product/peach.html)です。

ちょっと前に GR-PEACH で「も」 mruby が動くと聞いて、それ以来あーだのこーだの色々弄りまわしておりました。

mruby を GR-PEACH で比較的容易に動かせるようにする試みは、色々な方がチャレンジされているようです。

ボク自身は、mruby 本山の特定非営利活動法人 [軽量 Ruby フォーラム](http://forum.mruby.org/)で紹介されている [momo-mruby](http://forum.mruby.org/download/index6.html)をメインにあれこれ試している最中です。

この momo-mruby、ソースを見る限り Linux OS 上で動かせられない障壁となりそうなところはどこにもなさそうなのに、軽量 Ruby フォーラムの紹介ページの記述を含め、Windows および Mac でしか動作保障されていないように読めます。

ボクとしては、仕事で使うわけでないシーンで OSS を使う場合、提供元が動作保障しているかどうかはあまり気にならないので、[ソースコード公開リポジトリの README.md](https://github.com/mimaki/momo-mruby)の記述を頼りに、 Intel/ARM 版 Ubuntu 16.04 ベースの我が愛機上に、momo-mruby の開発環境を構築してみました。

# 雑な作業手順

インストール直後の [Ubuntu Ubuntu 16.04.3 LTS](https://www.ubuntu.com/download/desktop) に、momo-mruby 開発環境を構築した際、必要となった作業を以下に列挙します。

1. C 言語開発環境（ gcc 等）のインストール
2. CRuby のインストール
3. GNU Bison のインストール
4. Python 2.7 のインストール
5. Mercurial のインストール
6. GNU ARM Embedded Toolchain のインストール
7. mbed CLI のインストール
8. momo-mruby のソースコード取得／ビルド

1～3 は momo-mruby に同梱ざれた mruby をビルドするための環境作りに必要となり、4～7 は momo-mruby 開発環境の構成に必要となる mbed CLI 導入のために必要となります（…だよな？）。

# C 言語開発環境（ gcc 等）のインストール

以下のコマンドを実行して、Ubuntu OS 上に  C 言語開発環境をインストールします。

## OS の最新化

以下を実行。

    $ sudo apt-get update
    $ sudo apt-get upgrade

## ビルドツールを含む gcc 等の導入

以下を実行。

    $ sudo apt-get -y install git curl g++ make

※ g++ および make は OS インストール時にデフォルトでインストールされているかも…

コマンド実施後、以下を実行し、バージョン表示が出力されることを確認。

    $ gcc -dumpversion         

# CRuby のインストール

apt-get コマンドを利用して導入可能な CRuby は、大変バージョンが古いものになります。

ちょっと手間をかけて、最新の CRuby をインストールします。

## 必須ライブラリ等の導入

以下を順に実行。

    $ sudo apt-get -y install zlib1g-dev libssl-dev libreadline-dev
    $ sudo apt-get -y install libyaml-dev libxml2-dev libxslt-dev
    $ sudo apt-get -y install openssl libssl-dev libbz2-dev libreadline-dev

## rbenv のインストール

以下を順に実行。

    $ cd
    $ git clone git://github.com/sstephenson/rbenv.git .rbenv

~/.profile の末尾に下記を追記

    export PATH="$HOME/.rbenv/bin:$PATH"
    eval "$(rbenv init -)"

追記結果を反映させるため、以下を実行

    $ source ~/.profile

## ruby-build のインストール

以下を順に実行。

    $ mkdir -p ~/.rbenv/plugins
    $ cd ~/.rbenv/plugins
    $ git clone git://github.com/sstephenson/ruby-build.git

## ruby のインストール

以下を順に実行。

    $ rbenv install 2.5.0
    $ rbenv global 2.5.0

## インストール先の確認

CRuby が正常にインストールできたことの確認を兼ねて、rbenv が CRuby をインストールした場所を確認する。

そのため、以下のコマンドを実行。

    $ which ruby

## バージョンの確認

CRuby が正常にインストールできたことの確認を兼ねて以下のコマンドを実行し、期待通りのバージョン表示（今回の例では 2.5.0 ）が出力されることを確認。

    $ ruby --version

## ドキュメントのインストール抑止設定の実施

CRuby 関連のあれこれを gem で導入する際、ドキュメント類のインストールを抑止するため、エディタでホームディレクトリに .gemrc という名前のファイルを次の内容で作成。

    install: --no-ri --no-rdoc
    update: --no-ri --no-rdoc

※ .gemrc の作成と編集は、本作業的には不必要

# GNU Bison のインストール

以下を実行。

    $ sudo apt-get install bison

bison が正常にインストールできたことの確認を兼ねて以下のコマンドを実行し、バージョン表示が出力されることを確認。

    $ bison --version

# Python 2.7 のインストール

Ubuntu Ubuntu 16.04.3 LTS にはデフォルトで Python 3.5 / Python 2.7 がインストールされている。

ただし、後の作業で必要となる開発用パッケージが入っていない。

これを追加インストールする。

    $ sudo apt-get install python3-pip python3-dev
    $ sudo apt-get install python-pip python-dev

※ python3-pip / python3-dev のインストールは、本作業的には不必要

python 2.7 および pip が正常にインストールできたことの確認を兼ねて以下のコマンドをそれそれ実行し、バージョン表示が出力されることを確認。

    $ python --version
    $ pip --version

# Mercurial のインストール

以下を実行し、インストールを実施。

    $ sudo apt-get install mercurial

インストール後、エディタでホームディレクトリに  .hgrc という名前のファイルを次の内容で作成。

    [ui]
    username = ユーザ名 <メールアドレス>

Mercurial が正常にインストールできたことの確認を兼ねて以下のコマンドを実行し、バージョン表示（ 2.2.2 以降）が出力されることを確認。

    $ hg –version

http://mumeiyamibito.0am.jp/doku.php/%E3%83%84%E3%83%BC%E3%83%AB/mercurial

# GNU ARM Embedded Toolchain のインストール

以下を順に実行。

    $ sudo add-apt-repository ppa:terry.guo/gcc-arm-embedded
    $ sudo apt-get update
    $ sudo apt-get install gcc-arm-none-eabi=15:4.9.3+svn231177-1 u-boot-tools libboost1.58-all-dev

GNU ARM Embedded Toolchain が正常にインストールできたことの確認を兼ねて以下のコマンドを実行し、バージョン表示が出力されることを確認。

    $  arm-none-eabi-gcc --version

# mbed CLI のインストール

以下を実行。

    $ pip install mbed-cli

# momo-mruby のソースコード取得／ビルド

ホームディレクトリ上で、以下のコマンドを実行して、 momo-mruby のソースコードを取得。

ソースコードは、ホームディレクトリ直下の momo-mruby ディレクトリ内に取得される。

    $ git clone https://github.com/mimaki/momo-mruby.git --recursive

~~以下を実行し、必要モジュールを入手~~

~~$ cd [ momo-mruby 取得ディレクトリの PATH ]/mbed~~
~~$ sudo pip install -r requirements.txt~~  

※ 2018/04/15 追記

---

momo-mruby のディレクトリ構成に変更が加えられたらしく、 mbed-os サブディレクトリがなくなりました。

また、make 前に必要モジュールの取得処理を行う必要もなくなった模様です。

---

ソースコード取得後、momo-mruby ディレクトリ内に移動し、make コマンドを実行することで GR-PEACH に書き込む mruby 開発環境のバイナリが得られます。

[注意]

[本家の README.md](https://github.com/mimaki/momo-mruby)にも書かれているように、git clone直後、make clean後、およびmrbgems追加／削除後の make では、コンパイルエラーが発生する（少なくとも、2018/1/24時点で追試したところ、この問題を再現できた）。

この場合は、再度 make (cleanを付けずに) を実行することで対処可能。

GR-PEACH に書き込む mruby 開発環境のバイナリ(momo-mruby.bin)が、以下の場所・名前で出来上がる。

    [ホームディレクトリ]/momo-mruby/BUILD/RZ\_A1H/GCC\_ARM/momo-mruby.bin

これを、USB 接続した GR-PEACH に書き込むことで、mruby 開発環境が GR-PEACH に取り込まれる。

使い方は、[本家の README.md](https://github.com/mimaki/momo-mruby)を参照。

# おまけ（シリアルポートの利用権限変更）

GR-PEACH とやり取りする際、USBシリアル変換を使うことになりますが、素の Ubuntu の場合、root ユーザ以外では、素直に使えません。

USBシリアル変換を root 以外でも利用できるようにするため、以下を実行し、OS を再起動します。

    $ sudo addgroup [ユーザ] dialout

万歳！ また１枚、mruby で遊べるマイコンボードの手持ちが増えました。

では、また。