著者に代わってさらなる議論が行われます。
2017年の初めに.NET開発者が知っておくべきことについての彼のブログへの最近のScott Hanselmanの投稿に非常に触発されました。 そして、私はこれより少し進んで、.NETでiOS、Android、macOSアプリケーションを構築するXamarin開発者向けの小さなガイドを書くことにしました。 そこで私はChris Hardyに連絡し、一緒にXamarinに関連する概念と有用なリソースの広範なリストを作成しました。 始める前に、スコットのすばらしいブログにアクセスしてください。すばらしい情報が満載です。 さらに、この投稿を可能な限り便利にするために、「知っておく必要がある」、「知っておくべき」、「知っておくといい」という特別なセクションに分割し、さらにiOSとAndroid用の特別なセクションを用意しました。
Xamarinの使用を開始する準備ができたら、 ポータルにアクセスしてください。これは、初心者開発者に最適な場所です。 そこで2011年にモバイル開発の分野で仕事を始めました。 それでは始めましょう!
どこから始めますか?
Xamarinをよく読んで、ダウンロードして、勉強して、見たい人は、次のポータルにすぐに注意することをお勧めします。
- Xamarin関連のコンテンツを読んでダウンロードしてください!
- Xamarin Universityでの無料の自習 。
- Xamarin Workbookを使用すると、開発者はAPIをインタラクティブにテストできます。
- xamarinshow.com :私が主催するCH9の毎週の開発ショー。
- Xamarinオープンソースプロジェクトを以下に示します。
知る必要がある:Xamarin
Xamarinとは何ですか? Xamarinプラットフォームのおかげで、開発者はC#、F#、またはVB.NETを使用してiOS、Android、macOS向けの完全にネイティブなアプリケーションを作成できます。 さらに、ネイティブAPIへの100%アクセスと、他の.NETアプリケーションとロジックを共有する機能がある場合。
.NETをiOS、Android、macOS、IoT、Linux、PS4、Xboxなどに配信する1つの超最適化された.NETランタイムがあります。.NETAPIを実装し、.NET Standardを駆動します。 「内部」の実装について心配する必要はありません。
ネイティブXamarin開発とも呼ばれる従来のXamarin開発により、開発者はアプリケーションのビジネスロジックを共有し、各APIに100%アクセスできるプラットフォームごとにネイティブユーザーインターフェイスを作成できます。
Xamarin.Forms開発は、開発者にiOS、Android、およびWindows用のクロスプラットフォーム抽象化ユーザーインターフェイスを提供します。 ユーザーインターフェイスはXAMLコードまたはその他の形式で作成でき、さらに、各プラットフォームのランタイムにネイティブコントロールがインストールされます。 さらに、データバインディングやデータ管理などのMVVM(Model-View-ViewModel)機能が提供されます。 プロジェクトプラットフォームと依存関係サービスを介してネイティブAPIにアクセスできます。
クロスプラットフォームのコード共有
さまざまなアプリケーションで共通のコードを使用するには、いくつかの方法があります。
- PCL(ポータブルクラスライブラリ) Pickleとしても知られるこのライブラリにより、開発者は複数のプラットフォーム用に設計された「クラスライブラリ」を作成できます。 このライブラリは実際に参照ノードとして機能し、各プラットフォームで使用可能なクロスAPIを提供します。 選択するプラットフォームが多いほど、利用できるプレーンAPIは小さくなります。
- 一般プロジェクト 。 プラットフォーム間でコードを共有する最も簡単な方法。 これは「バインディングファイル」として機能し、ターゲットプラットフォームとコードを共有します。 利点は、すべてのターゲットAPIがここで利用できるため、条件付きでコンパイルできることです。 ただし、このアプローチは混乱を招くコードになり、さらにこの場合、アセンブリは作成されません。ファイルはプラットフォームプロジェクトでリンクされます。
- .NET Standardまたは「netstandard」 netstandardライブラリは次の進化段階であり、PCLを置き換えることができます。 開発者は真のクロスプラットフォームライブラリを取得し、Mono、.NET Framework、.NET CoreなどのAPIを実装するランタイム環境で実行できます。
ライブラリソース
.NETおよびすべてのプラットフォームで使用可能なAPIは多数ありますが、さらに多くのAPIが必要な場合もあります。 そして、ここでそれらを取得できます:
- NuGetは、.NETを含むMicrosoftの開発プラットフォーム用のパッケージマネージャーです。 NuGetクライアントツールは、パッケージを作成および使用する機能を提供します。 NuGetギャラリーはパッケージの中央リポジトリであり、すべての作成者とユーザーが使用します。
- コンポーネント -「 コンポーネントストア」は、特別に選択されたライブラリギャラリーおよびXamarinプラットフォームマネージャーです。 iOSおよびAndroidアプリケーションに直接インストールできる有料および無料のライブラリを提供します。 これらのライブラリは、Xamarinコンポーネントの開発者とサードパーティの開発者の両方によって作成されます。
- プラグイン -実際、XamarinとWindowsのプラグインは優れています。 共通のコードからネイティブのクロスプラットフォームAPI関数に直接アクセスできます! オープンソースコードがあり、ジオロケーション、接続性、写真など、多くの素晴らしいものがここで利用できます。 各プラグインはMITライセンスの下で利用可能で、NuGetを介してiOS、Android、Windows、PCLまたは.NET標準ライブラリライブラリにインストールできます。
図書館
Xamarinによって作成または保守されているいくつかの非常にクールなライブラリを理解しましょう。
- MonoGameは、2Dおよび3Dでゲームを開発するための効率的で柔軟なクロスプラットフォームAPIです。 多くのクロスプラットフォームゲームエンジンの基盤を提供します。 ただし、ゲームエンジンにラップすることなく、ゲームで直接使用することもできます。
- UrhoSharpは、ジオメトリックシェイプ、マテリアル、ライト、カメラを使用するアプリケーションで、アニメーション化された3Dおよび2Dゲームやシーンを作成するために使用できる、高レベルのクロスプラットフォームエンジン(3Dおよび2D)です。 UrhoSharpは、HoloLensおよびVRと同様に、モバイルおよびデスクトップアプリケーションと互換性があります。
- SkiaSharpは、2Dバッファーでのレンダリングに使用できる豊富で強力なグラフィックスAPIを提供します。 これらを使用して、アプリケーションに含めることができるユーザーインターフェイス要素と2Dグラフィックスを実装できます。 SkiaSharpは、Skiaライブラリへの.NETバインディングであり、このライブラリの機能と強度を継承します。
- CocosSharpは、C#とF#を使用した2Dゲーム用のシンプルなライブラリです。 これは、人気のあるCocos2Dエンジンの.NETポートです。
知っておくべきこと:iOS
拡張機能は、たとえば、ユーザーがキーボードを要求したり写真を編集したりする「通知センター」など、標準的な状況でiOSによって提供されるウィジェットです。 すべての拡張機能は、コンテナアプリケーションと共にインストールされ、ホストアプリケーションの特定の「拡張ポイント」からアクティブ化されます。
watchOSは、Apple Watchデバイス用に設計されたiOSの特定のバージョンです。
tvOS-Appleは第4世代のApple TVハードウェアをリリースしました。これは、再設計されたタッチコントロールコンソールと新しいオペレーティングシステム(iOS9ベース)を備えています。
登録プロファイル -デバイスにアプリケーションをインストールするか、App Storeでリリースする必要がある場合、開発者アカウントを取得して登録プロファイルを作成する必要があります。 開発者のデバイス、アカウント、コンピューターをリンクする必要があります。
知る必要がある:Android
Android Wearは、スマートウォッチなどのウェアラブルデバイス向けに設計されたAndroidのバージョンです。
キーストア-Androidアプリケーションをそれぞれのストアに配置するために署名するために使用されます。
解析APIとSDK-コンパイル、最小化、計画-重要で探索する価値のあるすべてのもの。 関連する短いビデオをご覧ください。
知る必要がある:Xamarin
リンカーは 、 iOSおよびAndroidのアプリケーションのサイズを縮小するために使用され、アプリケーションで静的分析を実行して、どのノード、タイプ、およびクラスメンバーが使用されているかを判断します。 これにより、未使用のアイテムは破棄されます。
ILは、コンパイル時に作成される一種の中間言語です。 スコットが書いたように:C#はりんごで、ILはりんごソースを作り、JIT / AOTとランタイムはりんごジュースです。
AOT -Ahead of Time Compilation(「先行コンパイル」)の略で、ILを取得してマシンコードにコンパイルし、結果のバイナリファイルをネイティブ形式で実行します。 これはXamarin.iOSが使用するものです。
JIT -Just in Time Compilation(「インスタントコンパイル」)の略で、ILを取得してコンパイルし、マシンコードとして実行する準備をします。 これはXamarin.Androidが使用するものです。
知っておくべきこと:iOS
Storyboardを使用すると、開発者は両方のプロビジョニングコントローラーを定義し、設計画面上でそれらの間を移動できます。また、WYSIWYGアプリケーションのユーザーインターフェイス編集も提供します。
XIBは、特定の逆クラスに添付できるスタンドアロンの.xibファイルを追加できるiOS View XIBテンプレートです。
レジストラ -マネージコードをObjective-Cに公開するコード。 NSObjectから継承された各管理クラスのリストを作成することにより、これを実現します。
知っておくべきこと:Android
Dalvik&ART 。 ARTは、Android上のアプリケーションおよび一部のシステムサービスで使用されるAndroidランタイムです。 ARTとその前身のDalvikは、もともとAndroidプロジェクト専用に作成されました。
Multi-Dex -Androidアプリケーション(APK)はDalvik Executable(DEX)の形式の実行可能バイトコードファイルで構成され、アプリケーションの実行に使用されるコンパイル済みコードが含まれています。 DalvikExecutable仕様は、単一のDEXファイルで参照できるメソッドの総数を65,536に制限しています。 Multi-DexはAPKの複数のDEXファイルを作成するため、制限を回避できます。
ABI(Application Binary Interface) -単一のAPKには、いくつかの異なるアーキテクチャをサポートするマシンコードが含まれる場合があります。 アーキテクチャ固有のコードの各コレクションは、バイナリアプリケーションインターフェイス(ABI)に関連付けられています。
AndroidとManaged Callable Wrappersは、.NETがJavaと通信したり、その逆を可能にするものです。
Android仮想デバイスは、アプリケーションのデバッグに使用されるAndroidエミュレーターです。
HAXM(Hardware Accelerated Execution Manager) -仮想化用に設計されたWindowsおよびmacOS用のIntelソフトウェア。これにより、素晴らしいAVDが得られます。
みんな知っててよかった
Xamarin.Formsロードマップは、 Xamarin.Formsの今後の機能と修正のための優れた戦略計画です。
Xamarin プロファイラーは 、既存のXamarinアプリケーションツールと統合します。 これを使用して、メモリリークを探し、パフォーマンスのボトルネックを排除し、アプリケーションを自由にフロートさせる前に磨きます。
Model-View-ViewModel(MVVM)は、XAMLを念頭に置いて考案されたアーキテクチャテンプレートです。 テンプレートは、プロビジョンとモデル(ViewModel)の間の媒介として機能するクラスを介して、XAMLユーザーインターフェイス(プロビジョニング)とソースデータ(モデル)の分離を確立します。 多くの場合、ViewとViewModelは、XAMLファイルで定義されたデータバインディングを介して接続されます。 ビューのBindingContextは通常、ViewModelのインスタンスです。
カスタムリンカー -デフォルトで使用可能なオプションのセットが十分でない場合、XMLファイルを使用してリンクプロセスを制御できます。XMLファイルは、リンカーに必要なものを記述します。
注目に値するポータル
- ブログをリリース -何が起こっているのかを常に把握しましょう。
- Xamarin on Twitter-ツイートして、もう一度ツイートしてください!
- Xamarinイベント -Xamarinの世界で起こるすべて。
- Xamarinポッドキャスト-Merge Conflictを聞いていませんが、Xamarinポッドキャストを聞くことを強くお勧めします。
- 毎週のXamarin-毎週のXamarin Everythingのセレクション!
翻訳していただきありがとうございます。
アレクサンダー・アレクシーエフ-Xamarin-developer、フリーランサー。 2012年から.NETプラットフォームを使用しています。 彼はディガンマの調達自動化システムの開発に参加しました。 2015年以来、彼はフリーランスに入り、Xamarinを使用したモバイル開発に切り替えました。 現在、iOSアプリケーションでStecPointで作業しています。
リソースXamDev.ruおよびソーシャルネットワークのコミュニティ「Xamarin Developers」をリードしています: VK 、 Facebook 、 Telegram 。