ESM アジャイル事業部 開発者ブログ

永和システムマネジメント アジャイル事業部の開発者ブログです。

mruby-cli を使ってコマンドラインツールを作ってみた話

さて、世間では Advent Calendar が盛んになる時期ですね。

弊社でもやってみればいいのではと思ったものの私自体が存在を思い出したのが 11/30 なので、 何も調整せずに勝手に書き出してみて、誰かが続いて書いて 25 日まで続いたらいいなーと思ってはじめてみることにます。 (このブログは、強制だったりノルマがあるわけではなくメンバーが書きたくなったら書くというゆるいルールでやっています。)

本題

もう 1 ヶ月ほど前になりますが、mruby-cli を使って個人で使うツールを作っていました。

今回、なぜ mruby-cli を使用したかというと、よく使うコマンドはワンバイナリでインストールできる形の方が扱うのが簡単と思ったのと、クロスコンパイルで複数の環境のバイナリを普段書き慣れている Ruby で生成できるという点を魅力的に感じたからです。

そこで、普段 CRuby を使っている人が mruby-cli でアプリケーションを開発してみた時に感じた気づきについてまとめてみたいと思います。

mruby は CRuby で使えるメソッド全てが使えるわけではない

書き出して最初に意識を変えないといけないと思ったポイントです。mruby は、CRuby で入っている標準ライブラリのメソッドが全部あるというわけではありません。

String や Array など標準ライブラリにあるメソッドでも、mruby における Rubygems 相当の mgem を使って拡張する必要なものがあります。

mruby で利用するライブラリは mruby/mgem-list から探す

次に困ったことはライブラリはどこから探せばいいかということです。 CRuby であれば rubygems.org で探すことができます。

mruby/mgem-list という有志が作っている mgem の一覧から探すようです。

require する必要がない

mruby-cliRuby で書くのですが、ファイルを分割した際、明示的に require をする必要がありません。

動かすにはコンパイルが必要

すごく当たり前のことなのですが、動かす時にコンパイルする必要があります。 今回、REST API を叩くコマンドライブラリを作成していたのですが、API の使い方やレスポンスの内容などを作成しているアプリで try & error でやろうとすると大変という印象を受けました。

最後に

同じ Ruby の文法といっても、ライブラリの探し方から実行させるための手順が違い戸惑うことが最初のうちは多かったです。しかし、Web サービスのクライアントアプリを書くという範囲では、1 つでも API を叩くパスが出来てしまえば、あとはサクサク進むという印象でした。

ツールを作る手段として、覚えておいて損はないと思うので素振りしてみるといいと思いました。