SlideShare une entreprise Scribd logo
1  sur  43
Télécharger pour lire hors ligne
Rubyをつかった
iPhoneアプリケーション
開発
森 琢磨
Takuma Mori / @takuma104
UICoderz
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変換

•       RubyIzumi (2007)

    •    http://code.google.com/p/rubyizumi/


    •    Adobe Flash用映像ストリーミングサーバ。
         Pure Rubyで書いたのも特徴
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
iPhone アプリ開発

               ここでiPhoneSDKの開発者を
               聞く
               ・すでに開発してる人
               ・アプリをAppStoreで出して
               る人
iPhone?

•   いわゆる組み込み系 (デスクトップではない的
    な意味で)

•   OS/Frameworkはモダン (BSDをベースとした
    OSXをベースとした iPhone OS)

•   ハードウエア的には、10年ぐらい前のPCレベル
    になってきている (ARM11 400MHz程度)

    •   →じゃあ16歳のRubyは動くよね
iPhoneアプリ?

•   iPhone / iPod touch用のiPhone OS上のネイティ
    ブアプリケーション

•   配布環境が特徴的で、Appleが公式に用意する
    AppStoreというのがある。開発用であれば
    AppStore通さないでももちろんOK(ただし
    binary配布が難しい)。

•   AppStoreでは、無料でも配布できるし、有料で
    も販売できる (¥115-¥115,000)

•   SDKがあって(Macで)簡単に開発を始められる
SDK(Xcode)による普通の開発

• ObjectiveCでコードを書く ← Rubyのがいい!
• シミュレーターである程度動作させる
• パフォーマンスの確認とか一部のハードウエ
  アの確認とかはできない

• ある程度動いたら実機で動作確認
• 転送&アプリ起動に10秒程度かかる ← これが
  遅いのでなんとかしたい!
Ruby for iPhone
iPhone OS で Ruby を動かす

•   RubyをiPhone実機で動かす歴史がすでに

    •   検索すると、 初代iPhoneのころ (iPhone
        OS1.xの時代)に、Jailbreak環境にて動作させ
        るのを試みた人がけっこう居た形跡がある

    •   が irb が動かないでクラッシュする → 捨ての
        方向 → もったいない!
iPhone OS で Ruby を動かす (cont.)

•   パッチを書いたらすんなりSDKでBuildが通る

•   テスト(samples/test.rb)も8割方通過

•   なんか動いたっぽい
iPhone OS で Ruby を動かす (cont.)

•   ところが irb がやっぱり実機で動かない

    •   どうやらsignalを内部で使用している部分
        (sigsetmask(3)など) でそのまま落ちることが
        判明 (iPhone OSではSignalが一切使用不可)。

    •   signalを使わないようにしてbuild (パッチ当て
        も含めて)、irb (正確には IRBモジュール) も動
        作させることができた
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 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).
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/
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/
まとめると

•   インタプリタ自体が禁止されている訳ではない
    はず。

•   申請時にすべてのスクリプトをアプリ内に内蔵
    し、スクリプトコードをダウンロードして解釈
    するような形にしなければOKなはず。
まとめると

•   インタプリタ自体が禁止されている訳ではない
    はず。

•   申請時にすべてのスクリプトをアプリ内に内蔵
    し、スクリプトコードをダウンロードして解釈
    するような形にしなければOKなはず。



•   ……あれ??
RubyCocoa for iPhone
RubyCocoa for iPhone

•   Rubyがどうやら動いたので、普通のiPhoneアプ
    リをRubyCocoaで書けないか?

•   libffiが使われてない最も新しいversionである
    0.4.2 (5年ぐらい前のもの)をベースに移植作業
    を行った

•   移植作業:ObjC RuntimeまわりのAPIが変更に
    なっているための対応を行うなど

•   → UIKitを含むObjCのクラスをRubyから使用可
    能に
RubyCocoa for iPhone Demo

•   HelloWorld

