web-dev-qa-db-ja.com

クロスプラットフォームモバイルアプリケーションの開発

ますます多くのモバイルプラットフォームが発売されており、開発者はSDKを利用できます。 Android、iOS、Moblin、Windows mobile 7、RIM、symbian、bada、maemoなど、さまざまなモバイルプラットフォームが利用可能です。

クロスプラットフォームアプリケーションの作成は、開発者にとって頭痛の種です。すべてのプラットフォームにアプリケーションを移植したい開発者に役立つプラットフォーム全体の共通事項を探しています。 diff画面の解像度、入力方法、オープンglサポートなどと同様に、プラットフォームについて知っている詳細を共有してください。

または、HTML(ウィジェットの種類)でコードを記述し、それをネイティブアプリケーションにロードすることにより、可能性があります。 setContentView(view)を呼び出すことでWebビューをアプリケーションに追加できるAndroidについて知っています

知っているさまざまな種類のプラットフォームのネイティブアプリケーションにhtmlビューを追加できるクラスの詳細を共有してください。

このスレッドの目的は、開発者間で共通の詳細を共有することです。コミュニティWikiとしてマーク。

クロスプラットフォームツールとライブラリ

108
sohilv

私の答え クロスプラットフォームツールの技術的な制限のいくつかをカバーしています しかし、少し拡張させてください:

クロスプラットフォームのツールは、哲学的な焦点が間違っているため、歴史的に常にそうであったと思います。

クロスプラットフォームツールのセールスポイントはすべて、開発者にもたらすメリットです。彼らはdevelopersが一度だけ実行することを許可するという考えで販売されています。彼らはdevelopersが新しいAPIを学ぶことなく市場を拡大できるという考えに基づいて販売されています。彼らはdevelopersがコストと市場投入までの時間を削減できるという考えに基づいて販売されています。

