「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2015-10-31mrubyのmrbgemの依存関係とmgem-listの登録についてプログラミングmrubyの機能拡張には、mrbgem(以下mgem)という所謂CRubyでのgemのような拡張モジュールを使います。mgemを開発していくと、もちろん以前作ったmgemの機能を再利用したい場合や、すでに存在する優れたmgemを使ってさらなる機能を実装したい場合が多くなるはずです。昔は、mrubyのbuild_config.rbに粛々と依存するmgemを羅列していって、ビルドして依存関係に関する警告が出たらそのmgemを追加していくというかなり面倒な作りになっていました。今は開発したmgemの所謂設定であるmrbgem.rakeファイルに依存関係を書いておくと、自動的にそれをmgem-listと呼ばれるmgemの登録リポジトリから検索してビルドしてくれるようになっており、以前と比べると非常に簡単になっています。言い換えると、mgem-listに登録していないmgemに関しては、依存関係にmgem名だけを書いていたとしても自動で解決してくれないのです。(一応登録していないmgemの自動解決の方法はあるが、mgemがどこにいるのかなど付加情報を幾つか書かないといけなくて設定内容も増えて面倒)ということで、作ったmgemはできるだけmgem-listにPRを投げて登録しておくようにしましょう。github.comまたmgemそのものの書き方については、以下のサイトを参考に作ってみてはどうでしょうか。blog.matsumoto-r.jpここで簡単にまとめると、mrubyの設定ファイルがbuild_config.rbでここにリンクしたいmgemを書くmgemの設定ファイルがmrbgem.rakeでここにmgemの依存を書くということになり、mrubyのbuild時にbuild_config.rb経由でmgemのmrbgem.rakeを解析し、依存を自動で解決し組み込むという流れになります。今回は依存関係の書き方についても整理しておきます。HTTPクライアントであるmruby-simplehttpというmgemを書いた上で、さらにそれをwrapしてmruby-httprequestというmgemを作るとします。その場合、mruby-simplehttpが以下のように依存関係をmgemのmrbgem.rakeに書きます。'mruby-polarssl'endさらに、それをwrapするmruby-httprequestは以下のような依存関係だったとします。'mruby-http'endその場合、以前は依存しているmgemを再帰的にチェックしてbuild_config.rbにない場合は警告を出すだけでしたが、今ではきちんと再帰的に依存するmgemをmgem-listから検索して自動でダウンロードしてくれます。上記の例では、最終的にHTTPクライアント機能をmrubyで使いたい場合、mruby-httprequestだけmrubyのbuild_config.rbに書いておけばちゃんと関連するすべてのmgemをダウンロードします。build_config.rbは以下のようになります。'mruby-httprequest'endこれをmrubyリポジトリ内においてrakeするだけでビルドが完了します。テストで利用するmgemの依存関係mrubyのテストでは、明示的にテストで利用するmgemを書いていない場合は、基本的に最小コアの機能だけでテストをするようになっています。そのため、例えばテストの中でmruby-sleepを使いたい場合は、以下のようにmrbgem.rakeにテストの依存関係であるspec.add_test_dependencyを書いておきます。'mruby-sleep'endこのように書いておくと、このmruby-httprequestのテストにmruby-sleepをリンクした状態でテストが走ります。mgem-listへの登録の仕方mruby/mgem-listというGitHubのリポジトリでmgemを管理していますので、そこにmgemの設定を書いたファイルをPRするだけでよいです。設定内容は以下のようなyamlになっています。mruby-httpこのようなファイルをリポジトリにPRすると良いです。まとめということで、今回はmrubyのmgemの依存関係やmgem-listへ登録しておくことのメリットを紹介しました。登録していないと、依存するmgemがどこに存在するかといった情報をmrbgem.rakeに書かないと行けなかったりして面倒になるので、できるだけmgem-listに登録してspecにはmruby-sleepといったmgem名だけを書いておけばよい状態にしておくと、みんなが幸せになるでしょう。2016の23日目の記事です。0....2015-05-02MacOSX上でLinuxとWindowsとOSXで動くmrubyバイナリを簡単にクロスコンパイルで...ペパボ社内では、mrubyを使う機運が高まってきています。はてなブログPro研究者と技術者をやっています。詳しくはリンクの「研究・開発業績ページ」を御覧ください。さくらインターネットに入社して1年が経ちました非厳密計算で確率的に解釈するコンピューティングへの流れラストオーサーとしての国際会議投稿やジャーナル執筆のサポートについてviを:wqや:q!、あるいはZZで終了するのとではどちらが効率的か自分の研究開発に自信を持つためには月別アーカイブリンク研究・開発業績ページ旧ブログ検索はてなブログをはじめよう!matsumoto_rさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。