web-dev-qa-db-ja.com

iOS / Androidクロスプラットフォーム開発

私はしばらくAndroidでJavaアプリの開発に取り組んでおり、それを手に入れ始めています。ただし、iOSバージョンで開始したい場合は、すべてをゼロからコーディングする必要があります。これは、望ましくありません。

どのようなクロスプラットフォームソリューションが利用できるのか、実際にどのように機能するのかと思っていました。 Webアプリケーションについて考えてきました-おそらく jQuery Mobile または Titanium 、またはAdobe Flash/Flex/Airを使用して。また、まだMacを持っていないので、おそらく投資する必要があります。

だから私の質問:

  1. IOS/Android(および/または他のデバイス)にはどのようなクロスプラットフォーム開発環境がありますか?

  2. これらのツールでの経験は何ですか? (これは私が本当に知りたいことです)

112
Alister

免責事項:私は、クロスプラットフォームのフレームワークを作成するParticle Codeという会社で働いています。このスペースにはたくさんの会社があります。新しいものは毎週登場するようです。あなたにとって朗報です:あなたには多くの選択肢があります。

これらのフレームワークはさまざまなアプローチを採用しており、それらの多くは基本的にさまざまな問題を解決するように設計されています。一部はゲームに焦点を当てており、一部はアプリに焦点を当てています。次の質問をします。

何を書きたいですか?エンタープライズアプリケーション、個人生産性アプリケーション、パズルゲーム、一人称シューティングゲーム?

どんな開発環境が好きですか? IDEまたは通常のテキストエディタですか?

プログラミング言語について強い思いはありますか?私がよく知っているフレームワークのうち、ActionScript、C++、C#、Java、Lua、Rubyから選択できます。

私の会社はゲームの分野に詳しいので、Titanium、PhoneGap、SenchaなどのJavaScript + CSSフレームワークをあまり使用していません。しかし、ゲーム指向フレームワークのいくつかについて少しお話しできます。ゲームやリッチインターネットアプリケーションは、クロスプラットフォームフレームワークが輝く領域です。これらのアプリケーションは、視覚的に一意であり、ネイティブUIとの融合を重視する傾向があるためです。ここにいくつかのフレームワークがあります:

  • Unity www.unity3d.com は3Dゲームエンジンです。私が取り組んできた他の開発環境とはまったく異なります。3Dモデルでシーンを構築し、スクリプトをオブジェクトにアタッチして動作を定義します。 JavaScript、C#、またはBooでスクリプトを作成できます。 iOS、Android、Windows、OS X、またはコンソールで実行される3D物理ベースのゲームを作成する場合、これはおそらくあなたのためのツールです。また、3Dアセットを使用して2Dゲームを書くこともできます。これの良い例は、インディーゲームです。 Max and the Magic Marker 、Unityで書かれた2D物理ベースのサイドスクロールです。わからない場合は、チェックアウトすることをお勧めします(特にご家庭に子供がいる場合)。 Maxは、PC、Wii、iOS、およびWindows Phone 7で使用できます(ただし、UnityはWinPhoneをサポートしていないため、後者のバージョンはポートです)。 Unityには、3Dアセットとテクスチャを備えたサンプルゲームが付属しています。これは、非常に複雑な環境に対応するのに非常に役立ちます。

  • Corona www.anscamobile.com/corona は、Luaスクリプト言語を使用し、iOSおよびAndroidをサポートする2Dゲームエンジンです。 Coronaのセールスポイントは、数行のコードで物理ベースのゲームを非常に迅速に作成できることです。iOSアプリストアにあるCoronaベースのゲームの多くは、その成功の証です。環境は非常に無駄がなく、一部の人々にとって魅力的です。シミュレータとデバッガが付属しています。選択したテキストエディタを追加すると、開発環境ができます。基本SDKには、ボタンやリストボックスなどのUIコンポーネントは含まれていませんが、購読者はCoronaUIアドオンを利用できます。

  • Particle SDK www.particlecode.com は、ゲームのバックグラウンドを持つ、もう少し一般的なクロスプラットフォームソリューションです。 MVCアプリケーションモデルを使用して、JavaまたはActionScriptのいずれかで記述できます。 WYSIWYG UIエディターを備えたEclipseベースのIDEが含まれています。現在、Android、iOS、webOS、およびWindows Phone 7デバイスのビルドをサポートしています。 Web用にFlashまたはHTML5を出力することもできます。このフレームワークはもともと、ポーカーやバックギャモンなどのオンラインマルチプレイヤーソーシャルゲーム用に開発されたもので、2Dゲームや複雑なロジックを備えたアプリに適しています。このフレームワークは2Dグラフィックスをサポートし、2D物理エンジンが含まれています。

NB:

本日、Particle CodeがTitaniumクロスプラットフォームフレームワークのメーカーであるAppceleratorに買収されたことを発表しました。

...

2012年1月1日より、[Particle Code]は[Particle SDK]プラットフォームを公式にサポートしなくなります。

ソース

  • Airplay SDK www.madewithmarmalade.com は、Visual StudioまたはXcodeで開発できるC++フレームワークです。 2Dと3Dの両方のグラフィックをサポートしています。 Airplayは、iOS、Android、Bada、Symbian、webOS、およびWindows Mobile 6を対象としています。PSP用のAirPlayアプリを構築するためのアドオンもあります。私のC++は非常にさびていて、あまり遊んでいませんが、見た目はクールです。

