MobiRubyはオープンソース! - 秋の京都で MobiRuby をつつく会 in はてな その2 -
秋の京都で MobiRuby をつつく会 in はてなの参加レポートの続きです(レポートその1)。
後半は増井雄一郎(@masuidrive)さんによる「解剖!MobiRuby!」でした。そういえば@masuidriveさんがMobiRubyをされているとの噂を聞いていましたが、すっかり忘れていました。@masuidriveさんといえば、以前、@kanu_さんからうかがった「チケット駆動開発のはじまり」からたどれる「masuidrive的プロジェクトの方針」の増井さんでした。今もお風呂でプログラミングされているそうです。
MobiRuby
MobiRubyは組み込み用rubyであるmruby(eMbeddable Ruby)の上に構築されたiPhone向けの環境です。将来的にAndroid向けにも対応されるであろうmobiruby-cfuncが、iPhone向けのmobiruby-cocoa、mrubyでサポートしていない機能など支援するmobiruby-common、ビルドやブートストラップ、Xcodeを支援するmobiruby-ios、から構成されています。
現状ではRubyから受け取った呼び出したいAPIの文字列は、dlopenで名前解決する仕組みになっている様です。なお、Rubyソースはバイトコードに変換され、それを".c"に取り込み、コンパイルして.o、実行プログラムになるようです。
開発のきっかけは、まつもと(@yukihiro_matz)さんにやりたいと相談したところ「いいよ!」と返事があったからだそうです。人のつながりからはじまる、いかにもオープンソースな始まり方ですね。
ちなみに、MobiRubyは現在3000行ぐらいで、多くなっても5000-8000行ぐらいで納まるだろうとのことで、ブームになりだした頃のLinuxのように、多くの研究が行われる様になると良いですね。
2013年1Q(4月まで)にバージョン1がリリースされる予定で、Androidの対応はそれ以降になるそうです。
mruby
MobiRubyで苦労されているところは、下位層であるmrubyに起因するところが多い様です。
mrubyは組み込み向けに軽量化されています。なんとコードはcruby(普通のruby)との比較で1/10だそうです。あまり使われないライブラリの削減のほか、Smalltalk風に無限の長さを持てるはずの数値が、整数、float、doubleと一方向に変化する様になったそうです。
このほか、mrubyはPOSIXでなくC99をベースにしているので、ファイル、ソケット、スレッドなどはサポートされていないので、必要な物は環境に合わせて実装しないと行けない様です。
なによりもmrubyが開発中であることが、実装方法や順序に制限を与えているようです。実装の変更が予定されていると聞いているため、デバッグトレースが実装できない、ガベージコレクションの連携方式が限定される、と言った問題がある様です。
ガベージコレクション
Rubyはmark&sweepというガベージコレクション(オブジェクトの参照ツリーをたどってマークし、それ以外を破棄する)方式ですが、Objective-Cはリファレンスカウンタ(オブジェクトごとにカウンタを持って参照ごとに加算・減算する)方式なので、それを解決する必要があります。
本来ならmrubyのガベージコレクションのタイミングでリファレンスカウンタを減産する方法も考えられるのですが、今後の修正が見込まれるので、今はObjective-Cのreleaseメソッドを書き換えて、解放するタイミングでチェックするという遅い方式で実装されている様です。
この辺りの難しさに対して、「動く物がないと話に乗ってくれない」のでやっていると、あきらめよりは当然の事として受け入れられておられる様でした。また、mrubyやObjective-cあるいはCocoaの実装の変更に対しては、「マンパワーと気合いと根性」で乗り切られるとの事。
サラリーマンとしてならブラックなお話ですが、オープンソースの開発なので、多くの協力者と共に積極的に取り組むイメージが感じられ、能力があるなら協力したいと思いました。
Objective-Cがいつかガベージコレクションになれば良いのですが、方式の違いという事で仕方ないと思います。反面、Objective-Cが良くできているので、相互に継承可能にできるというメリットがあるそうです。
@masuidraiveスタイル
踊られた訳じゃないですw。
まつもとさんとの「いいよ!」という関係性もそうですが、「動く物がないと話に乗ってくれない」「マンパワーと気合いと根性」という言葉もMobiRubyがオープンソースとして、世の中に貢献するという熱い思いを感じました。
また、技術者としてのスタイルでは、様々な技術を持たれている事に対して、
「仕事でやらないと分からない」
と言われていたのが印象的です。これは私も昔悩んだ事のある問題です。どんなに本を読んでも、小さな仮想プロジェクトをしても、真剣に作らなければ、身に付きません。それを新しい仕事で経験を積むという方法で解決されていました。また、MobiRubyの今後に対しても「Androidもやらないと面白くない」とさらに技術を得て向上しようとされている様でした。
私の場合は、コミュニティで聞く、今ある仕事をきっかけに勉強する、という解決法を取っていますので、増井さんのより積極的な方法に清々しさを覚えました。技術者として、ちょっとうらやましいと思いました。
おわりに
MobiRubyはまだ正式版でなく、メモリーリークもあるそうです。そこで、今すぐ使うなら200ドルなのでRubyMotionを使う方が良いと謙虚&率直に言われていました。
とはいえ、オープンソースであることや、今後、結構大変そうですがAndroidにも対応されること、メタプログラミング的な記述ができる様になる、といったことからMobiRubyの今後には大いに期待しています。
最後に、今回の企画をしていただいたiPhone プログラミング勉強会京都とCocoa勉強会関西のみなさま、ありがとうございました。
« リーンスタートアップなiPhone開発はPhoneGap! - 秋の京都で MobiRuby をつつく会 in はてな その1 - | トップページ | [#TiDD] パッチはコア資産 - DVCSの考察 - »
「ソフトウェア」カテゴリの記事
- One fact in one placeとチケット駆動開発 - Software Processes are Software, Too -(2021.12.21)
- マルチスレッド処理と進捗管理・配員・作業分割/割り当て- Software Processes are Software, Too -(2021.12.20)
- カプセル化と組織パターン - Software Processes are Software, Too -(2021.12.20)
- 論文研修会(導入編)- 論理的思考のすすめ -(2019.12.01)
- デブサミ関西でNode-REDとペンギンと勇気の話をしました #devsumiB(2018.10.28)
この記事へのコメントは終了しました。
コメント