モバイルアプリケーションを開発したい。最近、Telerik Forumの記事を読みました。この記事では、3種類のモバイルアプリケーションを比較していますが、どちらを選択すればよいかわかりません。以下は、さまざまなモバイルデザインの選択の長所と短所を説明する画像です。
これらの設計の選択を決定するために、図にリストされている各アーキテクチャの選択の長所と短所をよりよく理解したいと思います。各アーキテクチャアプローチの長所と短所は何ですか?
モバイルアプリケーションを開発したい。最近、Telerik Forumの記事を読みました。この記事では、3種類のモバイルアプリケーションを比較していますが、どちらを選択すればよいかわかりません。以下は、さまざまなモバイルデザインの選択の長所と短所を説明する画像です。
これらの設計の選択を決定するために、図にリストされている各アーキテクチャの選択の長所と短所をよりよく理解したいと思います。各アーキテクチャアプローチの長所と短所は何ですか?
回答:
私はこの問題を考慮して多くの時間を費やしたモバイル開発者です。
ほとんどの場合、次の方法でアプリ開発コストを削減したいと考えています。
理由には以下も含まれます。
前述の3つのアプローチのそれぞれが意味することを正確に確立しましょう。
ネイティブ
デバイスにインストールされるアプリ。通常はアプリストアからインストールされます(サイドロードされることもあります)。この説明の目的上、ネイティブアプリのUIは通常、フルスクリーンWebビューのみで構成されていません。
モバイルWeb
これは実際にはどのWebページでもかまいませんが、この説明では、ネイティブアプリのルックアンドフィールを模倣しようとする単一ページのWebアプリを考えてみましょう。これはネイティブアプリではなく、デバイスのブラウザーで実行されます。
ハイブリッド
ハイブリッドアプリinstanceof
ネイティブアプリ。
ほとんどの人は、おそらくハイブリッドアプリを単一ページのモバイルWebアプリ(ネイティブアプリのルックアンドフィールを模倣している可能性が高い)として理解していますが、ネイティブサービス(Phonegapなど)にアクセスできるネイティブアプリとしてパッケージ化されています。
しかし、実際にはPhonegapモデルと完全ネイティブの間にスペクトルがあります。これについては後で説明します。
技術
的な制限まず、モバイルWebアプリに関するいくつかの技術的な制限を挙げましょう。これは、あなたがしていることに応じて、それ自体が契約を破る可能性があります。
上記のすべてに対応できる場合は、単一ページのネイティブスタイルWebアプリの課題について詳しく読んでください。ただし、このセクションは、FTアプリを参照しないと完全ではありません。
フィナンシャル・タイムズ紙
ザ・FTのWebアプリはアプリのこのスタイルの有名な例です。 これは、英国ガーディアン紙の興味深い機能です。
それは確かにエンジニアリングの驚くべき偉業です。現時点ではまだiOSでのみ利用可能であることに注意してください-これは、高度なクロスブラウザ開発の課題を解決することが実際に非常に難しいことを発見していることを教えてくれます。
このセクションは、モバイルWebアプリとPhonegapスタイルのアプリの両方に適用されます。
Webアプリ内のネイティブスタイルのルックアンドフィールは、通常、使用するUIコンポーネントのスイートを提供するSencha Touchなどのフレームワークで実現されます。
このようなフレームワークは、非常に単純なUIには適しています。ただし、柔軟性に欠けます。Senchaを使用してネイティブアプリのデザインを実装することはできません。フレームワークが対応できるものにデザインを適合させる必要があります。
これらのフレームワークが苦しむ主な方法は、プラットフォーム独自のUIの複雑さをエミュレートしようとすることです。iPhoneでリストの最後までスクロールしたときに得られる素敵で小さなバウンス効果はありますか?フレームワークは、Javascriptでそれをエミュレートする必要があります。完全に再作成することは不可能であり、スローダウンする傾向があり、ユーザーはアプリの「不気味な谷」に閉じ込められますが、これはネイティブのように見えますが、明らかにそうではなく、非技術的ユーザーは正確な理由に指を置くことができません。
「HTML5 / Javascriptは簡単」という神話
Webブラウザー内のデバイスの断片化はis延しており、最も基本的なHTMLおよびCSSを超えると、期待どおりに機能しないことがわかります。UIの厄介な問題を解決するのに、ネイティブで2回行うよりも多くの時間を費やすことに気付くかもしれません。ネイティブに移行する場合、ネイティブアプリのWebビューはデバイスブラウザーとは異なり、独自のフラグメンテーションの問題があることに注意してください。
アプリの機能がより複雑になると、Javascriptをクリーンで保守可能な状態に保つために、基本的なjqueryスキル以上のものが必要になることがわかります。
とはいえ、このアプローチを使用すると、シンプルで機能的なアプリを非常に迅速に作成することができます。しかし、アプリがそれを実行しているときは明らかです。
そのため、Phonegapスタイルのアプリが提供できるよりも優れたUXが必要です。私たちは何ができる?
非UIコードを共有する
複数のネイティブプラットフォーム間でビジネスロジックを共有するために利用できるさまざまな手法があります。GoogleはJavaをObjective-Cに変換するJ2ObjCを開始しました。コードを注意深くファクタリングすることで、JavaライブラリをAndroidとiOSの両方で使用できます。
CalatravaやKirinなどのライブラリを使用すると、Javascript(およびJavascriptにコンパイルできるもの)で記述されたコードベースをネイティブコードから操作できます。免責事項:キリンを作成したFuture Platformsで働いています。GWTを使用してJavaから生成されたJavascriptを使用してiOSで使用し、JavaコードもAndroidでネイティブに実行することで、大成功を収めました。
必要に応じてWebビューを使用...
フルスクリーンWebビューには、画面の遷移を模倣してエフェクトをバウンスできるようにするために多くの作業が必要です。ただし、ネイティブアプリchrome内のWebビューは、ネイティブと区別できません。
ネイティブアプリとWebビューが通信するための標準的で十分に文書化された方法があります。
リストとテーブルはこの方法で特にうまく機能しますが、テキスト入力はネイティブで最も適切に処理されるものの例です(キーボードを完全に制御するため)。
最適なアプローチは、アプリの複雑さと、満足できるUIの洗練度によって異なります。
私のモットー:できる限りウェブビューを使用しますが、ユーザーに伝えられないようにしてください。
最初にこの調査をチェックして、何が起こっているかを確認してください!
3つのタイプの比較: モバイルアプリケーション開発オプションについて
ネイティブとhypridの比較:
これは本当に良いです: HTML5 vネイティブアプリ:モバイル戦略の重要な考慮事項
コメント:
電話のハードウェアにアクセスする必要がある場合は、ネイティブアプリを作成する必要があります(HTML5では、GPSなどのデバイスのハードウェアコンポーネントの一部にアクセスできます)。
Web開発に慣れている場合は、ネイティブアプリを作成する必要がない限り、これに固執する必要があります。
知っておくべきことは、すべての異なる画面サイズ(垂直および水平方向を含む)を念頭に置いておく必要があるということです。OSのさまざまなバージョンを念頭に置く必要があります(これはAndroid向けです)。これらはモバイルデバイスであるため、ユーザーが電話に出て電話に出る可能性があり、デスクトップやサーバーの計算能力もありません。
消費者向けアプリを作成するとき、私にとって、その成功の最も重要なことは、アプリのユーザーの受け入れと認識です。そのため、学習、トレーニング、およびWORAの損失(どこでも実行できる書き込み)に関連する追加コストにもかかわらず、ネイティブアプリを優先する4つの理由は次のとおりです。
他の何よりも欲しいのは、アプリが喉の渇きの市場で成功するのに役立つ優れたユーザーエクスペリエンスです。もちろん、例外は特にスキルセットの不足、時間と予算の不足です。アプリは、これらのことをあまり気にしないビジネスユーザーの限られたセットを対象とする場合があります。
FacebookがIOSとAndroid用のネイティブアプリを支持してアプリ戦略を捨てたのは、これらと同様の理由です:
読んでください:
マーク・ザッカーバーグ:最大の間違いはHTML5にあまりにも多く賭けていた http://techcrunch.com/2012/09/11/mark-zuckerberg-our-biggest-mistake-with-mobile-was-betting-too-much-on- html5 /
Facebookが新しいiOSアプリでモバイルWebを捨ててネイティブになった理由 http://readwrite.com/2012/08/23/how-facebook-ditched-the-mobile-web-went-native-with-its-new- ios-app#awesm =〜o9jDrRefxdgnpS
お役に立てれば。
以下では、この問題に対する私の現在のスタンスは、ハイブリッドは、アプリを探索し、顧客からのフィードバックをすばやく繰り返し、機能セットを安定させるために開始するのに適しているということです。その後、仕様に従ってアプリをネイティブに書き換え、エクスペリエンスを向上させます。
モバイルWebはまったく別の目的で使用されるため、除外しました。アプリストアに参加したい場合は、Native / Hybridが最適です。展開を簡素化し、経験と技術的能力を犠牲にしたい場合は、モバイルWebを使用してください。
Pro / Cons Native:
賛否両論のハイブリッド:
ハイブリッドアプリの大きな問題は、フレームワークの断片化です。対象のネイティブモバイルプラットフォーム(通常はAndroidとiOSの2つだけ)よりも明らかに多くのフレームワーク(Ionic、Xamarin、React Nativeなど)があります。これらのフレームワークは競合し、出現し、衰退します。そのため、現在のチームを生涯維持するつもりであっても、ハイブリッドに移行してもプラットフォームからプラットフォームにジャンプすることはありません。
GoogleとAppleは、エディター、デバッガー、テストフレームワーク、リファクタリングツール、およびプラットフォーム用に開発するその他の手段の提供とサポートに最善を尽くしています。したがって、「ハイブリッドアプリを開発し、お気に入りのエディターで編集し、ブラウザーで開くのは簡単です」という典型的な言い回しを合理的な予約で受け取ります。XamarinとReact Nativeは、SwiftやJava / Androidと同じ開発プラットフォームであり、「hello world」は短く見えるかもしれませんが、最終的には適切な学習に相当する時間がかかるはずです。
いずれにせよ、ネイティブコンポーネントが必要になった場合(たとえば、既存のサードパーティライブラリを統合する必要がある場合)、2つではなく3つのフレームワークになります:iOS、Android、およびハイブリッドフレームワークが最上部にあり、最終的にはより複雑なアーキテクチャで。そのようなアプリのデバッグ、クロスレイヤーコール間のステップ実行、すべてのレイヤーのログ記録、コードの同期の維持は、複雑な場合もあります。
「アプリはすべてのプラットフォームでまったく同じに見える」と言う人もいます。それは本当に良いことですか?AndroidアプリはAndroidアプリのように見え、iOSアプリはiOSアプリのように見えなければなりません。
新機能はどうですか?ウェアラブル?Androidプラットフォームで提供されるインスタントアプリ 外部ディスプレイに追加データを表示していますか?ハイブリッドアプリは多くのネイティブ機能をサポートするようになりましたが、本当にすべてをサポートしていますか?いつでも、すぐに?
最後に、パフォーマンスとユーザーエクスペリエンスだけでなく、セキュリティもネイティブアプリ側にある可能性があります。ハイブリッドフレームワークは、独自のバグ(セキュリティバグを含む)を持つ可能性のある間接化のレイヤーを追加します。
上記のすべてをまとめて、選択の可能性の下で、私は間違いなく、iOS用とAndroid用の2つのネイティブアプリを選ぶか、プラットフォームのアプリ開発に一切煩わされることなく、単にモバイルバージョンのウェブサイトを設計します。