学習曲線に関しては、Unityが最も急な学習曲線(私にとって)であり、Coronaが最も単純で、ParticleとAirplayがその中間にあると思います。

もう1つの興味深い点は、フレームワークがさまざまなフォームファクタを処理する方法です。 Coronaは、Flash開発者になじみのあるダイナミックスケーリングをサポートしています。これは非常に使いやすいですが、iPhoneのような4:3画面から新しいqHD Androidデバイスのような16:9に移行するときに、画面スペースを無駄に消費することになります。 Particle SDKのUIエディターを使用すると、スケーリングする柔軟なレイアウトを設計できますが、個々の画面サイズに合わせてレイアウトを調整することもできます。これにはもう少し時間がかかりますが、アプリを各画面用にカスタマイズしたように見せることができます。

もちろん、あなたのために働くものはあなたの個々の趣味と仕事のスタイル、そしてあなたの目標に依存します-ですから、これらのツールをいくつかダウンロードして試してみることをお勧めします。これらのツールはすべて無料で試用できます。

また、公共サービスの発表を行うことができれば、これらのツールのほとんどは非常に活発に開発されています。好きなフレームワークを見つけたら、ぜひフィードバックを送って、好きなもの、嫌いなもの、見たい機能を知らせてください。これらのツールの次のバージョンに影響を与える本当の機会があります。

お役に立てれば。

103
DocDude

MonoTouchとMonoDroidが、Attachmateのその部分に何が起こるかは誰の推測でもあります。もちろん、モノラルソリューションを使用しても、クロスプラットフォームビュー以外のビューを作成しますが、その考え方はビジネスロジックの再利用です。

http://www.xamarin.com/ に注目してください。彼らが思いついたものを見るのは面白いでしょう。

15
Derek Beattie

PhoneGap + jQuery Mobileで非常にシンプルなものを作成した私の経験は良好でした。私はiOSでそれを迅速に行うことができました。ただし、いくつかの変更を加えない限り、Android電話では機能しませんでした。このプロジェクトは、写真を撮ってWebサイトに投稿する非常にシンプルなアプリでした。そして、結局のところ、真のネイティブアプリと比較して「不格好」だと感じました。

クロスプラットフォーム開発が簡単になるとは思いません。ブラウザは、あなたが手に入れるのと同じくらい近いと思います。 PhoneGapのようなものを選択することで、1つの痛みポイントのセットを別の痛みポイントのセットに交換しているだけだと思います。

11
Evan

クロスプラットフォーム開発に本格的なフレームワークを使用したくない場合は、C++をオプションとして見てください。 iOSは、Objective-C++を介したアプリケーションロジックでのC++の使用を完全にサポートしています。 AndroidのNDKによるC++のサポートが、パフォーマンスクリティカルなコードスニペットだけでなく、C++でのビジネスロジックの実行にどの程度適しているかはわかりませんが、そのユースケースが十分にサポートされている場合は、試してみることができます。

もちろん、このアプローチは、ユーザーインターフェースをプラットフォームごとに個別に作成する必要があるため、アプリケーションロジックがプロジェクトの大部分を構成する場合にのみ意味があります。

実際のところ、C++は(Cを除く)最も広くサポートされている単一のプログラミング言語であるため、ほとんどの大規模なクロスプラットフォームアプリケーションのコア言語です。

7
yeoman

私は開発のこの領域を検討し始めたばかりですが、この基本的な違いに帰着すると思います:いくつかのツールは元のコードを保持し、いくつかはネイティブへの移植...

たとえば、PhoneGapは、作成したHTML/CSS/JSコードを保持し、アプリとして認定するのに十分なiOSコードでラップしますが、AppceleratorはXCodeプロジェクトを提供します... PhoneGapよりも実際にはメリットはありませんが、DO少し知っていれば、より大きなコーディング作業の後にネイティブバージョンを微調整することができる可能性があります。 。

私は自分でappceleratorを使用したことはありませんが、数週間前にプロジェクトに取り組み、そこでチームメンバーの1人が約24時間でiPadアプリ全体を作成しました。

そして、はい、実際にAppleに提出するには、Macを取得する必要がありますが、それがあなたの主要な作業プラットフォームではない場合、あなたは安く行くことができます。

5
Robot Woods

LUAを使用したことがある場合は、Corona SDKでIOSおよびAndroidで実行されるアプリを作成してみてください。

http://developer.anscamobile.com/

私はそれをダウンロードし、いくつかの周りを台無しにしました、私はLUAが通常のスクリプト言語の手間/制限なしでスクリプト言語を学ぶことは非常に簡単だと思います...

3
Jeff

カプチーノ または PhoneGap

ただし、ショートカットを見つけようとしても、時間を節約したり、同等の最終製品を提供したりできない場合があります。

3
SK9

MoSync Mobile SDK もあります

GPLおよび商用ライセンス。彼らのアプローチの良い概要があります こちら

3
Roger Dahl

また、過去18か月間使用しており、いくつかのゲームをリリースしたBatteryTechもあります。 http://www.batterypoweredgames.com/batterytech

すべてのC++、AndroidおよびiOSサポート、すべてのユーザーは完全なソースを取得します。新しいv2にはluaバインディングが含まれています。

2
Rob