web-dev-qa-db-ja.com

RubyでネイティブのiPhoneアプリを開発できますか?

こんにちは、iPhone開発を検討していますが、Objective-Cは私の好みの言語ではありません。私が現時点で見る限り、RubyはiPhoneでのCocoa Touchとの会話には使用できません。

だから私の質問は、私は間違っていますか? iPhoneでRubyを使用してCocoa Touchアプリケーションを開発できます。そして、iPhoneでRuby?

49

いいえ、あなたは正しいです。現在、そして近い将来、おそらくAppStoreアプリケーションでは、Rubyは選択肢になりません。ジェイルブレイクした携帯電話でこれを実行できなかった理由はありませんが、Appleは公式開発のためにObjective Cにかなり結婚しています。

22
Ben Gottlieb

RubyMotion でできるようになりました

74
gimenete

IPhone OSでは、mprotect()を使用してメモリの書き込み可能なセクションを実行可能としてマークしようとすると失敗します。これにより、libffiを使用して実行時にObjective-Cメソッドハンドラーを作成するRubyCocoa(およびおそらくMacRuby)のようなブリッジが壊れます。常にそうであるとは限らなかったため、これは設計によるものだと思います。

最終的に、これはテクノロジーよりもプラットフォームの政治の問題ですが、これに対する技術的な回避策が存在します。実行時にカスタムメソッドハンドラーを生成する代わりに、必要に応じて割り当てられる再構成可能なプールをプリコンパイルし、基本的にブリッジプロセスを完全にデータ駆動型にします。私の知る限り、これはRubyCocoaやMacRubyでまだ行われていません。

考慮すべきもう1つの重要な点は、コンパイル済みのRubyおよびRubyCocoaランタイムは、コンパイル済みのObjective-Cアプリよりも大幅に大きくなる可能性があることです。これらのライブラリがiPhoneで利用可能であれば、ただし、現時点では、RubyCocoaが動作していても、配布するアプリに使用したくない場合があります。

49
Tim Burks

さまざまな言語を熟知しているプログラマーとしての方が良いでしょう。Objective-Cは良い学習機会だと考えてください。

他の言語で学んだことは、全体としてより良いプログラマーになることが多く、すでに知っている他の言語についての新しい洞察を与えることがわかりました。

rhomobile は、iPhoneでRubyコードを実行するオプションですが、本質的にはWebアプリ開発です。WebサーバーはiPhoneでローカルに実行され、Rubyコードは、標準のクライアント側Webテクノロジー(html/css/javascript)にレンダリングされます。

http://rhomobile.com/

8
pfeilbr

実際、Ruby cocoa bridgeはまったく厄介ではありません; IBのアウトレットを接続するなど、非常にスムーズに動作します。結果のコードは非常に美しいです。

IPhoneの開発に関しては、公式のAppStoreアプリケーションが必要な場合、残念ながら運がありません。 Apple iPhoneはObj-C/Cocoa Touchであり、SDKライセンスには、彼らがwillのアプリを拒否することの1つが言語インタープリター/ JITコンパイラーであるため、自分でアプリにRubyインタープリターを追加できませんでした。

話題から外れますが、陽気に、これがiPhone向けFlashがAdobeが煙を吹く理由です。 Appleのライセンスごとに、たとえ希望したとしても、AppStoreにswfプレーヤーを取得できませんでした。

7
Jon Raphaelson

3.1.3で脱獄したiPod Touch 1GにCydiaのRubyパッケージをインストールしました:

image

動作しているようです。

さて、ココアタッチについては、まったく別の話です。

4
Steven Lu

うーん、ロードス(Rhomobile)では、iPhoneや他のすべてのスマートフォンでネイティブアプリを実行できます。はい、WebUIViewコントロールを介してレンダリングを行うことを活用します。ただし、すべてのデバイス機能とローカルデータの同期を許可します。

4
Adam Blum

shinycocos をご覧ください。これは、iPhone用のObjective-Cゲームプログラミングフレームワークである cocos2d-iphone の子プロジェクトです。

まだ使っていませんが、 git README から、アプリにRuby 1.9.1がバンドルされていると推測します。

4
Radamanthus

http://www.appcelerator.com/products/titanium-mobile/ をご覧ください。「ネイティブiPhoneおよびAndroid Webテクノロジーで構築されたアプリ。」

いいですね。 ;-)

2
fro_oo

いいえ、RubyでiOSネイティブアプリを作成することはできません。 MacおよびiOS用のネイティブアプリには2つのオプションしかありません。

Objective CおよびSwift Programming Language

チュートリアル:-

Objective Cに関するAppleの公式チュートリアル

Appleの公式チュートリアルSwift Programing Language

Rubyに精通していて、RubyのみでiOSアプリを作成したい場合。 Ruby Motion 、クロスプラットフォームオプションにすることができます。しかし、それは無料ではありません。

クロスプラットフォーム

2
Mayank Jain

IPhoneアプリを作成するためにObjective-Cを使用する必要はありません。 QuickConnectiPhone、 http://sourceforge.net/projects/quickconnect/ を使用する場合、JavaScript、CSS、およびHTMLで完全に記述でき、Webアプリではなくインストール可能なアプリケーションを使用できます。

Rubyを知っていれば、おそらくJavaScriptをすでに使用しているはずです。

インストール方法、実行方法などを確認するには、tetontech.wordpress.comにアクセスしてください。

1
Lee

今は機能しないと思いますが、最終的にはMacRubyを使用してiPhoneアプリを構築できるようになると思います。 Appleはそれに多くの作業を投入しています

通常のココアアプリの構築方法を説明するADC記事へのリンク

1
Orion Edwards

現在は真ではありません。Appleはポリシーを変更し、ShinyCocosを見て、Cocos2D-iphoneゲームフレームワークのRubyバインディングです。

https://github.com/funkaster/shinycocos

0
norman784

オープンソース Ruby-Cocoaブリッジ があります。しかし、RubyとObjCの間にインピーダンスミスマッチが少しあるため、使用するのが少し面倒です。

0
Menkboy

Ruby Cocoaブリッジはおそらく動作しません。動的言語のブリッジのほとんどは、(手動またはlibffiを使用して)実行可能なサンクを生成する必要があります。そのような問題。

いずれにせよ、ブリッジを立ち上げるには、おそらくCocoa Touchアプリの作成方法を学ぶよりもObjective Cランタイムに精通する必要があり、そもそもそれを行うことのポイントを無効にしている可能性があります。

0
Louis Gerbarg