•   RemoteIRB その1

    •   上記のHelloWorldについて、動作中のアプリ
        に、telnet接続し、挙動を動的に変更する

•   RemoteIRB その2

    •   ObjCで書かれたアプリにRubyCocoa for
        iPhoneを組込み、挙動を動的に変更する
Demo
RubyCocoa for iPhone 問題点

•   ObjCに比べてどうしても(構造上)遅い

•   メモリ消費も実機環境 (∼20MB) を考えると、
    けっこうきつい

•   Rubyとは言ってもObjC用のCocoaFrameworkと
    似た記述になるので、記述がどうしてもRuby的
    にならない面がある

•   AppStore審査通るかどうかは、 運次第?
RubyCocoa for iPhone の使い所

•   Rubyのみでアプリを書く

    •   AppStore用アプリとしては、現時点ではいろ
        んな意味で若干チャレンジングかもしれない

•   ObjC + Ruby で書く

    •   パフォーマンスを重視する部分はObjCなど

•   ObjCで書いて、デバック時だけ組み込んで使う

    •   これがもっとも現実的な使い所?
RubyCocoa for iPhone の今後?

•   想定使用ターゲットをデバック専用環境として
    メンテ

•   Rubyでのアプリ作成については、そもそも
    RubyCocoa for iPhone ではなく、MacRuby 0.5
    (ARMバイトコードが吐ける予定) を移植したい

    •   → これなら文句無くAppStore審査も通るはず
そのほかのRubyを
つかった開発環境
Rhomobile Rhodes
What s Rhodes?

•   Rhomobile社製

•   ローカルで動くRoR(相当) for iPhone

    •   Rubyコードで開発する

    •   WebViewを用いて表示を行っている。Webア
        プリとネイティブアプリのハイブリッド

•   iPhone以外でもWindowsMobile, Androidなど
    でも開発したコードをそのまま使える

•   ライセンスは、LGPLv3 + 商用ライセンス
What s Rhodes? (cont.)

•   Ruby1.9.1ベースで、RubyVMをアプリ本体に内
    蔵し、あらかじめコンパイルしておいた
    Instructionを、実行時にRubyVMで解釈するこ
    とで、動作させている。

•   実際にAppStoreアプリとしても審査を通過して
    いる

    •   例) Issues To Go : lighthouseapp の Issue
        Tracker
Issues To Go




           http://www.issuestogo.com/
Shinycocos
What s Shinycocos?

