東京・目黒雅叙園で開催された Developers Summit 2013 Action! に今年も参加しました。
最近はカンファレンスや勉強会に参加しても、会場で自分が呟いたTweetのまとめだけでお茶を濁していましたが、カンファレンステーマである”Action!”に刺激を受けて初心に戻り、聴講した内容をブログにまとめてみます。
とは言いつつ朝10時から夜7時過ぎまで聴講した内容をすべてメモに取ってブログにまとめるのは体力的に厳しいので、とりあえず一番関心の高かったセッションの内容をまとめました。
発表者の方がセッション終了後に早速、スライドをアップしているので正確な内容はそちらを参照してください。私のブログまとめはあくまで私の備忘録ということで…
RubyでiOS/Androidアプリを作るMobiRuby
- 講演者
- 増井 雄一郎 氏
講演者紹介
- PukiWikiを開発した人
- どこでもプログラミングをする人
- 風呂プログラミングの人 😀
mrubyの紹介
- MobiRubyはmrubyを基盤に構築している
- Rubyの父まつもとゆきひろ氏もmrubyの開発に加わっている
- CRubyとは別の流れ
- ISO/JIS規格Ruby準拠
- 非POSIX(非UNIX)プラットフォーム上でもmrubyは実行可能
- C99仕様のCコンパイラが提供されるプラットフォームであれば基本的にOK
- 不要な言語機能をDropOffする(そぎ落とす)ことが可能
- CPUパフォーマンスやメモリサイズが貧弱なLEGO Mindstorms NXTでも動作(非PCでRuby利用に扉)
- mrubyが狙う2つの分野
- ハードウェア機器への組み込み言語 (例)自動販売機の制御プログラミング言語
- アプリケーションへの組み込み言語 (例)Emacs Lisp や Excelマクロのようなアプリケーション拡張言語
- アプリケーションへのmrubyの組み込み例: ApacheをRubyで拡張するmod_ruby
- mrubyのVM(Virtual Machine)の特徴
- RiteVM
- C言語のグローバル変数は使っていない
- 1つのVMで複数のプログラムが走る
- 非スレッドセーフ
- mrubygems
- mrubyではrubygemsは利用できない(互換性がない)
- mrubyのパッケージ管理システム => mrbgems
- mrbgemsの活発な開発者は5名程度。現在発展途上。多くの開発者の貢献の場あり。
MobiRubyの紹介
- ライセンス:MITライセンス
- MobiRubyのサンプルアプリ”SameGame”はAppStoreの審査を(いまのところ)無事にパスしている
- Objective-Cで使えるすべての機能をMobiRubyで実現することを目標。
- 「MobiRubyでは××はできない」とはしたくない。
- 現在はiOS版のMobiRubyの開発が先行しているがAndroid版の開発も進行中
- なぜモバイルアプリケーション開発の世界にRuby(mruby)が必要なのか?
- メタプログラミングの楽しさ(開発効率)
- (mrubyと競合する)プログラミング言語 Lua では DSL(Domain Specific Language) が書き難い
- “Ruby on Rails” は “Active Record”の仕組みでSQL(RDB)を上手にラッピングしている。同じようにモバイルアプリでも下層レイヤをラッピングすることで開発作業をハッピーに
現在のMobiRubyの状況
- Rubyの皮をかぶったObjective-C
- Objective-C(Cocoa)の知識がないとmrubyコードは現実的には読み書きできない
- mruby-cfuncを使うことで、Rubyの中から直接C言語のコードを呼び出すことができる
- メモリー管理
- Objective-C: リファレンスカウンター方式
- MobiRuby: マークスイープ方式
- MobiRuby(mruby)には require や load などで外部スクリプトを読み込み手段がない
- MobiRubyの次期バージョンでは wrapped API を提供して、脱Objective-C。Rubyらしい自然な記述を提供したい
- MobiRuby(mruby)のメリット
- Rubyでモバイルアプリを開発できる
- しかし費用対効果からするとRubyMotionのライセンスを購入したほうが… 😉
- Rubyの父まつもとゆきひろさんがmrubyの開発に関わっていることは大きなアドバンテージ
- MobiRuby(mruby)のデメリット
- まだ不安定
- クラスやメソッドの数が(CRubyに対して)圧倒的に少ない
- デバッグ機能が不十分(バッグトレース機能がない)
MobiRubyを開発する動機
- 世界にアピールできるポートフォリオをつくる
- 昨年開催されたRubyConfでもMobiRubyをプレゼン
- mrubyは今まさに発展途上のテクノロジー。開発者としての足跡を残すのは今がチャンス!