Xamarinの開発の長所と短所

iOSおよびAndroid向けのアプリケーションの開発に着手する際、ほとんどの企業は主に、認識されているネイティブテクノロジースタックを開発ツールとしてObjective-C、Swift、およびJavaと見なしています。 ただし、効果的で使いやすいモバイルアプリケーションを作成する方法は他にもたくさんあります。 Xamarinアプリケーション開発プラットフォームはその1つです。 この記事では、市場でのモバイル開発のためのネイティブおよびクロスプラットフォームソリューションと比較したXamarinプラットフォームの詳細なレビューを実施します。



Xamarinとは何ですか?



主要なモバイルアプリケーション開発ツールに関しては、Xamarinは無視できません。 Xamarinは、Microsoftテクノロジーの原則に基づいた比較的新しいツールです。 しかし今日、彼のコミュニティには140万人以上の開発者がいます。



Xamarinプラットフォームは、オープンプラットフォームMonoの開発者によって作成されました。Monoは、2001年に最初に導入された無料の.NET実装に含まれていました。 ただし、Xamarinは、前身とは異なり、Microsoftに買収されるまでは商業プロジェクトとしてのみ存在していました。



Xamarinは、単一のC#言語を使用してすべてのモバイルプラットフォーム用のアプリケーションを作成するため、特別なツールです。



Appcelerator Titaniumなどの言語に依存しない開発ソリューションとは異なり、Xamarinプラットフォームでは、ターゲットプラットフォーム用のネイティブアセンブリを作成し、自然な外観の高性能アプリケーションを作成できます。 技術的な観点から、クロスプラットフォーム開発では、Xamarinは.NETレイヤーにラップされた単一のC#言語とライブラリを使用します。 仕事とユーザーエクスペリエンスの観点から、このようなアプリケーションは、ネイティブアプリケーション、つまりiOSおよびAndroid用に特別に設計されたアプリケーションに帰することができます。



ビジネスロジック、データベースアクセス、およびネットワーク通信に関連するコードはすべてのプラットフォームで使用できるという事実にもかかわらず、Xamarinでは特定のプラットフォーム用のUIコードのレイヤーを作成できます。 したがって、Xamarinクロスプラットフォームアプリケーションはどのデバイスでも100%ネイティブに見え、標準のハイブリッドアプリケーションと比較して最高のユーザーエクスペリエンスを提供します。



プラットフォームには、Xamarin.iOSとXamarin.Androidの2つの主な形式があります。 iOSの場合、ソースコードはARMネイティブアセンブラコードに直接コンパイルされ(AOTコンパイル)、Android Xamarinアプリケーションは最初に中間ユニバーサルコードにコンパイルされ、次に実行時にネイティブコードにコンパイルされます(JITコンパイル)。 それにもかかわらず、このアプローチはすべての問題の解決策ではありません。 他の技術と同様に、Xamarinには長所と短所があり、最近、議論の的となっています。



Xamarinをモバイルアプリ開発に使用する長所



XelloがTrello、Slack、GitHubなどの多くの企業で使用されているのには、いくつかの正当な理由があります。



+すべてのプラットフォームで開発するための1つの技術スタック



XamarinはC#言語と.NET Frameworkを使用して、モバイルプラットフォーム用のアプリケーションを作成します。 したがって、ソースコードの最大30%を再利用して、開発プロセスを高速化できます。 Xamarinでは、開発環境を切り替える必要もありません。すべてのXamarinアプリケーションは、Visual Studioを使用して作成できます。 クロスプラットフォーム開発ツールは、追加費用なしでIDEの一部として提供されます。



+パフォーマンスはネイティブに近い



Xamarinを使用して作成されたクロスプラットフォームアプリケーションは、Webテクノロジーに基づく従来のハイブリッドソリューションとは対照的に、ネイティブとして分類できます。 パフォーマンスインジケータは、AndroidおよびObjective-CまたはiOS用のアプリケーション開発用のSwiftのJavaインジケータに匹敵します。 さらに、Xamarinのパフォーマンスインジケーターは絶えず改善され、国内開発の基準に完全に準拠するように改善されています。 Xamarinプラットフォームは、アプリケーションのパフォーマンスをテストおよび監視するための包括的なソリューションを提供します。XamarinTest Recorderツールと組み合わせたXamarin Test Cloudを使用すると、自動化されたユーザーインターフェイステストを実行し、アプリケーションがリリースされる前にパフォーマンスの問題を見つけることができます。 ただし、このサービスは追加料金で利用できます。



+ネイティブUI



プラットフォーム固有のUI要素を使用して、Xamarinではインターフェイスを作成できます。 アプリケーションのユーザーインターフェイスの開発の利便性のために、Xamarin.iOSとXamarin.Androidを別々に使用することをお勧めします。 これが最良の結果を提供します。



+ハードウェアの互換性



Xamarinは、プラグインとさまざまなAPIを使用してすべてのハードウェア互換性の問題を修正し、すべてのプラットフォームで一般的なデバイスの機能を使用します。 特定のAPIプラットフォームへのアクセスに加えて、Xamarinは特定のプラットフォーム用のネイティブライブラリにバンドルすることもできます。 これにより、プラットフォームのネイティブ層の機能をオーバーヘッドを抑えて微調整および維持できます。



+コーポレートサポート付きのオープンソーステクノロジー



