web-dev-qa-db-ja.com

ネイティブと電話のギャップ、単純なアプリの要件の間の苦労

ネイティブ(つまり、ブラウザではnot)モバイルアプリを作成します。私はWeb開発者なので、Phonegapを試すべきか、またはJavaまたはObjective-Cでネイティブアプリをビルドするだけなのかを判断するのに苦労しています。

アプリの要件は簡単です。 GPS/wifiロケーション、Facebook統合、およびアプリケーション固有のFacebookと友達の関係を処理するためにデータベースが必要になると思います。たとえば、ゲームのハイスコアのように-そのようなもの。

私はWeb開発者であり、JavaでもObjective-cでもありません。まだPhonegapを使用したことがないので、それが実現できるかどうかはわかりません。私の要件。

私の質問は次のとおりです。 Phonegapをアプリに使用できますか、または新しい言語に飛び込む必要がありますか?

75
Henrik Skogmo

関連:

この記事のより大きなバージョンも見つけることができます[〜#〜] here [〜#〜]、それを透明にする私の個人的なブログです。

ハイブリッドアプリとネイティブアプリ

ハイブリッドアプリ:

Pro:

  • 特にあなたが長年のウェブ開発者である場合、より速い開発。
  • 利用可能なすべてのプラットフォームで1つの言語を使用できます。もちろん、これにはPhonegapラッパーが必要です。開発を行うためにObjective C、Java、またはC#を学ぶ必要はありません。 Phonegap実装の基本を理解するだけで済みます。上記の言語で少し遊ぶ必要がありますが、それらを理解する必要はありません。
  • Phonegapは、iOSネイティブタブバーやAndroidネイティブタブバーなど、いくつかのネイティブ機能を提供できます。
  • 低予算コストと、サポーターと開発者の巨大なコミュニティ。
  • ハイブリッドアプリは、最も一般的なデバイスAPIにアクセスするアプローチと幅広いデバイスカバレッジの両方の利点の多くを提供しますが、完全にネイティブなアプリに典型的な特殊なスキル、より大きな予算、より長い市場投入時間は必要ありません。

短所:

  • しばらくすると、文字通り、比phor的に血を吐きます。
  • 携帯電話(今日のタブレットでも)は、ハイブリッドアプリをスムーズに実行するのに十分な速さではありません。モバイルJavaScript機能は最高の状態です。 Androidプラットフォームは悪夢であり、CSS/CSS3実装の欠如は言うまでもなく、ページ遷移はスムーズに機能しません。ネイティブAndroid 2.Xと4.Xに違いがあると思われる場合は、Android 2.Xの悪いJavaScript/CSS実装を見てください。 iOSの方が優れていますが、それでもCSS3の実装が不足しているため、ページ遷移がはるかに優れています。この短いネイティブアプリを作成することで、ユーザーエクスペリエンスと全体的な感覚が常に向上します。
  • アプリを修正してからビルドするのに、より多くの時間を費やします。プラットフォームごとにアプリを作成するのは大変です。異なるプラットフォームのブラウザーは、すべての最新のHTML機能とAPIを均一にサポートしていないため、開発とテストが困難になる場合があります。
  • 優れたデザイナーがいなければ、アプリをビルドしようとさえしないでください。見た目がすべてです。
  • 何をしているのかわからない場合は、アプリがAppleアプリストアの許可を取得できない可能性があります。 Google Playストアでさえ、サードパーティのPhonegap Paypalプラグインを発見した場合、アプリを禁止します。

ネイティブアプリ:

Pro:

  • ネイティブモバイルアプリは、最高のユーザーエクスペリエンスを実現できます。高速かつ滑らかで、デバイス機能への最適なアクセスを提供し、アプリストアで発見できます。
  • 疑いもなく、ネイティブアプリは、基盤となるモバイルプラットフォームに完全にアクセスできます。ネイティブアプリは通常非常に高速で洗練されているため、高性能アプリやゲームに最適です。これで十分です。

短所:

  • 予算が大きい場合、Windows Mobileアプリが必要な場合は、少なくともC#でさえ、JavaとObjective Cの知識を持つ人が必要です。はい、あなたはそれを自分で学ぶことができますが、短時間でそうするような幻想の下で生きてはいけません。 開発を行ったことがない場合は、Objective Cを選択してください(iOSは依然として優れたプラットフォームです)。他の場合はJavaを選択します。 Javaの構文は他の利用可能な言語と似ているため、C#からJavaに、またはその逆に簡単にジャンプできます。 Objective Cは、独自の世界です。あまり一般的ではない構文です。
  • それらすべてを開発するには長い時間がかかる場合があり、時は金なりです。これは、アプリの複雑さに依存します。

あなたの場合、あなたが優れたウェブ開発/設計スキルを持っているか、優れたデザイナーを持っているなら、ハイブリッドアプリを選ぶべきです。このアプリが複雑なアプリになる場合にのみネイティブになります。あなたが望むすべては、ハイブリッドアプリで行うことができます。そして、あなたは素晴らしいサポートコミュニティを見つけるでしょう。

ハイブリッドアプリ

私が以前に言及しなかったことは、ここで特に注意する必要があります。経験豊富な開発者であっても、解決できない多くの問題を見つけるでしょう。ハイブリッド開発は、基本的なWeb開発と間違えられるべきではありません。

すべてのモバイルプラットフォームには、携帯電話の動作がデバイスによって異なることは言うまでもなく、独自の一連の問題があります。可能であれば、ネイティブアプリはほとんどすべてのデバイスで正常に動作するため、常に低速なデバイスで動作するアプリを作成してください。

最後にもう1つあります。ハイブリッドアプリを作成する場合、アプリの開発にかかる時間は約30〜50%で、残りは特定のプラットフォームのデバッグと学習になります。私を信じてください。数年のモバイル開発の後でも、一人では解決できない問題や、十分な速度で解決できない問題に直面していることがあります。

したがって、モバイルフレームワークを選択するときは注意してください。2〜3を選んで、それらについて数日間読んでください。

リンク集

決定に役立つリンクがいくつかあります。

PhoneGap + jQuery Mobile 1.4チュートリアル-これはPhoneGapとjQuery Mobileの最新バージョンのステップバイステップチュートリアルです

PhoneGap + jQuery Mobile 1.4チュートリアル-MacOSバージョン-これは、MacOSでのPhoneGapデプロイメントの段階的なチュートリアルです。 jQuery Mobileの部分については、前回の記事で説明しましたが、繰り返しの意味はありません。

jQuery MobileとSencha Touch-jQuery Mobile Sencha Touchの比較

jQuery MobileとKendo UI-jQuery Mobile Kendo UIの比較

7つの最もよく知られているHTML5モバイルフレームワーク-名前はすべてを伝えます

7あまり知られていないHTML5モバイルフレームワーク -名前がすべてを伝える

158
Gajotres

アプリケーションにアニメーション効果がなく、シンプルな場合は、複数のタイプのモバイルOSで起動できる短い時間でweb(Phonegap)czで作成することを好みます。アプリにさらに多くのUIエフェクトとアニメーションが含まれている場合は、ネイティブを使用することをお勧めします。

webview(Phonegap)で開発している場合でも、Android and iOS

Phonegapがデバイスで実行する方法

Ios iOS WebViewでのアニメーションとビューの読み込みは孤立しており、アニメーション効果ははっきりと観察できます

Android
HTMLコードの実行中にAndroid、Android効率的なアニメーション表示ですが、一部のデバイス(ほとんどが古いバージョンと一部の会社のデバイス)は良好なアニメーション効果を提供できません。レンダリング効果はAndroidのデバイスによって異なります。

16
Sandeep P

Phonegapについての私の謙虚な意見では、単純なアプリを開発することができます。ドキュメントだけでは不十分であり、他の人が言っているように、アプリをビルドするよりもバグの修正やプラグインの検索に多くの時間を費やすと言われています。私はAndroidまたはiOSまたは何でも、あなたの時間の投資としてそれを見て努力します。(はい、私のコメントは少し偏っています)。

7
Enrique Marcos

最後に調べたところ、PhoneGapはすべてhtml、css、およびjavascriptでした。だから、あなたは家にいるように感じるかもしれません。 PhoneGapはGPSロケーションを処理できます。PhoneGapのドキュメントの この記事を参照してください。 Objective Cを習得するかどうかは、Web開発から少し離れているため、新しい言語をどれだけ早く習得するかにかかっています。

3
palmi

それは完全にあなたのニーズに依存します

最初のアプリ(ネイティブAndroid、データベース駆動、安らかな接続アプリ)を数か月公開した後、phonegapを使用してアプリを書き直すことにしました(アプリをiOSに複製するため、ObjCではなくjavascriptを使用します) ?)