•   作者は、 funkaster さん (http://rolando.cl/)

•   Cocos2d ライブラリの Ruby binding

    •   Cocos2dは、iPhone用2Dグラフィックライブ
        ラリとしてGameアプリなどで多用されている

•   まずはプロトタイプ用と謳われている
    が、Rhodesと同じ手法でAppStore対応も計画
    中のようである

•   ライセンスはLGPL
Rhodes, Shinycocos                           IssuesToGo



•   Rhodes

    •   Rhomobile社製

    •   ローカルで動くRoR(相当) for iPhone

•   Shinycocos

    •   funkaster さん作 (http://rolando.cl/)

    •   Cocos2d ライブラリの Ruby binding
まとめ
まとめ

•   RubyCocoa for iPhoneは、いまのところ、Ruby
    でのアプリ作成よりは、既存ObjCプロジェクト
    のデバックに向いている

•   RhodesやShinycocosなどを含め、少しづつ
    RubyでもiPhoneアプリ作成を作成できる環境が
    整いつつある

•   Rubyでのアプリ作成は、次世代 MacRuby の移
    植版が本命と思われる。HotCocoa for iPhoneと
    かも作ると面白そう。
ありがとうございました

•   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
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/

Contenu connexe

Tendances

Continuous Integration for Pharo Smalltalk - Smalltalkと継続的インテグレーション
Continuous Integration for Pharo Smalltalk - Smalltalkと継続的インテグレーションContinuous Integration for Pharo Smalltalk - Smalltalkと継続的インテグレーション
Continuous Integration for Pharo Smalltalk - Smalltalkと継続的インテグレーションSho Yoshida
 
オプショナル型。〜なんとなく付ける ! ? 撲滅〜 改訂版
オプショナル型。〜なんとなく付ける ! ? 撲滅〜 改訂版オプショナル型。〜なんとなく付ける ! ? 撲滅〜 改訂版
オプショナル型。〜なんとなく付ける ! ? 撲滅〜 改訂版Tomoki Hasegawa
 
Pharo(Smalltalk)でAPI作りをはじめよう
Pharo(Smalltalk)でAPI作りをはじめようPharo(Smalltalk)でAPI作りをはじめよう
Pharo(Smalltalk)でAPI作りをはじめようSho Yoshida
 
Web最適化におけるデザインアプローチ
Web最適化におけるデザインアプローチWeb最適化におけるデザインアプローチ
Web最適化におけるデザインアプローチYukihiro Sawada
 
はじめてのiOSアプリ開発 ①
はじめてのiOSアプリ開発 ①はじめてのiOSアプリ開発 ①
はじめてのiOSアプリ開発 ①Nagamine Hiromasa
 
WatchKitを実際にさわってみてわかったこと
WatchKitを実際にさわってみてわかったことWatchKitを実際にさわってみてわかったこと
WatchKitを実際にさわってみてわかったことShuichi Tsutsumi
 
Apple審査を一発通過! iOS開発経験0でも出来る じげん流Swift開発のすべて
Apple審査を一発通過!iOS開発経験0でも出来るじげん流Swift開発のすべてApple審査を一発通過!iOS開発経験0でも出来るじげん流Swift開発のすべて
Apple審査を一発通過! iOS開発経験0でも出来る じげん流Swift開発のすべてMasaru Gushiken
 

Tendances (7)

Continuous Integration for Pharo Smalltalk - Smalltalkと継続的インテグレーション
Continuous Integration for Pharo Smalltalk - Smalltalkと継続的インテグレーションContinuous Integration for Pharo Smalltalk - Smalltalkと継続的インテグレーション
Continuous Integration for Pharo Smalltalk - Smalltalkと継続的インテグレーション
 
オプショナル型。〜なんとなく付ける ! ? 撲滅〜 改訂版
オプショナル型。〜なんとなく付ける ! ? 撲滅〜 改訂版オプショナル型。〜なんとなく付ける ! ? 撲滅〜 改訂版
オプショナル型。〜なんとなく付ける ! ? 撲滅〜 改訂版
 
Pharo(Smalltalk)でAPI作りをはじめよう
Pharo(Smalltalk)でAPI作りをはじめようPharo(Smalltalk)でAPI作りをはじめよう
Pharo(Smalltalk)でAPI作りをはじめよう
 
Web最適化におけるデザインアプローチ
Web最適化におけるデザインアプローチWeb最適化におけるデザインアプローチ
Web最適化におけるデザインアプローチ
 
はじめてのiOSアプリ開発 ①
はじめてのiOSアプリ開発 ①はじめてのiOSアプリ開発 ①
はじめてのiOSアプリ開発 ①
 
WatchKitを実際にさわってみてわかったこと
WatchKitを実際にさわってみてわかったことWatchKitを実際にさわってみてわかったこと
WatchKitを実際にさわってみてわかったこと
 
Apple審査を一発通過! iOS開発経験0でも出来る じげん流Swift開発のすべて
Apple審査を一発通過!iOS開発経験0でも出来るじげん流Swift開発のすべてApple審査を一発通過!iOS開発経験0でも出来るじげん流Swift開発のすべて
Apple審査を一発通過! iOS開発経験0でも出来る じげん流Swift開発のすべて
 

En vedette

upgrade debian ala tukang nggame
upgrade debian ala tukang nggame upgrade debian ala tukang nggame
upgrade debian ala tukang nggame tukang nggame
 
Miniquest Bat Egiteko Tutoriala
Miniquest Bat Egiteko TutorialaMiniquest Bat Egiteko Tutoriala
Miniquest Bat Egiteko TutorialaAitor Pagalday
 
Conflicto Arabe Israeli GD
Conflicto Arabe Israeli GDConflicto Arabe Israeli GD
Conflicto Arabe Israeli GDmonoav
 
Problemasdolor
ProblemasdolorProblemasdolor
Problemasdolorjessi
 
數位相機基本原理介紹
數位相機基本原理介紹數位相機基本原理介紹
數位相機基本原理介紹陳建浩 cristian
 
山西 那些超乎我 想象的美景
山西 那些超乎我 想象的美景山西 那些超乎我 想象的美景
山西 那些超乎我 想象的美景gueste4a1eb1
 
1611 501 Wie Is Rijk & Wie Is Arm
1611 501 Wie Is Rijk & Wie Is Arm1611 501 Wie Is Rijk & Wie Is Arm
1611 501 Wie Is Rijk & Wie Is ArmRejoiceNow
 
ColegioN° 13 R Moyano
ColegioN° 13 R MoyanoColegioN° 13 R Moyano
ColegioN° 13 R Moyanosilperisa
 
Socialdemokraternas Internationella Program
Socialdemokraternas Internationella ProgramSocialdemokraternas Internationella Program
Socialdemokraternas Internationella ProgramSocialdemokraterna
 
Observatorio Social Amazonico Junio 2009 UNFV
Observatorio Social Amazonico Junio 2009 UNFVObservatorio Social Amazonico Junio 2009 UNFV
Observatorio Social Amazonico Junio 2009 UNFVMajed Velasquez
 
La primavera
La primaveraLa primavera
La primaveraJoseLuis
 
Mid Presentation 2009
Mid Presentation 2009Mid Presentation 2009
Mid Presentation 2009peryair
 

En vedette (20)

upgrade debian ala tukang nggame
upgrade debian ala tukang nggame upgrade debian ala tukang nggame
upgrade debian ala tukang nggame
 
Miniquest Bat Egiteko Tutoriala
Miniquest Bat Egiteko TutorialaMiniquest Bat Egiteko Tutoriala
Miniquest Bat Egiteko Tutoriala
 
戰爭與和平
戰爭與和平戰爭與和平
戰爭與和平
 
Student Art
Student ArtStudent Art
Student Art
 
Conflicto Arabe Israeli GD
Conflicto Arabe Israeli GDConflicto Arabe Israeli GD
Conflicto Arabe Israeli GD
 
Problemasdolor
ProblemasdolorProblemasdolor
Problemasdolor
 
數位相機基本原理介紹
數位相機基本原理介紹數位相機基本原理介紹
數位相機基本原理介紹
 
Pasos para subir una presentación a tu blog
Pasos para subir una presentación a tu blogPasos para subir una presentación a tu blog
Pasos para subir una presentación a tu blog
 
山西 那些超乎我 想象的美景
山西 那些超乎我 想象的美景山西 那些超乎我 想象的美景
山西 那些超乎我 想象的美景
 
Mother and doughter
Mother and doughterMother and doughter
Mother and doughter
 
1611 501 Wie Is Rijk & Wie Is Arm
1611 501 Wie Is Rijk & Wie Is Arm1611 501 Wie Is Rijk & Wie Is Arm
1611 501 Wie Is Rijk & Wie Is Arm
 
ColegioN° 13 R Moyano
ColegioN° 13 R MoyanoColegioN° 13 R Moyano
ColegioN° 13 R Moyano
 
Guida Come Creare Una Web Tv A Costo Zero
Guida Come Creare Una Web Tv A Costo ZeroGuida Come Creare Una Web Tv A Costo Zero
Guida Come Creare Una Web Tv A Costo Zero
 
Suhtlus võrgus
Suhtlus võrgusSuhtlus võrgus
Suhtlus võrgus
 
Socialdemokraternas Internationella Program
Socialdemokraternas Internationella ProgramSocialdemokraternas Internationella Program
Socialdemokraternas Internationella Program
 
Observatorio Social Amazonico Junio 2009 UNFV
Observatorio Social Amazonico Junio 2009 UNFVObservatorio Social Amazonico Junio 2009 UNFV
Observatorio Social Amazonico Junio 2009 UNFV
 
La primavera
La primaveraLa primavera
La primavera
 
Visita 1
Visita 1Visita 1
Visita 1
 
Mid Presentation 2009
Mid Presentation 2009Mid Presentation 2009
Mid Presentation 2009
 
ou9p
ou9pou9p
ou9p
 

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

Rubymotionはオススメか?
Rubymotionはオススメか?Rubymotionはオススメか?
Rubymotionはオススメか?Junya Ishihara
 
20120316 designerworkshoppublished
20120316 designerworkshoppublished20120316 designerworkshoppublished
20120316 designerworkshoppublishedYoichiro Sakurai
 
RubyMotionを1週間 触ってみた印象
RubyMotionを1週間 触ってみた印象RubyMotionを1週間 触ってみた印象
RubyMotionを1週間 触ってみた印象Tatsuya Tobioka
 
苫小牧高専 ソフトウェアテクノロジー部 Rubyで遊ぼう 1
苫小牧高専 ソフトウェアテクノロジー部 Rubyで遊ぼう 1苫小牧高専 ソフトウェアテクノロジー部 Rubyで遊ぼう 1
苫小牧高専 ソフトウェアテクノロジー部 Rubyで遊ぼう 1Takuya Mukohira
 
Coq for Moblie Phone @ ML名古屋
Coq for Moblie Phone @ ML名古屋Coq for Moblie Phone @ ML名古屋
Coq for Moblie Phone @ ML名古屋Hiroki Mizuno
 
HTML5ハイブリッド アプリ開発実践編
HTML5ハイブリッド アプリ開発実践編HTML5ハイブリッド アプリ開発実践編
HTML5ハイブリッド アプリ開発実践編Monaca
 
iQONの開発手法 at iQONエンジニアセミナー
iQONの開発手法 at iQONエンジニアセミナーiQONの開発手法 at iQONエンジニアセミナー
iQONの開発手法 at iQONエンジニアセミナーImamura Masayuki
 
iPhone/Android アプリをまとめて省エネ開発する技術
iPhone/Android アプリをまとめて省エネ開発する技術iPhone/Android アプリをまとめて省エネ開発する技術
iPhone/Android アプリをまとめて省エネ開発する技術vaccho
 
開発技術対決! Dots.カンファレンス エキシビジョン iOS代表
開発技術対決! Dots.カンファレンス エキシビジョン iOS代表開発技術対決! Dots.カンファレンス エキシビジョン iOS代表
開発技術対決! Dots.カンファレンス エキシビジョン iOS代表yohei sugigami
 
Ruby motion
Ruby motionRuby motion
Ruby motionjewel12
 
Objective-Cプログラマのためのswift導入法
Objective-Cプログラマのためのswift導入法Objective-Cプログラマのためのswift導入法
Objective-Cプログラマのためのswift導入法Tomoki Hasegawa
 
Silverlight+COMにチャレンジ
Silverlight+COMにチャレンジSilverlight+COMにチャレンジ
Silverlight+COMにチャレンジYou&I
 
Tokyo ruby kaigi 10 (sogabe)
Tokyo ruby kaigi 10 (sogabe)Tokyo ruby kaigi 10 (sogabe)
Tokyo ruby kaigi 10 (sogabe)Takashi Sogabe
 
SwiftによるiOS開発再入門
SwiftによるiOS開発再入門SwiftによるiOS開発再入門
SwiftによるiOS開発再入門Tomoki Hasegawa
 
ハイブリッドアプリについて-PhoneGapアプリ制作の入り口-
ハイブリッドアプリについて-PhoneGapアプリ制作の入り口-ハイブリッドアプリについて-PhoneGapアプリ制作の入り口-
ハイブリッドアプリについて-PhoneGapアプリ制作の入り口-Yossy Taka
 

Similaire à RubyKaigi2009 - RubyをつかったiPhoneアプリケーション開発 (20)

Rubymotionはオススメか?
Rubymotionはオススメか?Rubymotionはオススメか?
Rubymotionはオススメか?
 
20120316 designerworkshoppublished
20120316 designerworkshoppublished20120316 designerworkshoppublished
20120316 designerworkshoppublished
 
RubyMotionを1週間 触ってみた印象
RubyMotionを1週間 触ってみた印象RubyMotionを1週間 触ってみた印象
RubyMotionを1週間 触ってみた印象
 
苫小牧高専 ソフトウェアテクノロジー部 Rubyで遊ぼう 1
苫小牧高専 ソフトウェアテクノロジー部 Rubyで遊ぼう 1苫小牧高専 ソフトウェアテクノロジー部 Rubyで遊ぼう 1
苫小牧高専 ソフトウェアテクノロジー部 Rubyで遊ぼう 1
 
Phone gap + monaca
Phone gap + monacaPhone gap + monaca
Phone gap + monaca
 
Introduction of Rhodes
Introduction of RhodesIntroduction of Rhodes
Introduction of Rhodes
 
Coq for Moblie Phone @ ML名古屋
Coq for Moblie Phone @ ML名古屋Coq for Moblie Phone @ ML名古屋
Coq for Moblie Phone @ ML名古屋
 
HTML5ハイブリッド アプリ開発実践編
HTML5ハイブリッド アプリ開発実践編HTML5ハイブリッド アプリ開発実践編
HTML5ハイブリッド アプリ開発実践編
 
iQONの開発手法 at iQONエンジニアセミナー
iQONの開発手法 at iQONエンジニアセミナーiQONの開発手法 at iQONエンジニアセミナー
iQONの開発手法 at iQONエンジニアセミナー
 
2015 12-19-ruby rails
2015 12-19-ruby rails2015 12-19-ruby rails
2015 12-19-ruby rails
 
iPhone/Android アプリをまとめて省エネ開発する技術
iPhone/Android アプリをまとめて省エネ開発する技術iPhone/Android アプリをまとめて省エネ開発する技術
iPhone/Android アプリをまとめて省エネ開発する技術
 
開発技術対決! Dots.カンファレンス エキシビジョン iOS代表
開発技術対決! Dots.カンファレンス エキシビジョン iOS代表開発技術対決! Dots.カンファレンス エキシビジョン iOS代表
開発技術対決! Dots.カンファレンス エキシビジョン iOS代表
 
Ruby motion
Ruby motionRuby motion
Ruby motion
 
Objective-Cプログラマのためのswift導入法
Objective-Cプログラマのためのswift導入法Objective-Cプログラマのためのswift導入法
Objective-Cプログラマのためのswift導入法
 
2015 07-04-ruby rails
2015 07-04-ruby rails2015 07-04-ruby rails
2015 07-04-ruby rails
 
Trunk0125資料
Trunk0125資料Trunk0125資料
Trunk0125資料
 
Silverlight+COMにチャレンジ
Silverlight+COMにチャレンジSilverlight+COMにチャレンジ
Silverlight+COMにチャレンジ
 
Tokyo ruby kaigi 10 (sogabe)
Tokyo ruby kaigi 10 (sogabe)Tokyo ruby kaigi 10 (sogabe)
Tokyo ruby kaigi 10 (sogabe)
 
SwiftによるiOS開発再入門
SwiftによるiOS開発再入門SwiftによるiOS開発再入門
SwiftによるiOS開発再入門
 
ハイブリッドアプリについて-PhoneGapアプリ制作の入り口-
ハイブリッドアプリについて-PhoneGapアプリ制作の入り口-ハイブリッドアプリについて-PhoneGapアプリ制作の入り口-
ハイブリッドアプリについて-PhoneGapアプリ制作の入り口-
 

Dernier

モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 

Dernier (8)

モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 

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

  • 2. Agenda • 自己紹介 • iPhoneアプリケーション開発とは? • Ruby for iPhone • RubyCocoa for iPhone • その他のRubyをつかった開発環境 • まとめ
  • 4. 自己紹介 • 森 琢磨 (もりたくま) a.k.a. takuma104
  • 5. 自己紹介 • 森 琢磨 (もりたくま) a.k.a. takuma104 • 仕事では映像関連システムの受託開発を行って きました。モバイル関連開発も。 • 最近フリーランスのプログラマになりました • iPhoneアプリ開発関連を中心に行っていま す。開発だけでなく、コンサルティングとか もやってます。
  • 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. 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. iPhone アプリ開発 ここでiPhoneSDKの開発者を 聞く ・すでに開発してる人 ・アプリをAppStoreで出して る人
  • 9. iPhone? • いわゆる組み込み系 (デスクトップではない的 な意味で) • OS/Frameworkはモダン (BSDをベースとした OSXをベースとした iPhone OS) • ハードウエア的には、10年ぐらい前のPCレベル になってきている (ARM11 400MHz程度) • →じゃあ16歳のRubyは動くよね
  • 10. iPhoneアプリ? • iPhone / iPod touch用のiPhone OS上のネイティ ブアプリケーション • 配布環境が特徴的で、Appleが公式に用意する AppStoreというのがある。開発用であれば AppStore通さないでももちろんOK(ただし binary配布が難しい)。 • AppStoreでは、無料でも配布できるし、有料で も販売できる (¥115-¥115,000) • SDKがあって(Macで)簡単に開発を始められる
  • 11. SDK(Xcode)による普通の開発 • ObjectiveCでコードを書く ← Rubyのがいい! • シミュレーターである程度動作させる • パフォーマンスの確認とか一部のハードウエ アの確認とかはできない • ある程度動いたら実機で動作確認 • 転送&アプリ起動に10秒程度かかる ← これが 遅いのでなんとかしたい!
  • 13. iPhone OS で Ruby を動かす • RubyをiPhone実機で動かす歴史がすでに • 検索すると、 初代iPhoneのころ (iPhone OS1.xの時代)に、Jailbreak環境にて動作させ るのを試みた人がけっこう居た形跡がある • が irb が動かないでクラッシュする → 捨ての 方向 → もったいない!
  • 14. iPhone OS で Ruby を動かす (cont.) • パッチを書いたらすんなりSDKでBuildが通る • テスト(samples/test.rb)も8割方通過 • なんか動いたっぽい
  • 15. iPhone OS で Ruby を動かす (cont.) • ところが irb がやっぱり実機で動かない • どうやらsignalを内部で使用している部分 (sigsetmask(3)など) でそのまま落ちることが 判明 (iPhone OSではSignalが一切使用不可)。 • signalを使わないようにしてbuild (パッチ当て も含めて)、irb (正確には IRBモジュール) も動 作させることができた
  • 16. irb for iPhone http://github.com/takuma104/iphone-irb/tree/master
  • 19. AppStore審査 • AppStoreでアプリを配布(販売)するに は、AppStoreでの審査を通過する必要がある • 規約があり、その規約に従ってないものについ てはRejectされる。(理由についての詳細は教え てもらえないことも多い) • この規約の中には、スクリプト言語についても 言及されている箇所がある。それは…
  • 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. 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. 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. まとめると • インタプリタ自体が禁止されている訳ではない はず。 • 申請時にすべてのスクリプトをアプリ内に内蔵 し、スクリプトコードをダウンロードして解釈 するような形にしなければOKなはず。
  • 24. まとめると • インタプリタ自体が禁止されている訳ではない はず。 • 申請時にすべてのスクリプトをアプリ内に内蔵 し、スクリプトコードをダウンロードして解釈 するような形にしなければOKなはず。 • ……あれ??
  • 26. RubyCocoa for iPhone • Rubyがどうやら動いたので、普通のiPhoneアプ リをRubyCocoaで書けないか? • libffiが使われてない最も新しいversionである 0.4.2 (5年ぐらい前のもの)をベースに移植作業 を行った • 移植作業:ObjC RuntimeまわりのAPIが変更に なっているための対応を行うなど • → UIKitを含むObjCのクラスをRubyから使用可 能に
  • 27. RubyCocoa for iPhone Demo • HelloWorld • RemoteIRB その1 • 上記のHelloWorldについて、動作中のアプリ に、telnet接続し、挙動を動的に変更する • RemoteIRB その2 • ObjCで書かれたアプリにRubyCocoa for iPhoneを組込み、挙動を動的に変更する
  • 28. Demo
  • 29. RubyCocoa for iPhone 問題点 • ObjCに比べてどうしても(構造上)遅い • メモリ消費も実機環境 (∼20MB) を考えると、 けっこうきつい • Rubyとは言ってもObjC用のCocoaFrameworkと 似た記述になるので、記述がどうしてもRuby的 にならない面がある • AppStore審査通るかどうかは、 運次第?
  • 30. RubyCocoa for iPhone の使い所 • Rubyのみでアプリを書く • AppStore用アプリとしては、現時点ではいろ んな意味で若干チャレンジングかもしれない • ObjC + Ruby で書く • パフォーマンスを重視する部分はObjCなど • ObjCで書いて、デバック時だけ組み込んで使う • これがもっとも現実的な使い所?
  • 31. RubyCocoa for iPhone の今後? • 想定使用ターゲットをデバック専用環境として メンテ • Rubyでのアプリ作成については、そもそも RubyCocoa for iPhone ではなく、MacRuby 0.5 (ARMバイトコードが吐ける予定) を移植したい • → これなら文句無くAppStore審査も通るはず
  • 34. What s Rhodes? • Rhomobile社製 • ローカルで動くRoR(相当) for iPhone • Rubyコードで開発する • WebViewを用いて表示を行っている。Webア プリとネイティブアプリのハイブリッド • iPhone以外でもWindowsMobile, Androidなど でも開発したコードをそのまま使える • ライセンスは、LGPLv3 + 商用ライセンス
  • 35. What s Rhodes? (cont.) • Ruby1.9.1ベースで、RubyVMをアプリ本体に内 蔵し、あらかじめコンパイルしておいた Instructionを、実行時にRubyVMで解釈するこ とで、動作させている。 • 実際にAppStoreアプリとしても審査を通過して いる • 例) Issues To Go : lighthouseapp の Issue Tracker
  • 36. Issues To Go http://www.issuestogo.com/
  • 38. What s Shinycocos? • 作者は、 funkaster さん (http://rolando.cl/) • Cocos2d ライブラリの Ruby binding • Cocos2dは、iPhone用2Dグラフィックライブ ラリとしてGameアプリなどで多用されている • まずはプロトタイプ用と謳われている が、Rhodesと同じ手法でAppStore対応も計画 中のようである • ライセンスはLGPL
  • 39. Rhodes, Shinycocos IssuesToGo • Rhodes • Rhomobile社製 • ローカルで動くRoR(相当) for iPhone • Shinycocos • funkaster さん作 (http://rolando.cl/) • Cocos2d ライブラリの Ruby binding
  • 41. まとめ • RubyCocoa for iPhoneは、いまのところ、Ruby でのアプリ作成よりは、既存ObjCプロジェクト のデバックに向いている • RhodesやShinycocosなどを含め、少しづつ RubyでもiPhoneアプリ作成を作成できる環境が 整いつつある • Rubyでのアプリ作成は、次世代 MacRuby の移 植版が本命と思われる。HotCocoa for iPhoneと かも作ると面白そう。
  • 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. 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/