高い期待を設定することについて話します。聖なる三位一体、それ以下ではありません!
真実は、共有コードがないため、複数のプラットフォームをターゲットにする場合、モバイルアプリの開発にはコストがかかるということです。 AppleではObjective-CまたはSwiftでコーディングする必要があり、AndroidではJavaでコーディングする必要があり、WinPhoneでは.NET(多くの場合C#)で開発する必要があります。さらに、各プラットフォームが地図、描画、写真、またはGPSを処理するために提供する多数のライブラリーは、単一のモバイルアプリを構築するために膨大な時間と知識を必要とします。
言うまでもなく、ほとんどの新興企業は費用を3倍にする余裕がなく、確立された企業でさえ、モバイルスペースへの参入価格を正当化するのに苦労する可能性があります。
この記事では、Xamarin FormsをMVVMCrossおよびSkiaSharpと組み合わせて、クロスプラットフォームを構築するための実行可能な方法にする方法を学習します。 モバイルアプリ 親しみやすさ、パフォーマンス、独自性を損なうことなく。この記事では、これら3つのテクノロジーと、複数のモバイルプラットフォームでコードを最大限に再利用できるようにすることで開発コストを削減する方法について説明します。
クロスプラットフォームのモバイルアプリ開発の問題は現実のものであり、そのため、削減するために何年にもわたって多くの異なるソリューションが出現しています。 開発費 プラットフォーム間でコードを共有する。たとえば、ビデオゲーム業界では、すべての主要なゲームエンジンがクロスプラットフォームソリューションを提供し、UnrealやUnityでさえ携帯電話やタブレットをターゲットにしています。
アプリの面では、このクロスプラットフォーム市場をリードするための複数の試みが何年にもわたって行われてきました。多くは不足し、深淵で失われましたが、そのうちのいくつかは数年後も生き残っています。これらの中には、3つのモバイルプラットフォームすべてをサポートする唯一の.NETソリューションであるXamarinがあります。
ですから、異なる解決策の間で戦争が繰り広げられており、戦争は宣伝を意味すると誰が言いますか?
戦争は主に大物の前で戦われます N :ネイティブであること!明確な意味がないので注意が必要です。これは、今日のモバイル開発の世界で最もよく使われている言葉であり、非常に流行しています。真実は、それが実際に何を意味するのかについて誰も同意しないということです。
クロスプラットフォームフレームワークを選択する場合、すべての「ネイティブ」オプションが同じではないため、注意してください。リンゴとオレンジを比較している可能性があります。プログラミング言語に関するものもあれば、ハードウェア機能を使用できることに関するものもあれば、プラットフォームAPI / UIの使用に関するものだと考える人もいれば、ウェブアプリではないことだけを考える人もいます。
議論のあらゆる側面に議論があり、それは役に立たないので、私はこれ以上深く掘り下げるつもりはありません。なぜ役に立たないのですか?さて、飲み込むのが難しい事実をお話ししましょう。エンドユーザーは気にしません!
Javaでロボットをプログラムする方法
はい、あなたはその権利を読みます、あなたのプログラマーだけが気にします。エンドユーザーは、基盤となるテクノロジーのためにアプリを選択することはありません。問題に答え、優れたエクスペリエンスを提供するため、エンドユーザーはアプリを選択します。
したがって、単語の意味をめぐって争うのではなく、Xamarinがユーザーに関心のあるものを提供する効率的な方法をどのように提供するかを見てみましょう。
先に進む前に、クロスプラットフォーム開発の問題に対するソリューションを構成する3つの要素を明確にしましょう。
前述のように、Xamarinはモバイルおよびデスクトップアプリ開発用の.NETソリューションです。 2016年にMicrosoftによって購入されましたが、Monoプロジェクトで約4年前に日付が付けられました。現在では、Xamarin.iOS、Xamarin.Android、Xamarin.Macの3つのソリューションを備えています。他のプラットフォームは、Microsoftソリューションであるデフォルトですでに.NETアプリを処理しています。つまり、Xamarinは.NETのプラットフォームAPIへの直接リンクを提供します。したがって、.NETアプリのネイティブ機能を使用できます。 UIの抽象化レイヤーを提供するFormsと呼ばれるXamarinの拡張モジュールもあります。
ブートストラップテーマとは
SkiaSharpは、GoogleのSkiaベクターグラフィックライブラリの.NETラッパーです。 Skiaは、Android、Chrome、ChromeOS、Firefoxのネイティブレンダリングエンジンです。 SkiaSharpを使用すると、.NETアプリのライブラリを使用してクロスプラットフォームにすることができます。つまり、デザイナーが「アプリをすっごく良くする」と言っているすっきりとした影は、ターゲットプラットフォームごとに繰り返すのではなく、一度だけコーディングできます。個人的には、その最高の機能は、鮮明でピクセルパーフェクトなレンダリングを維持しながら、さまざまなフォームファクターの重複を防ぐことができる方法でSVGグラフィックスをレンダリングする機能だと思います。
すべてを適切に分離し、疎結合を維持するために、私たちの聖化されたソリューションはMVVMCrossに依存します。このフレームワークは、MVVM(Model-View-ViewModel)インフラストラクチャを実装しているため、すべてを独立させることができます。技術的になりすぎることなく、アプリは通常3つの部分に分かれています。
ソフトウェアエンジニアリングでは、視覚的表現を変更した場合でもアプリケーションロジック(ViewModel内)を再利用できるように、ビューをViewModelから分離するよう常に努めています。 MVVMCrossは、データバインディングを処理し、プラットフォームを抽象化するためのパターンとツールを提供することで、まさにそれを実現するのに役立ちます。
要約すると、成功したアプリと悪いアプリを区別するさまざまなことがあります。成功したアプリ:
ポイント1は、明らかに、選択したフレームワークとは何の関係もありません。それでは、ポイント2に集中しましょう。アプリの楽しみに寄与する3つの主要な側面があります。
習熟度は、使いやすさとアプリ内での道のりをすばやく見つけることに関係しています。
つまり、プラットフォームのさまざまなユーザーインターフェイスパラダイムをシステム全体で一貫した方法で使用することです。たとえば、ボタンの位置、リストコンテキストのアクション、ナビゲーションなどの単純なものはすべて、アプリの使いやすさに貢献します。
親しみやすさは、Webインターフェイスに基づくWebアプリまたはフレームワークの主な弱点です。一方、Xamarin Formsは、ベンダーが提供するUI要素へのクロスプラットフォームマッピングを提供します。
そのため、ユーザーはプラットフォームの一般的なルックアンドフィールに準拠したエクスペリエンスを得ることができるため、アプリで直感的に安心できます。
率直に言って、マーケティング宣伝で「ネイティブ」と言っても意味がありません。取る ジャソネット 「ネイティブオーバーHTTP」の例として。 UIはWebサーバーに保存されます…こんにちはラウンドトリップとスローダウンです。したがって、ネイティブが必ずしもパフォーマンスの向上を意味するとは限らないことがわかります。
したがって、その神話が邪魔にならないので、実際のベンチマークを見ると、Xamarinは次のようになります。 パフォーマンスに関して最も丸みを帯びたソリューション 。 Xamarin Formsは、かなり多くのコンテキストスイッチを必要とせず、 母国語アプリに匹敵するパフォーマンス 。
私の結論は、実装の選択は、Xamarinと母国語ではなく、アプリの速度を低下させる可能性があるということです。そこにある他のオプションは、パフォーマンスに関して明らかに不利です。
デザイナーがユニークな外観のアプリを作成する可能性も、可能な限り最高のユーザーエクスペリエンスを提供し、アプリを差別化するかどうかを検討する上で非常に重要です。
多くの場合、一意性とは、カスタムの外観のコントロール、アニメーション、またはジェスチャを作成することを意味します。 Xamarinですぐに利用できない場合は、SkiaSharp(GoogleのSkiaベクターグラフィックスレンダリングライブラリのラッパー)を使用し、Xamarinフォームのカスタムレンダラーコンセプトを利用して、常に単一でコーディングしながら、必要なだけハードウェアに近づけることができます。言語、他のソリューションでは提供できないもの。
クレジットカードのトップアップハック
この時点で、フレームワークの選択もビジネス上の決定であると考えている可能性があります。 Xamarinには、人的資源の可用性など、この記事の範囲外の要因とは別に、特にMVVMCrossと組み合わせた場合に提供できるものがたくさんあります。私はあなたがあなたの決定で考慮したいと思うであろう4つの側面について詳しく述べます:
これを邪魔にならないようにしましょう。 今年の初めから 、Xamarinは、フリーランサーやスタートアップのような中小企業には無料です( Visual Studio Community Edition )。大規模な組織の場合は、既にお持ちのVisualStudioライセンスが「無料」で付属しています。 Xamarin Forms、MVVMCross、SkiaSharpもすべて無料でオープンソースであり、それを締めくくることができます。
すでに述べたように、Xamarinで.Netルートを使用すると、アプリを最初から最後まで単一の言語で開発できます。他のほとんどのソリューションでは、プログラマーがさまざまな言語を知っている必要があります。の場合 コルドバ たとえば、利用可能なプラグインがないベンダーAPIにアクセスする必要がある場合は、HTML、Javascript、CSSだけでなく、Objective-C、Java、C#にも精通している必要があります。
使用される言語の多様性により、より多くのコンテキストスイッチとマスターするツールが増え、効率が低下します。一方、Xamarinはオールインワンソリューションです。VisualStudioから、すべてのプラットフォームでビルド、デプロイ、デバッグを行います。
Xamarinとは直接関係ありませんが、C#には、次のものを選択することで開発をスピードアップする多くの機能もあります。 .Netソリューション 。つまり、非同期/待機、クロージャ、リフレクションを備えた簡単なマルチスレッドなど、C#4.5以降の優れた機能の恩恵を受けます。これらはすべて、効率を向上させることが示されています。
コードの再利用について考えたことがあるでしょうし、この点ですべてのソリューションがある程度同等であると考えている可能性があります。仲間と言って申し訳ありませんが、あなたは間違っています!
あなたの中のプログラマーは、なぜ私がフォームに組み込まれているMVVMレイヤー上でMVVMCrossの使用を提案するのか疑問に思ったかもしれません。さて、ここで考慮すべきことがあります:あなたは本当にモバイルアプリを構築しているだけですか?
アプリロジックをMVVMCrossで分離し、それが提供する制御の反転を使用することで、モバイルだけでなくWindowsとMacでも最大量のコードを再利用できます(Xamarin.Macが友だちだからです)。
それはあなたにお金を節約するだけでなく、あなたのコード維持費を下げる良いエンジニアリング慣行を提案します。
あなたは私のようではないかもしれませんが、私は車輪の再発明を嫌います。したがって、アプリに簡単に統合できる既存のコンポーネントにアクセスできることは、市場投入までの時間を短縮するために不可欠であり、多くの場合、同時にコストを削減します。
XamarinとMVVMCrossを選択すると、既存のコンポーネントを選択するための2つのオプションが提供されます。まず、フォームの有無にかかわらず、Xamarinで利用できるコンポーネントが増えています。 XamarinにはVisualStudio内に統合されたコンポーネントストアがあり、一般的なアプリの問題に対するさまざまな解決策を見つけることができ、他社は直接販売しているため、独自のコンポーネントを作成する前に必ず検索してください(または、コンポーネントが構築されたら販売することを検討してください)。
次に、誰かが必要なことを実行するためのコードをすでに作成している可能性があるため、Nugetパッケージを検索する必要があります。それらのパッケージの中には、電子メール、GPS、ローカリゼーションなどの一般的な問題を解決するクロスプラットフォームのMVVMCrossプラグインのまともなリストがあります。
すでにC#の経験がある場合は、おそらく好みのコンポーネントがあります。もちろん、あなたは彼らを手放したくありません、彼らはとても快適に感じます。カスタムレンダラーの助けを借りてFormsでも、既存のコンポーネントのC#バインディングを作成して、Xamarinにバンドルされているかのように使用できますのでご安心ください。
そういえば、あなたは見てみたいかもしれません XamarinバインディングGithubリポジトリ 自分で作成する前に。
最後に、サポートと例へのアクセスは、フレームワークを選択する上で非常に重要な要素です。 Xamarinはしばらく前から存在しているため、今日のコミュニティはかなりの規模になっています。
Googleで情報を検索すると、通常、かなりの数の回答が見つかります(ヒント:Xamarinの祖先であるmonotouchとmonodroidも検索してみてください)。Xamarinは、Webサイトで多くの例と優れたドキュメントを提供しています。
さらに、Xamarinは実際にはベンダーAPIを拘束するだけなので、AppleとGoogleのドキュメントは常に関連性があり、多くの質問に答えます。次に、独自のMVVMCrossサービスを作成して、共有コード内のベンダーAPIを抽象化できます。
昨年3月にMicrosoftに買収されたXamarinの将来については、今後以外のどこにも進まないのではないかと思います。その販売とマッチングがフリーっぽいモデルに移行して以来、コミュニティは成長し、サポートは向上し、製品はおそらくより速いペースでさえも向上し続けています!
Xamarinの将来は明るいように見えます。
go vs nodejsのパフォーマンス
この記事でワームの缶を開けている可能性があるという事実を認識しています。誤解しないでください。検討する価値のある他のオプションがあります。私の懸念はあなたの懸念と同じではない可能性があるため、そうすることをお勧めします。
6週間のタイムラインがあり、4か月経ってもアプリの準備ができていない場合は、勝てないことに注意してください。それは、社内で誰かを訓練したり、知識のある誰かを雇ったりするために、2ヶ月半とたくさんのお金を残すでしょう。その時点で「ネイティブ」アプリの構築を主張することは、プロジェクトの運命にとって非常に有害な場合があります。
Xamarinとこれらのコンパニオンテクノロジーは、ユーザーが気にかけていることと必要なことを正確に提供します。この記事が、次のモバイルアプリ用に選択する可能性のあるフレームワークについて十分な情報に基づいた決定を下すのに役立つことを願っています。
関連: クリーンなアーキテクチャでMVVMを使用したより優れたAndroidアプリ