75

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

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

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

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

4

10 に答える 10

158

関連している:

この記事の拡大版もここにあります。透明にするために、それは私の個人的なブログです。

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

ハイブリッドアプリ:

プロ:

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

短所:

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

ネイティブアプリ:

プロ:

  • ネイティブモバイルアプリは、最高のユーザーエクスペリエンスを生み出すことができます。高速で流動的であり、デバイス機能への最高のアクセスを提供し、アプリストアで見つけることができます。
  • 間違いなく、ネイティブアプリは基盤となるモバイルプラットフォームに完全にアクセスできます。ネイティブアプリは通常、非常に高速で洗練されているため、高性能のアプリやゲームに最適です。これで十分です。

短所:

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

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

ハイブリッドアプリ

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

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

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

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

リンク

決定に役立つリンクは次のとおりです。

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

PhoneGap + jQuery Mobile 1.4チュートリアル-MacOSバージョン-これは、MacOSでのPhoneGapデプロイメントのステップバイステップのチュートリアルです。jQuery Mobileの部分は前の記事で取り上げられており、繰り返しても意味がありません。

jQueryMobileとSenchaTouch -jQueryMobileSenchaTouchの比較

jQueryMobileとKendoUI -jQueryMobileKendoUIの比較

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

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

于 2012-12-28T12:59:48.590 に答える
16

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

webview(Phonegap)で開発する場合でも、AndroidとiOSでいくつかの基本的な手順を学ぶ必要があります

Phonegapがデバイスでどのように機能するか

iOS ios Webview でのアニメーションとビューの読み込みは取り残されており、優れています。アニメーション効果ははっきりと観察できます。

Android
htmlコードを実行している間、Androidのデバイスバージョンとデバイス会社を考慮する必要があります。Androidの一部の高構成デバイスはより明確で効率的なアニメーション表示を提供しますが、一部のデバイス(ほとんどの場合古いバージョンと一部の会社のデバイス)は優れたアニメーション効果を提供できません、レンダリング効果はAndroidのデバイスごとに異なります。

于 2012-12-28T06:44:39.173 に答える
6

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

于 2013-10-23T08:13:46.540 に答える
3

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

于 2012-12-28T06:46:52.467 に答える
3

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

最初のアプリ(ネイティブAndroid、データベース駆動型、安らかな接続アプリ)を公開した後、phonegapを使用してアプリを書き直すことにしました(アプリをiOSにクローンしたいので、ObjCで行う代わりに、javascriptを使用しませんか? ?)

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

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

<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 blablaをサポートしていないため」と聞くことがあります(例:localStorage)そして、良いプラグインが見つからない場合は、それを支持する必要があります。

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

于 2014-05-20T19:22:57.387 に答える
2

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

于 2014-03-11T13:57:22.263 に答える
1

@Gajotresは素晴らしい回答を書きましたが、ハイブリッドアプリのパフォーマンスは2012年以来、長い道のりを歩んできました。2017年のハイブリッドアプリとネイティブアプリの開発の違いをカバーする関連質問に答えました。

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

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

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

元の回答:

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

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

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

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

于 2017-05-09T22:09:49.183 に答える
0

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

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

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

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

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

于 2014-08-01T10:22:45.240 に答える
0

また、ここhttp://www.comentum.com/phonegap-vs-native-app-development.htmlにすべての優れた記事があり、これら2つの方法をさまざまなカテゴリで比較しています。

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

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

ここで見落とされている優れたオプションの1つは、Xamarinを使用した開発です。

OPのWeb開発者のスキルを活用することはできませんが、PhoneGapと比較して多くの長所があり、短所はほとんどありません。

XamarinとPhoneGapの長所:

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

XamarinとPhoneGapの短所:

  • 純粋なWeb開発者がC#およびXamarinクラスライブラリAPIに切り替えるには、ある程度の時間の投資が必要です。

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

于 2017-09-01T16:33:48.550 に答える