RubyをつかったiPhoneアプリケーション開発森 琢磨Takuma Mori / @takuma104UICoderz
Agenda•   自己紹介•   iPhoneアプリケーション開発とは?•   Ruby for iPhone•   RubyCocoa for iPhone•   その他のRubyをつかった開発環境•   まとめ
自己紹介
自己紹介•   森 琢磨 (もりたくま) a.k.a. takuma104
自己紹介•   森 琢磨 (もりたくま) a.k.a. takuma104•   仕事では映像関連システムの受託開発を行って    きました。モバイル関連開発も。•   最近フリーランスのプログラマになりました    •   iPhoneアプリ...
My OSS Projects•       flv2mpeg4 (2006)    •    http://sourceforge.net/projects/vixynet/    •    FLVからMPEG4への無劣化Codec変換•   ...
My OSS Projects (cont.)•       NatsuLion for iPhone (2008-)    •    http://github.com/takuma104/ntlniph/tree/master    •  ...
iPhone アプリ開発               ここでiPhoneSDKの開発者を               聞く               ・すでに開発してる人               ・アプリをAppStoreで出して    ...
iPhone?•   いわゆる組み込み系 (デスクトップではない的    な意味で)•   OS/Frameworkはモダン (BSDをベースとした    OSXをベースとした iPhone OS)•   ハードウエア的には、10年ぐらい前のP...
iPhoneアプリ?•   iPhone / iPod touch用のiPhone OS上のネイティ    ブアプリケーション•   配布環境が特徴的で、Appleが公式に用意する    AppStoreというのがある。開発用であれば    A...
SDK(Xcode)による普通の開発• ObjectiveCでコードを書く ← Rubyのがいい!• シミュレーターである程度動作させる• パフォーマンスの確認とか一部のハードウエ  アの確認とかはできない• ある程度動いたら実機で動作確認• ...
Ruby for iPhone
iPhone OS で Ruby を動かす•   RubyをiPhone実機で動かす歴史がすでに    •   検索すると、 初代iPhoneのころ (iPhone        OS1.xの時代)に、Jailbreak環境にて動作させ    ...
iPhone OS で Ruby を動かす (cont.)•   パッチを書いたらすんなりSDKでBuildが通る•   テスト(samples/test.rb)も8割方通過•   なんか動いたっぽい
iPhone OS で Ruby を動かす (cont.)•   ところが irb がやっぱり実機で動かない    •   どうやらsignalを内部で使用している部分        (sigsetmask(3)など) でそのまま落ちることが ...
irb for iPhone     http://github.com/takuma104/iphone-irb/tree/master
AppStoreで審査通らず   orz
重要なAppStoreの話
AppStore審査•   AppStoreでアプリを配布(販売)するに    は、AppStoreでの審査を通過する必要がある•   規約があり、その規約に従ってないものについ    てはRejectされる。(理由についての詳細は教え    ...
iPhone SDK Agreement 3.3.2章 An Application may not itself install or launch other executable code by any means, including ...
Rhomobile社のblogより The most often-referenced issue is “no interpreted code may be downloaded“. Note the emphasis on “may be...
Rhomobile社のblogより (cont.) The issue is that if you download code to an interpretor then there is no way to know just what ...
まとめると•   インタプリタ自体が禁止されている訳ではない    はず。•   申請時にすべてのスクリプトをアプリ内に内蔵    し、スクリプトコードをダウンロードして解釈    するような形にしなければOKなはず。
まとめると•   インタプリタ自体が禁止されている訳ではない    はず。•   申請時にすべてのスクリプトをアプリ内に内蔵    し、スクリプトコードをダウンロードして解釈    するような形にしなければOKなはず。•   ……あれ??
RubyCocoa for iPhone
RubyCocoa for iPhone•   Rubyがどうやら動いたので、普通のiPhoneアプ    リをRubyCocoaで書けないか?•   libffiが使われてない最も新しいversionである    0.4.2 (5年ぐらい前のもの...
RubyCocoa for iPhone Demo•   HelloWorld•   RemoteIRB その1    •   上記のHelloWorldについて、動作中のアプリ        に、telnet接続し、挙動を動的に変更する•  ...
Demo
RubyCocoa for iPhone 問題点•   ObjCに比べてどうしても(構造上)遅い•   メモリ消費も実機環境 (∼20MB) を考えると、    けっこうきつい•   Rubyとは言ってもObjC用のCocoaFramework...
RubyCocoa for iPhone の使い所•   Rubyのみでアプリを書く    •   AppStore用アプリとしては、現時点ではいろ        んな意味で若干チャレンジングかもしれない•   ObjC + Ruby で書く ...
RubyCocoa for iPhone の今後?•   想定使用ターゲットをデバック専用環境として    メンテ•   Rubyでのアプリ作成については、そもそも    RubyCocoa for iPhone ではなく、MacRuby 0....
そのほかのRubyをつかった開発環境
Rhomobile Rhodes
What s Rhodes?•   Rhomobile社製•   ローカルで動くRoR(相当) for iPhone    •   Rubyコードで開発する    •   WebViewを用いて表示を行っている。Webア        プリとネ...
What s Rhodes? (cont.)•   Ruby1.9.1ベースで、RubyVMをアプリ本体に内    蔵し、あらかじめコンパイルしておいた    Instructionを、実行時にRubyVMで解釈するこ    とで、動作させてい...
Issues To Go           http://www.issuestogo.com/
Shinycocos
What s Shinycocos?•   作者は、 funkaster さん (http://rolando.cl/)•   Cocos2d ライブラリの Ruby binding    •   Cocos2dは、iPhone用2Dグラフィッ...
Rhodes, Shinycocos                           IssuesToGo•   Rhodes    •   Rhomobile社製    •   ローカルで動くRoR(相当) for iPhone•   S...
まとめ
まとめ•   RubyCocoa for iPhoneは、いまのところ、Ruby    でのアプリ作成よりは、既存ObjCプロジェクト    のデバックに向いている•   RhodesやShinycocosなどを含め、少しづつ    Rubyで...
ありがとうございました•   Q&A•   Resources:    •   My Blog: http://d.hatena.ne.jp/takuma104/    •   RubyCocoa for iPhone: http://gith...
CC Photos•   By shapeshift: http://www.flickr.com/photos/shapeshift/2384168299/•   By elliottcable: http://www.flickr.com/ph...
Upcoming SlideShare
Loading in …5
×

RubyKaigi2009 - RubyをつかったiPhoneアプリケーション開発

2,569 views
2,498 views

Published on

Published in: Technology, News & Politics
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,569
On SlideShare
0
From Embeds
0
Number of Embeds
801
Actions
Shares
0
Downloads
24
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

RubyKaigi2009 - RubyをつかったiPhoneアプリケーション開発

  1. 1. RubyをつかったiPhoneアプリケーション開発森 琢磨Takuma Mori / @takuma104UICoderz
  2. 2. Agenda• 自己紹介• iPhoneアプリケーション開発とは?• Ruby for iPhone• RubyCocoa for iPhone• その他のRubyをつかった開発環境• まとめ
  3. 3. 自己紹介
  4. 4. 自己紹介• 森 琢磨 (もりたくま) a.k.a. takuma104
  5. 5. 自己紹介• 森 琢磨 (もりたくま) a.k.a. takuma104• 仕事では映像関連システムの受託開発を行って きました。モバイル関連開発も。• 最近フリーランスのプログラマになりました • iPhoneアプリ開発関連を中心に行っていま す。開発だけでなく、コンサルティングとか もやってます。
  6. 6. My OSS Projects• flv2mpeg4 (2006) • http://sourceforge.net/projects/vixynet/ • FLVからMPEG4への無劣化Codec変換• RubyIzumi (2007) • http://code.google.com/p/rubyizumi/ • Adobe Flash用映像ストリーミングサーバ。 Pure Rubyで書いたのも特徴
  7. 7. My OSS Projects (cont.)• NatsuLion for iPhone (2008-) • http://github.com/takuma104/ntlniph/tree/master • iPhone用Twitter Clientアプリ。iPhone用 Twitter Client としては、おそらく現在唯一の Open Source アプリ(New BSD License)。 • 日本では現在2位*の使用率 • * http://ipodtouchlab.com/2009/05/twitter-client-iphone-ipod- touch.html
  8. 8. iPhone アプリ開発 ここでiPhoneSDKの開発者を 聞く ・すでに開発してる人 ・アプリをAppStoreで出して る人
  9. 9. iPhone?• いわゆる組み込み系 (デスクトップではない的 な意味で)• OS/Frameworkはモダン (BSDをベースとした OSXをベースとした iPhone OS)• ハードウエア的には、10年ぐらい前のPCレベル になってきている (ARM11 400MHz程度) • →じゃあ16歳のRubyは動くよね
  10. 10. iPhoneアプリ?• iPhone / iPod touch用のiPhone OS上のネイティ ブアプリケーション• 配布環境が特徴的で、Appleが公式に用意する AppStoreというのがある。開発用であれば AppStore通さないでももちろんOK(ただし binary配布が難しい)。• AppStoreでは、無料でも配布できるし、有料で も販売できる (¥115-¥115,000)• SDKがあって(Macで)簡単に開発を始められる
  11. 11. SDK(Xcode)による普通の開発• ObjectiveCでコードを書く ← Rubyのがいい!• シミュレーターである程度動作させる• パフォーマンスの確認とか一部のハードウエ アの確認とかはできない• ある程度動いたら実機で動作確認• 転送&アプリ起動に10秒程度かかる ← これが 遅いのでなんとかしたい!
  12. 12. Ruby for iPhone
  13. 13. iPhone OS で Ruby を動かす• RubyをiPhone実機で動かす歴史がすでに • 検索すると、 初代iPhoneのころ (iPhone OS1.xの時代)に、Jailbreak環境にて動作させ るのを試みた人がけっこう居た形跡がある • が irb が動かないでクラッシュする → 捨ての 方向 → もったいない!
  14. 14. iPhone OS で Ruby を動かす (cont.)• パッチを書いたらすんなりSDKでBuildが通る• テスト(samples/test.rb)も8割方通過• なんか動いたっぽい
  15. 15. iPhone OS で Ruby を動かす (cont.)• ところが irb がやっぱり実機で動かない • どうやらsignalを内部で使用している部分 (sigsetmask(3)など) でそのまま落ちることが 判明 (iPhone OSではSignalが一切使用不可)。 • signalを使わないようにしてbuild (パッチ当て も含めて)、irb (正確には IRBモジュール) も動 作させることができた
  16. 16. irb for iPhone http://github.com/takuma104/iphone-irb/tree/master
  17. 17. AppStoreで審査通らず orz
  18. 18. 重要なAppStoreの話
  19. 19. AppStore審査• AppStoreでアプリを配布(販売)するに は、AppStoreでの審査を通過する必要がある• 規約があり、その規約に従ってないものについ てはRejectされる。(理由についての詳細は教え てもらえないことも多い)• この規約の中には、スクリプト言語についても 言及されている箇所がある。それは…
  20. 20. iPhone SDK Agreement 3.3.2章 An Application may not itself install or launch other executable code by any means, including without limitation through the use of a plug-in architecture, calling other frameworks, other APIs or otherwise. No interpreted code may be downloaded and used in an Application except for code that is interpreted and run by Apple’s Published APIs and built-in interpreter(s).
  21. 21. Rhomobile社のblogより The most often-referenced issue is “no interpreted code may be downloaded“. Note the emphasis on “may be downloaded”. Sometimes this is misinterpreted as “no interpretors”. No. http://www.rhomobile.com/blog/2009/05/29/iphone-app- store-rules-and-guidelines-on-use-of-frameworks/
  22. 22. Rhomobile社のblogより (cont.) The issue is that if you download code to an interpretor then there is no way to know just what an application really does since it could change daily. Clearly there are many apps that are based on some form of interpretor. The important thing is to not download code to those interpretors, because this invalidates any attempt to test what the application does. http://www.rhomobile.com/blog/2009/05/29/iphone-app- store-rules-and-guidelines-on-use-of-frameworks/
  23. 23. まとめると• インタプリタ自体が禁止されている訳ではない はず。• 申請時にすべてのスクリプトをアプリ内に内蔵 し、スクリプトコードをダウンロードして解釈 するような形にしなければOKなはず。
  24. 24. まとめると• インタプリタ自体が禁止されている訳ではない はず。• 申請時にすべてのスクリプトをアプリ内に内蔵 し、スクリプトコードをダウンロードして解釈 するような形にしなければOKなはず。• ……あれ??
  25. 25. RubyCocoa for iPhone
  26. 26. RubyCocoa for iPhone• Rubyがどうやら動いたので、普通のiPhoneアプ リをRubyCocoaで書けないか?• libffiが使われてない最も新しいversionである 0.4.2 (5年ぐらい前のもの)をベースに移植作業 を行った• 移植作業:ObjC RuntimeまわりのAPIが変更に なっているための対応を行うなど• → UIKitを含むObjCのクラスをRubyから使用可 能に
  27. 27. RubyCocoa for iPhone Demo• HelloWorld• RemoteIRB その1 • 上記のHelloWorldについて、動作中のアプリ に、telnet接続し、挙動を動的に変更する• RemoteIRB その2 • ObjCで書かれたアプリにRubyCocoa for iPhoneを組込み、挙動を動的に変更する
  28. 28. Demo
  29. 29. RubyCocoa for iPhone 問題点• ObjCに比べてどうしても(構造上)遅い• メモリ消費も実機環境 (∼20MB) を考えると、 けっこうきつい• Rubyとは言ってもObjC用のCocoaFrameworkと 似た記述になるので、記述がどうしてもRuby的 にならない面がある• AppStore審査通るかどうかは、 運次第?
  30. 30. RubyCocoa for iPhone の使い所• Rubyのみでアプリを書く • AppStore用アプリとしては、現時点ではいろ んな意味で若干チャレンジングかもしれない• ObjC + Ruby で書く • パフォーマンスを重視する部分はObjCなど• ObjCで書いて、デバック時だけ組み込んで使う • これがもっとも現実的な使い所?
  31. 31. RubyCocoa for iPhone の今後?• 想定使用ターゲットをデバック専用環境として メンテ• Rubyでのアプリ作成については、そもそも RubyCocoa for iPhone ではなく、MacRuby 0.5 (ARMバイトコードが吐ける予定) を移植したい • → これなら文句無くAppStore審査も通るはず
  32. 32. そのほかのRubyをつかった開発環境
  33. 33. Rhomobile Rhodes
  34. 34. What s Rhodes?• Rhomobile社製• ローカルで動くRoR(相当) for iPhone • Rubyコードで開発する • WebViewを用いて表示を行っている。Webア プリとネイティブアプリのハイブリッド• iPhone以外でもWindowsMobile, Androidなど でも開発したコードをそのまま使える• ライセンスは、LGPLv3 + 商用ライセンス
  35. 35. What s Rhodes? (cont.)• Ruby1.9.1ベースで、RubyVMをアプリ本体に内 蔵し、あらかじめコンパイルしておいた Instructionを、実行時にRubyVMで解釈するこ とで、動作させている。• 実際にAppStoreアプリとしても審査を通過して いる • 例) Issues To Go : lighthouseapp の Issue Tracker
  36. 36. Issues To Go http://www.issuestogo.com/
  37. 37. Shinycocos
  38. 38. What s Shinycocos?• 作者は、 funkaster さん (http://rolando.cl/)• Cocos2d ライブラリの Ruby binding • Cocos2dは、iPhone用2Dグラフィックライブ ラリとしてGameアプリなどで多用されている• まずはプロトタイプ用と謳われている が、Rhodesと同じ手法でAppStore対応も計画 中のようである• ライセンスはLGPL
  39. 39. Rhodes, Shinycocos IssuesToGo• Rhodes • Rhomobile社製 • ローカルで動くRoR(相当) for iPhone• Shinycocos • funkaster さん作 (http://rolando.cl/) • Cocos2d ライブラリの Ruby binding
  40. 40. まとめ
  41. 41. まとめ• RubyCocoa for iPhoneは、いまのところ、Ruby でのアプリ作成よりは、既存ObjCプロジェクト のデバックに向いている• RhodesやShinycocosなどを含め、少しづつ RubyでもiPhoneアプリ作成を作成できる環境が 整いつつある• Rubyでのアプリ作成は、次世代 MacRuby の移 植版が本命と思われる。HotCocoa for iPhoneと かも作ると面白そう。
  42. 42. ありがとうございました• Q&A• Resources: • My Blog: http://d.hatena.ne.jp/takuma104/ • RubyCocoa for iPhone: http://github.com/ takuma104/iphone-rubycocoa • Rhodes: http://github.com/rhomobile/rhodes • Shinycocos: http://github.com/funkaster/ shinycocos
  43. 43. CC Photos• By shapeshift: http://www.flickr.com/photos/shapeshift/2384168299/• By elliottcable: http://www.flickr.com/photos/elliottcable/2601558475/• By eole: http://www.flickr.com/photos/eole/380316678/• By ogcodes: http://www.flickr.com/photos/ogcodes/2095054686/• By johanl http://www.flickr.com/photos/johanl/2968794599/• By rubyran2626 http://www.flickr.com/photos/rubyran2626/2193374690/• By sometoast http://www.flickr.com/photos/sometoast/1405380577/• By cjscott69 http://www.flickr.com/photos/cjscott69/664149067/• By cayusa http://www.flickr.com/photos/cayusa/2602616491/

×