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


109

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

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

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

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

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

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

  • XMLVM、Codename One、iSpectrum(AndroidアプリからJavaコードをクロスコンパイルするか、ゼロから作成する

  • 電話ギャップ(クロスプラットフォームモバイルアプリ)

  • チタン(Webテクノロジーを使用してネイティブのモバイルおよびデスクトップアプリを構築するため)

  • モノタッチ(iPhone用C#)

  • rhomobile- http: //rhomobile.com/ サンプルはこちら:http : //github.com/rhomobile/rhodes-system-api-samples

  • Sencha Touch-Sencha TouchはHTML5モバイルアプリフレームワークであり、Apple iOSおよびGoogle AndroidタッチスクリーンデバイスでネイティブなルックアンドフィールのWebアプリを開発できます。http://www.sencha.com/products/touch/

  • Corona-Iphone / Ipad / Androidアプリケーションクロスプラットフォームライブラリ。すごすぎる。 http://anscamobile.com/corona/

  • 既存のAndroidアプリをWindows Phone 7に移植するためのガイド http://windowsphone.interoperabilitybridges.com/articles/windows-phone-7-guide-for-iphone-application-developers

  • スマートフォンとタブレット向けのjqueryモバイルタッチ向けに最適化されたWebフレームワーク

1
このスレッドに関連する興味深いスレッドを1つ見つけましたが、stackoverflow.com
questions / 3326110 /…

:クロスプラットフォームのDEVについては、別の良いポストstackoverflow.com/questions/51988/...
sohilv

1
これを複製として閉じることを投票しました。これは2つの質問に分けるにはあまりにも重要です。stackoverflow.com/questions/51988/...
ripper234

回答:


97

ここでの私の回答は、クロスプラットフォームツールの技術的な制限の一部をカバーしていますが、少し拡張させてください。

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

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

クロスプラットフォームツールが販売されていないの、エンドユーザーにもたらすメリットです

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

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

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

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

クロスプラットフォームツールは、「ユーザーがこのアプリをさまざまなプラットフォームで実行することで本当にメリットを得られる」と思った場合にのみ使用してください。(開発者の)生活を楽にするだけの理由でクロスプラットフォームツールを検討し始めた場合、間違った理由でそれらを選んだので、役立つよりも害を及ぼすことになります。


52
開発者の作業が(不必要に)大幅に少なくなるということは、更新サイクルの高速化、新機能の高速化、バグ修正の高速化などを意味します。同じ労働力でより多くを達成することができます。これはエンドユーザーにとってのメリットと考えています。
schoetbi

10
理論的には、エンドユーザーにとっては開発が速いほど良いかもしれませんが、それはほとんどのクロスプラットフォームAPIの哲学的根拠ではありません。私は多くの環境でそのようなツールを使用しようとする多くの試みを見てきましたが、最終製品の品質を犠牲にして、開発者の生活をより簡単にすることに常に焦点を当てています。さらに、より速くより安いという約束はめったにうまくいきません。いつもどこかで節約された時間の大部分を食べるショー停止ヒッチがあるようです。
TechZen

5
私の要点を理解するために、これを考慮してください。クロスプラットフォームAPIは、ハードウェアとOSのさまざまなクラスに存在します。個人的に定期的に使用しているクロスプラットフォームアプリはいくつありますか?よく考えたクロスプラットフォームアプリをいくつ使用しましたか?人々は複数のプラットフォームを使用して以来、クロスプラットフォームAPIを推進してきましたが、実際にはどこでも成功していません。エンドユーザーにとって最も便利なアプリを作成していないため、成功しません。
TechZen

4
@TechZen-現在WebブラウザでStackOverflowを使用していますが、ネイティブクライアントを探す理由が何もありません。主張を一般化しすぎだと思います。
Youval Bronicki

4
この種の主観的な哲学的議論が技術的なWebサイトで正しい印を付けられていることに私はかなり動揺しています。さらに悪いことに、この投稿の論文は、現在使用しているほとんどの主要なソフトウェアには無効です。Webブラウザーはクロスプラットフォームです。Photoshop、MS Office、Dropboxなどはクロスプラットフォームです。スタートメニューまたはFinderを開いて、プラットフォーム固有のユーザーを一覧表示するだけです。ほとんどの場合、小さなユーティリティウェアが見つかる可能性があります。あなたの議論は、携帯電話が根本的に異なると信じている場合(非常に有効な仮定)には有効ですが、その基盤を構築するための議論はないようです。
kizzx2

14

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

コードの再利用

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

たとえばC ++は、iOSアプリケーションNDKを使用したAndroidアプリ、SymbianアプリでC ++などで開発されているため、おそらく再利用できます

一部のソリューションでは、デバイスで通常使用されている言語以外の言語でアプリを作成することもできます。最も有名な(実際に私が知っているのは1つだけです)は商用であり、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の進化についていくつかの警告を出しました:ZDNetの記事

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

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

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

[1] Appleには、そのプラットフォーム向けに作成されたアプリに関する特別なポリシーがあることに注意してください。現在のところ、これらのアプリをブロックしているようには見えませんが、考慮すべき情報です。 編集:Appleはこのポリシーを 9月9日から変更しました。


6

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

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

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


5

はい、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

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


1

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

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

これは良い例でも悪い例でもあると思います。


実際、iPhoneにはJavaはありません。私の知る限り、Java MeはAndroidでは動作しません
Alaa Nassef


詳細はわかりませんが、Avian JVMではJavaをiOSデバイスで実行できます。
Quazi Irfan、2015
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.