Androidを使用していると、Java開発者、すべてをゼロから学び、コーディングするのに3週間かかりました。ListAdapterをRestful Serviceと同期させる方法について何度か頭を叩きました。私のサーバーから、アプリのテーマを設定する方法(特に、透明、境界線などの特殊効果に関しては、私の意見では非常に難しい)、およびコードベースを効果的に構成する方法(Javaに精通している場合) 、すべてのクラスが互いに非常に結合していることがわかります。これがほとんどのチュートリアルで書かれていることですから)

Phonegapでは、すべてが1週間で完了します。 Css、html、onsenuiおよびangularを使用すると、1年生の生徒の課題と同じようにGUIを開発でき、テーマは簡単です。実際のデバイスで実行する必要はありません。開発中にブラウザを使用するだけで、コードを変更して更新するだけで十分です。 Angularは、DOMとの2方向のバインディングを提供します。これにより、データを収集および表示する際に非常に素晴らしいことができます。例えば:

<ul ng-each="for sentence in sentences" >
   <li>{{ sentence.title }} </li>
</ul>

変数sentencesが変更されると(サーバーから取得)、DOMも自動的に変更されます。ただし、javascriptはjavascriptのみです。アプリをデバッグするとき、特にPouchDBでMapReduce関数を実行するとき(大きな間違いで、cordova-sqlite-plugin今夜)そして、ほとんどの場合、問題を把握するためにログを読む必要があります(ChromeのツールとFirebugはブレークポイントをキャッチできません)。また、アプリの再構築(javascript、再び)が難しいため、最初の兆候でコードベースを注意深く整理しないと、混乱を招く可能性があります(そして、デバッグは再び苦痛になります)。 PhoneGapはWebベースでもあるため、「このプラットフォームでは、そのbla bla blaをサポートしていないため」(たとえば、localStorage)と聞き、見つからない場合はそれを支持する必要があります。良いプラグイン。

