こんにちは、iPhone開発を検討していますが、Objective-Cは私の好みの言語ではありません。私が現時点で見る限り、RubyはiPhoneでのCocoa Touchとの会話には使用できません。
だから私の質問は、私は間違っていますか? iPhoneでRubyを使用してCocoa Touchアプリケーションを開発できます。そして、iPhoneでRuby?
いいえ、あなたは正しいです。現在、そして近い将来、おそらくAppStoreアプリケーションでは、Rubyは選択肢になりません。ジェイルブレイクした携帯電話でこれを実行できなかった理由はありませんが、Appleは公式開発のためにObjective Cにかなり結婚しています。
RubyMotion でできるようになりました
IPhone OSでは、mprotect()を使用してメモリの書き込み可能なセクションを実行可能としてマークしようとすると失敗します。これにより、libffiを使用して実行時にObjective-Cメソッドハンドラーを作成するRubyCocoa(およびおそらくMacRuby)のようなブリッジが壊れます。常にそうであるとは限らなかったため、これは設計によるものだと思います。
最終的に、これはテクノロジーよりもプラットフォームの政治の問題ですが、これに対する技術的な回避策が存在します。実行時にカスタムメソッドハンドラーを生成する代わりに、必要に応じて割り当てられる再構成可能なプールをプリコンパイルし、基本的にブリッジプロセスを完全にデータ駆動型にします。私の知る限り、これはRubyCocoaやMacRubyでまだ行われていません。
考慮すべきもう1つの重要な点は、コンパイル済みのRubyおよびRubyCocoaランタイムは、コンパイル済みのObjective-Cアプリよりも大幅に大きくなる可能性があることです。これらのライブラリがiPhoneで利用可能であれば、ただし、現時点では、RubyCocoaが動作していても、配布するアプリに使用したくない場合があります。
さまざまな言語を熟知しているプログラマーとしての方が良いでしょう。Objective-Cは良い学習機会だと考えてください。
他の言語で学んだことは、全体としてより良いプログラマーになることが多く、すでに知っている他の言語についての新しい洞察を与えることがわかりました。
rhomobile は、iPhoneでRubyコードを実行するオプションですが、本質的にはWebアプリ開発です。WebサーバーはiPhoneでローカルに実行され、Rubyコードは、標準のクライアント側Webテクノロジー(html/css/javascript)にレンダリングされます。
実際、Ruby cocoa bridgeはまったく厄介ではありません; IBのアウトレットを接続するなど、非常にスムーズに動作します。結果のコードは非常に美しいです。
IPhoneの開発に関しては、公式のAppStoreアプリケーションが必要な場合、残念ながら運がありません。 Apple iPhoneはObj-C/Cocoa Touchであり、SDKライセンスには、彼らがwillのアプリを拒否することの1つが言語インタープリター/ JITコンパイラーであるため、自分でアプリにRubyインタープリターを追加できませんでした。
話題から外れますが、陽気に、これがiPhone向けFlashがAdobeが煙を吹く理由です。 Appleのライセンスごとに、たとえ希望したとしても、AppStoreにswfプレーヤーを取得できませんでした。
3.1.3で脱獄したiPod Touch 1GにCydiaのRubyパッケージをインストールしました:
動作しているようです。
さて、ココアタッチについては、まったく別の話です。
うーん、ロードス(Rhomobile)では、iPhoneや他のすべてのスマートフォンでネイティブアプリを実行できます。はい、WebUIViewコントロールを介してレンダリングを行うことを活用します。ただし、すべてのデバイス機能とローカルデータの同期を許可します。
shinycocos をご覧ください。これは、iPhone用のObjective-Cゲームプログラミングフレームワークである cocos2d-iphone の子プロジェクトです。
まだ使っていませんが、 git README から、アプリにRuby 1.9.1がバンドルされていると推測します。
http://www.appcelerator.com/products/titanium-mobile/ をご覧ください。「ネイティブiPhoneおよびAndroid Webテクノロジーで構築されたアプリ。」
いいですね。 ;-)
いいえ、RubyでiOSネイティブアプリを作成することはできません。 MacおよびiOS用のネイティブアプリには2つのオプションしかありません。
Objective CおよびSwift Programming Language
チュートリアル:-
Objective Cに関するAppleの公式チュートリアル
Appleの公式チュートリアルSwift Programing Language
Rubyに精通していて、RubyのみでiOSアプリを作成したい場合。 Ruby Motion 、クロスプラットフォームオプションにすることができます。しかし、それは無料ではありません。
クロスプラットフォーム
IPhoneアプリを作成するためにObjective-Cを使用する必要はありません。 QuickConnectiPhone、 http://sourceforge.net/projects/quickconnect/ を使用する場合、JavaScript、CSS、およびHTMLで完全に記述でき、Webアプリではなくインストール可能なアプリケーションを使用できます。
Rubyを知っていれば、おそらくJavaScriptをすでに使用しているはずです。
インストール方法、実行方法などを確認するには、tetontech.wordpress.comにアクセスしてください。
今は機能しないと思いますが、最終的にはMacRubyを使用してiPhoneアプリを構築できるようになると思います。 Appleはそれに多くの作業を投入しています
現在は真ではありません。Appleはポリシーを変更し、ShinyCocosを見て、Cocos2D-iphoneゲームフレームワークのRubyバインディングです。
オープンソース Ruby-Cocoaブリッジ があります。しかし、RubyとObjCの間にインピーダンスミスマッチが少しあるため、使用するのが少し面倒です。
Ruby Cocoaブリッジはおそらく動作しません。動的言語のブリッジのほとんどは、(手動またはlibffiを使用して)実行可能なサンクを生成する必要があります。そのような問題。
いずれにせよ、ブリッジを立ち上げるには、おそらくCocoa Touchアプリの作成方法を学ぶよりもObjective Cランタイムに精通する必要があり、そもそもそれを行うことのポイントを無効にしている可能性があります。