LoginSignup
17
15

More than 5 years have passed since last update.

ツナでもわかるmruby [1回目:Hello World]

Last updated at Posted at 2014-05-03

最近色々と選択肢のあるコンパクトなLinuxボード上でmruby使ったら幸せになれるかなって思ったのがきっかけでmrubyの勉強開始します。

ちなみにタイトルのツナは我が家の猫です。かわいいです。
ツナ2.jpg

とりあえずの目標は、mrubyでMQTTクライアントを実装することですが、当面は基礎固めを優先してmrubyの機能を一つ一つ学んでいこうと思います。

MQTTはM2M、IoT分野などで今後ひろがっていくことが想定されるPubSubプロトコルです。メッセージのサイズが小さく、最初からネットワーク品質の悪い場合が有る回線(3G回線など)で使用される事を想定した設計になっています。
参考: HTTPからMQTTへ

インストール

インストールの方法とかも色々調べて纏めておこうかと思いましたが、こちらにとても解り易く纏めてあったので詳細はスキップで。

mrubyのビルド方法

なお、mrubyをビルドすると最終的に実行可能バイナリが./bin以下に作られます。僕はこれを /usr/local/mruby/bin にコピーして使用しています。

ソースコードをダウンロード

mrubyは軽量Rubyフォーラムから安定板がダウンロードできますが、まだ活発に開発されていますので実際の製品開発にしようする段階まではgithubのmasterを追いかけた方がいいと思います。

$ git clone https://github.com/mruby/mruby.git

ビルド設定

$ cd mruby

ビルドの設定ファイルはbuild_config.rbです。

とりあえず試しているところなので僕は殆どデフォルトのままですが、gemboxの設定をflull-coreに変えています。
こうすると./mrbgemsにあるライブラリを全て読み込んでくれるようですが、その分ビルドしたバイナリは大きくなるでしょうから使用する環境によって帰る必要が有ると思います。

デフォルトではdefaultです。当面これで問題ないと思います。

build_config.rb
conf.gembox 'default'

./mrbgemsに置いたライブラリを全て読み込みたい場合はfull-coreに設定。

build_config.rb
conf.gembox 'full-core'

ビルド

$ rake

インストール

出来上がったバイナリをパスの通った場所にコピーします。

$ mkdir -p /usr/local/mruby/bin
$ cp bin/* /usr/local/mruby/bin/
$ echo "export PATH=/usr/local/mruby/bin:\${PATH}" >> ~/.profile
$ source ~/.profile

とりあえず Hello World

まずは定番のHello Worldしてみます。ファイルにコードは書かずにirbのmruby版であるmirbからやってみます。ターミナルから

$ mirb

と入力するとmirbの対話シェルが立ち上がります。おもむろにputs "Hello World"してみます。

mirb
> puts "Hello World"

Hello World
 => nil

おk。でもこれだけじゃ面白くないので、ファイルにコードを書いてコンパイルして実行してみます。
勉強用に適当にディレクトリ作ってそこに移動します。

$ mkdir -p mruby-learn/hello_world
$ cd mruby-learn/hello_world

Hello Worldでは明らかに必要ないですが、あえてモジュールとクラスを使って書きます。

hello_world.rb
module Hello
  class World
    def say!
      puts "hello world"
    end
  end
end

hw = Hello::World.new
hw.say!

とりあえずコンパイルせずにそのまま実行。

$ mruby hello_world.rb
hello world

おkです。続いてコンパイルしてみます。

$ mrbc hello_world.rb
$ ls
hello_world.mrb hello_world.rb

拡張子がmrbのファイルができました。
実行する時はmrubyコマンドに"-b"をつけて実行するようです。

$ mruby -b hello_world.mrb
hello world

おー。次は基本クラスのお勉強しよう。多分だいたいRubyと同じだけど一応。

17
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
15