結論 Webベースのストレージの制限を除いて、PhoneGapはデータベース駆動型のシンプルなGUIアプリと非常にうまく機能します(データベース駆動型アプリのほとんどは、いずれにせよシンプルなGUIを現在持っています)。その種のアプリを開発するなら、それを使い続けてください

3
Thai Tran

ionic を使用してチェックアウトします。これは、受け入れられた回答に記載されているいくつかの短所を相殺するために、angular.jsによってサポートされています。従業員ディレクトリアプリを起動するためのチュートリアル: http://coenraets.org/blog/2014/02/sample-mobile-application-with-ionic-and-angularjs/

2
Connor Leech

@Gajotresは素晴らしい反応を書きましたが、ハイブリッドアプリのパフォーマンスは2012年から大きく進歩しました。2017年のハイブリッドアプリ開発とネイティブアプリ開発の違いをカバーする 関連する質問 に答えました。

話の教訓は、過去数年間でハイブリッドアプリの開発が大幅に改善されたということですが、特定のユースケースではネイティブとは一致しません。

Ionic(最初に 201 でリリース)およびReact Native(最初に 2015 でリリース)ネイティブのようなコンポーネントを使用したハイブリッドアプリの構築がこれまでになく簡単になりましたハイブリッドアプリは、高速でバグが少なく、ネイティブUIとより深く対話できるようになりました。

ハイブリッドアプリのパフォーマンスのしきい値は、ほんの数年前よりも大幅に高くなっていますが、まだネイティブ言語でアプリを開発する必要があるかもしれません。

元の回答:

はい、一般的な感情は、ハイブリッドアプリはネイティブアプリよりも劣っていることです。これは、Webテクノロジーに精通している開発者にとってはイライラする可能性がありますが、正当な理由があります。

  1. ネイティブコンポーネントと対話できないcordova-plugin-statusbarが存在します。Webテクノロジーを使用してネイティブコンポーネントとやり取りし、操作する制限があります。私が個人的に遭遇した大きな(そしてイライラする)問題の1つは、キーボードがアニメートするときにキーボードの上部に入力ができないことです。これは、 Slackのようなチャットアプリで。
  2. 300msの遅延:最新のブラウザは 段階的に廃止 を始めていますが、Hybridアプリに存在する2番目の遅延の一部がアプリは遅く、ネイティブではないと感じます。この問題は、 FastClick.js などの回避策と Ionic などの一部のフレームワークをデフォルトで排除するユーザーが増えるにつれて、要因としては少なくなっています。
  3. 憎しみは正しい(並べ替え):ハイブリッドアプリの開発は長い道のりを歩んできましたが、まだ存在しない軽微な不具合や遅延機能がまだありますネイティブアプリで。画面の遷移、アプリの切り替え、およびバッテリの寿命は、バグが表示される一般的な領域であり、バグが次第に目立たなくなってきたとしても、しばらくの間そうなる可能性があります。
  4. いくつかの優れたネイティブソリューションがあります:Appleの Swift などの新しい言語では、ネイティブ言語でのコーディングが容易になっています。つまり、 React Native などのツールは、開発者がJavaScriptなどの使いやすいテクノロジーでコードを作成でき、ネイティブコードにコンパイルできるようにすることで、ネイティブとハイブリッドの間の灰色の領域に入ります。

