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