Microsoftが2016年2月に会社を買収した後、Xamarinのライセンスポリシーは根本的に変更されました。 ライブラリとコマンドラインツールを含むXamarin SDKは、Visual Studioの一部として、MITライセンスの下で誰でもアクセスできるようになりました。 ライセンスコストという形での主な障害を排除することにより、マイクロソフトはプラットフォームのさらなる開発に最適な条件を提供しました。 さらに、Microsoftが主導し、Unity、JetBrains、Red Hat、.NET FoundationによってサポートされているXamarinは、モバイルアプリケーションを開発するための信頼性の高い強力なテクノロジースタックになりました。



+シンプルなサポート



クロスプラットフォームのおかげで、Xamarinはサポートとソフトウェアの更新を簡素化します。 単一のソースファイルに変更を加えるだけで、iOSおよびAndroidアプリケーションの両方に適用されます。 ただし、これは共通のビジネスロジックを使用するアプリケーションと、Xamarin.iOSおよびXamarin.Androidアプリケーションの共通コードにのみ適用されます。 したがって、これにより、アプリケーションの動作を維持しながら、時間とお金を節約できます。



+開発ツールの完全なパッケージ



Xamarinには、独自のIDEシステム(Visual Studio)、Xamarin SDK、テスト(Xamarin Test Cloud)、配布および分析(HockeyappおよびXamarin.Insights)の開発ツールの完全なパッケージが含まれています。 これにより、Xamarinアプリケーションを作成、テスト、展開するために追加のツールに投資したり、他のアプリケーションを統合したりする必要がなくなります。



Xamarinの機能



Xamarinで開発する場合の短所



-プラットフォームの更新による遅延



これは完全にXamarin開発チーム次第です。 サードパーティ製のツールが最新のiOSおよびAndroidの更新を即座にサポートすることはできません。新しい変更、新しいプラグインなどを導入するには時間がかかります。Xamarinは同じ日にサポートを提供すると主張していますが、 1〜2日の遅延。



-オープンソースライブラリへの制限付きアクセス



ネイティブ開発では、オープンソーステクノロジーが幅広く使用されます。 Xamarinは、プラットフォームが提供するコンポーネントと、開発者と消費者が使用するいくつかの.NETリソースを使用する必要があります。 もちろん、選択はiOSやAndroid向けのモバイルアプリケーションを開発する場合ほど大きくはありませんが、Xamarinコンポーネントは数千の異なるインターフェイス要素を提供します:数回クリックするだけでアプリケーションに追加できるチャートやグラフ、テーマ、その他の便利で便利な機能。 このプラットフォームには、組み込みの支払い処理機能(ストライプなど)、ビーコンとウェアラブルデバイスのサポート、プッシュ通知サービス、クラウドストレージソリューション、マルチメディア、ストリーミングなどが含まれます。



-限られた生態系



Xamarinプラットフォームは成長し、開発されており、Microsoftによってサポートされていますが、Xamarinの仕様に精通している専門家のコミュニティはiOSやAndroidのコミュニティよりもはるかに小さいため、経験豊富な開発者を見つけるのは難しい場合があります。 さまざまなソースからの情報から判断すると、Xamarinコミュニティはモバイル開発者の総数の10%を占めています。 Xamarinのエンジニアの数はiOSやAndroidの専門家の数と比較できないという事実にもかかわらず、プラットフォームの作成者は専門家をサポートしています。 たとえば、Xamarin Universityという特別な教育機関があり、この業界の専門家を実際に訓練するためのさまざまなリソースと機会を提供しています。 このサポートのおかげで、経験豊富なC#プログラマーにとって学習曲線は最小限です。



-プログラミング言語の基本的な知識の要件



Xamarin.iOSおよびXamarin.Androidを使用して、ネイティブインターフェイスを備えたモバイルアプリケーションを作成する場合、プラットフォーム固有のコード層を作成する必要があります。 そのため、少なくともネイティブテクノロジ(Javaの場合はAndroid / Kotlin、Objective-C / iOSの場合はSwift)の基本的な知識が必要です。 ただし、Xamarin.Formsには適用されません。



-Xamarinは高性能グラフィックアプリケーションには適していません



Xamarinの主な利点は、さまざまなプラットフォームでコードを使用できることです。 ただし、これはロジックについてのみであり、UIコードはほとんどプラットフォームに固有のものです。 これにより、Xamarinでゲームを作成できますが、豊富なユーザーインターフェイスまたは一般的なコードを使用した複雑なアニメーションにより、Xamarinは使用できなくなります。



-より大きなアプリケーションサイズ



タイプと複雑さに応じて、Xamarinアプリケーションは通常ネイティブアプリケーションよりも大きく、場合によっては2倍になります。 Androidでは、単純な「Hello、World」は最大16 MBを使用でき、そのほとんどはリンクライブラリ、Mono環境、およびベースクラスライブラリ(BCL)によって使用されます。 したがって、アプリケーションは通常、ファイルサイズが大きくなりすぎないように追加の最適化が必要です。



Xamarinでのアプリケーション開発の機能



-統合の難しさ



サードパーティのリソースとXamarinの統合でいくつかの問題が発生する可能性があります。 ほとんどのツールとライブラリはネイティブテクノロジを完全にサポートしていますが、Xamarinとの互換性はメーカーによって保証されていません。 Xamarinには独自のコンポーネントがありますが、プラットフォームで提供されない特定の機能やアプリケーションの統合が必要になる可能性が常にあります。



最近、多くのアプリケーション開発者は、Xamarinがネイティブ開発ツールと見なされることに同意する傾向があります。 実際、「Objective-CまたはSwiftを使用してiOSアプリケーションで実行できるすべて、およびJavaを使用してAndroidアプリケーションで実行できるすべてのことは、Xamarinを使用してC#でも実行できます」という意見があります。



出所



All Articles