話の教訓は、それがあなたの特定のユースケースにとって何が重要であるかに本当に依存するということです。ハイブリッドアプリは実行可能なオプションになり、恥ずかしいサイドショーではなくなりました。逆に、ネイティブUXとのやり取りには、ネイティブアプリ以外ではまだ不可能なマイナーな側面がまだあります。

全体として、プロジェクトをマッピングし、アプリがネイティブアプリの利点を必要とするかどうかを判断することをお勧めします。 Ionic View appなどのツールを使用すると、アプリの基本的なモックアップをまとめて、実際のデバイスでハイブリッドアプリが機能するかどうかを簡単にテストできます。

1
Tyler

ここで見落とされがちな素晴らしいオプションの1つは、Xamarinを使用した開発です。

OPのWeb開発者スキルを活用するのには役立ちませんが、PhoneGapと比較して多くの長所があり、ほとんど欠点はありません。

Xamarin対PhoneGap Pro:

  • モバイルデバイスのほとんど(すべてではないにしても)のネイティブ機能へのアクセスを提供する成熟したフレームワーク。
  • すべてのモバイルプラットフォームで1つの言語(ほとんどの開発者向けのC#)のみを学びます。
  • IOS/Windows Mobileでネイティブアプリのパフォーマンスがあり(アプリがネイティブコードにコンパイルされているため)、Android(ネイティブAPKにコンパイルされますが、 .NETクラスライブラリAPIをAndroidクラスAPI)に変換するシンラッパー。
  • プラットフォーム自体と開発ツールの全体的な寛大な品質をサポートするマイクロソフトによって維持されます。たとえば、Visual Studioを使用すると、おそらく最高のIDEであり、Xamarin開発に必要なすべての機能を備えた無料のCommunityエディションがあります。

Xamarin対PhoneGapの短所:

  • 純粋なWeb開発者がC#およびXamarinクラスライブラリAPIに切り替えるには、時間をかける必要があります。

したがって、Xamarinは、今日のクロスプラットフォーム開発にとって非常に堅実なオプションです。

0

また、ここですべての優れた記事を見つけることができます http://www.comentum.com/phonegap-vs-native-app-development.html 、この2つの方法を異なるカテゴリで比較します。

概要は以下のとおりです。

  1. インターフェースの設計(同じ)
  2. コスト(ハイブリッドには利点があります)
  3. 開発タイムライン(ハイブリッドには利点があります)
  4. ユーザーエクスペリエンスとパフォーマンス(ネイティブには利点があります)
  5. 保守性(同じ)
  6. 制限なし(ネイティブには利点があります)
  7. セキュリティ(同じ)
  8. サポートとリソース(ネイティブには利点があります)
  9. ツールとデバッグ(ネイティブには利点があります)
  10. プラットフォーム非依存(ハイブリッドには利点があります)
  11. 人気度(同じ)
0
Alireza Fattahi

PhoneGapとネイティブUIを非常にうまく統合するAppGyverステロイドもあります。

ステロイドを使用すると、ネイティブタブ、ネイティブナビゲーションバー、ネイティブアニメーションとトランジション、ネイティブモーダルウィンドウ、ネイティブドロワー/パネル(facebookサイドメニュー)などをPhoneGapアプリに追加できます。基本的に、CSS + JSがカットしない場所であればどこでも、ステロイドはアクションを実行するためにネイティブレイヤーに到達します。

また、ステロイドを使用すると、1つではなく、複数ページアーキテクチャ(複数のWebビュー)を使用できます(必須ではありません)。シングルページアプリでは、移行のようなものはすべてCSSの回避策であり、Maniが言ったように、最新のタブレットや携帯電話でもスムーズにするのに十分な速度ではありません。 PhoneGapアプリの場合、特に多数のプロセスが実行されている場合、またはJSプロセスが(iOS 8で修正されている)ためにスクロールしている場合、それは常に明らかです。

マルチページアーキテクチャを使用すると、100%のネイティブパフォーマンスが得られます(これらの部分は実際にはareネイティブであるため)。また、phonegapとは異なり、一貫したユーザーインターフェイスの動作と簡単なデバッグが可能になります(単一ページのアプリでは、アプリで特定の状態を再現するのが難しいことがよくあります)。マルチページを使用すると、コードベースが簡潔に保たれるため、アプリの開発と保守がはるかに簡単になります。

デモを確認してください: http://youtu.be/oXWwDMdoTCk?t=20m17s

0
yoka