クロスプラットフォームツールとは[〜#〜] not [〜#〜]で販売されているのはエンドユーザーにもたらす利益

クロスプラットフォーム開発がエンドユーザーにとってめったにメリットにならないため、エンドユーザーにとってのメリットはセールスポイントではありません。エンドユーザーは、製品を市場に投入するために開発者がどれだけ努力しなければならないかを気にしません。また、1つのプラットフォームのみを使用する場合にアプリを実行できるプラットフォームの数も気にしません。彼らは、アプリを実行するために必要なハードウェア上でアプリが必要なことをするかどうかだけを気にします。多くの異なるプラットフォームでアプリを実行する特定のニーズがない限り、それが実際に価値をもたらすことはありません。

逆に、クロスプラットフォームAPIを作成することの避けられない妥協は、APIによって作成されたすべてのアプリがすべてのプラットフォームで最高Bグレードになることを意味します。各プラットフォームで使用するのに最適なツールになることはありません。

これは、ほとんどのユースケースで、クロスプラットフォームツールがエンドユーザーに、プラットフォーム固有のAPIで作成されたものと比較して劣った製品を提供することを意味します。エンドユーザーには常により良い選択肢があります。

エンドユーザーに最も便利なツールを提供することで、長期的に収益を上げることができます。エンドユーザーの生活をより簡単に、生産的にすることに哲学的に集中しなければ、最初から運命づけられています。エンドユーザーには多くの選択肢がありますが、ツールが最高のものではない場合、市場に出ることはできません。

「ユーザーが多くの異なるプラットフォームでこのアプリを実行することで本当に恩恵を受ける」と思う場合にのみ、クロスプラットフォームツールを使用する必要があります。 (開発者)の生活を楽にするためだけにクロスプラットフォームツールを検討し始めた場合、間違った理由でツールを選んでしまい、彼らが助けてくれる以上にあなたを傷つけてしまいます。

95
TechZen

モバイルデバイスでのクロスプラットフォーム開発には、いくつかのアプローチがあります。もちろん、それらにはすべて制限があります。ネイティブアプリケーションのようにデバイスのすべての機能を利用できるソリューションはありません。

コードの再利用

すべてのモバイルOSが同じ開発言語とAPIを使用するわけではありませんが、一部のクラスまたはロジック層コードを共有できる場合があります。

たとえば、C++はおそらく再利用できます iOSアプリケーションの場合 、Androidアプリの場合は [〜#〜] ndk [〜# 〜] 、C++などで開発されているSymbianアプリの場合.

一部のソリューションでは、デバイスで通常使用される言語以外の言語でアプリを作成することもできます。最も有名な(実際に私が知っている唯一のもの)は商用で、 Monoプロジェクト (C#開発)に基づいています:

しかし、デバイスによってはコードの再利用が制限されているため、このクロスプラットフォーム開発を本当に呼べるかどうかはわかりません。

  • Windows Phone 7は、ネイティブコードの開発を許可しません(今後のアップデートで)
  • AFAIKモノのようなプロジェクトは、すべてのプラットフォーム(まだ?)のbada、webOS、maemoなどには存在しません。

また、UIパーツも各デバイスに固有のままです。

ウェブ開発

モバイル向けのクロスプラットフォーム開発について尋ねるときの定期的な答えは、Web開発です。次に、モバイルブラウザを使用してネイティブアプリケーションのように表示および動作させるためのラッパーが必要になります。これが、これから作業を進めるクロスプラットフォームフレームワークの一部です。

HTML5の台頭により、ジオロケーション、オフラインアプリケーション、ローカルストレージなどのネイティブアプリケーションでしか実行できなかったWeb開発機能がもたらされます。

最新のWeb標準HTML5、CSS3、JSを活用することで、ネイティブのルックアンドフィールを備えたモバイル向けWebアプリケーションを開発するためのフレームワークを見つけることができます。

しかし、HTML5はまだ非常に若く、実装はブラウザによって異なる場合があります。ほとんどのデフォルトのモバイルブラウザーはWebKitエンジンを使用し(Internet Explorerを使用するWindowsモバイル/電話の主な例外)、それでも必ずしも 同じ機能をサポートする とは限りません。ローカルデータベースはまだ扱いにくいため、さまざまなブラウザでどのように実装されるかはわかりません。さらに、HTML5を使用しても、ネイティブアプリに比べてWeb開発は非常に制限されます。連絡先、カメラ、加速度計などにアクセスできません。

編集:今月初め、W3CはHTML5の進化についていくつかの警告を出しました: Article from ZDNet

そのため、限られたカテゴリのアプリケーションにのみ適しています。

クロスプラットフォームフレームワーク

そして、クロスプラットフォームのモバイルアプリケーションフレームワークがあります。おそらく一度開発すれば、異なるプラットフォームにデプロイできます。これらのソリューションは通常、iOSとAndroidに焦点を当て、WebKitエンジンに依存しています。Webテクノロジーを使用した開発中に電話機能との相互作用を提供します。最もよく知られているのはAppcelerator Titanium。しかし、他の多くのツールが世に出ており、すべてのコードが目的のプラットフォーム用にコンパイルする前にコードを独自の中間言語に変換するMoSyncなどの同じ手法を使用しているわけではありません。

[1] Appleには、プラットフォーム用に作成されたアプリに関する 特別なポリシー があります。現時点では、これらのアプリをブロックしているようには見えませんが、考慮されます。 編集:Appleは変更されました このポリシー 9月9日以降.

14
Jla

Webapp(上記のようにhtml5)としてデプロイする場合、いくつかの共通点がありますが、リッチネイティブアプリの場合、APIはさまざまなスマートフォンで完全に異なります。

HTML5は多少改善するかもしれませんが、興味深いことをするためにはネイティブにする必要があります。

Phonegapなどの「クロスプラットフォーム」のスマートフォンフレームワークがありますが、それを「実際の」作業に使用することについてほとんど悪いことを聞きました。 (オーバーヘッドなど)

6
seand

はい、html5が注目を集めています。また、このコンソーシアムとプラットフォームを見て、第4四半期に来る必要があります。大きなプロジェクトのように聞こえるので、そのプロジェクトの成功についてはわかりませんが、詳細は次のとおりです。

ウェブサイト: http://www.wholesaleappcommunity.com/default.aspx

ニュース: http://news.google.de/news/search?aq=f&pz=1&cf=all&ned=us&hl=en&q=%22Wholesale+Applications+Community%22

WACは、SDKの初期仕様とコンポーネントを11月に開発者に公開することを目指しています。この仕様はW3C標準に基づいており、リッチモバイルWebアプリケーションを開発するための強力なプラットフォームを作成します。 WACは、現在のJILおよびBONDI仕様に基づいてデバイスの下位互換性も提供します。 ( http://www.convergedigest.com/Bandwidth/newnetworksarticle.asp?ID=31021

それは、ISすべての開発者に開かれ、すべての携帯電話ユーザーに販売するプラットフォームを作成することを目指している約25の通信会社の国際連合です。( http://www.downloadsquad。 com/2010/02/15/atandt-wholesale-applications-community-is-a-platform-not-an-app /

5
Mathias Conradt

私の知る限り、これらのデバイスのほとんどはこれを実行できます:

Java ME-モバイルデバイス向けの最もユビキタスなアプリケーションプラットフォーム

これは良い例と悪い例の両方に役立つと思います。

1
Fozi