SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

速習 Xamarin入門

Xamarinで広がるC#によるマルチプラットフォーム開発

速習 Xamarin入門 第1回

共通化について

コードの共有が開発効率に影響する

 今回紹介するXamarin、そしてUniversal Windowsアプリケーションと、マルチプラットフォーム開発が進むなか、コードの共有が開発効率に与える影響が大きくなりつつあります。

 XamarinはiOS、AndroidのネイティブなAPIをC#でラッパーした形で呼び出すため、コードの共有は難しいのではと感じていましたが、実際にアプリを作成してみると、アプリの機能次第では、多くのコードが共有できると考えるようになりました。

ファイル操作などは共通の仕組みが用意されている

 iOS、Android共通のファイル操作としてSystem.IO.Fileクラスが用意されており、それぞれのネイティブなAPIではなく、System.IO.Fileファイルクラスを利用することでコードを共有できます。

 ただし、Windows Phone、Windowsストアアプリも共有化しようとするとSystem.IO.Fileファイルクラス以外を使う必要が出てきます。

プラットフォーム固有のAPIを使わなくても意外と書ける

 アプリケーションの機能にもよりますが、シンプルなものであれば、プラットフォーム固有のAPIを使う部分だけ分離することで意外と開発できます。この辺は作るアプリケーションの機能によって大きく感想が異なる部分かもしれません。

コードを共有する仕組み

 Xamarinを用いたマルチプラットフォーム開発では、以下のようなコードを共有する仕組みが主に用いられます。

Sharedプロジェクト

 Sharedプロジェクトは、Universal Windowsアプリケーションのコードを共有する仕組みとして登場しました。文字通り、複数のプロジェクトでコードをShare(共有)することができるプロジェクトです。

 Visual StudioでSharedプロジェクトを利用する場合は、Universal Windowsアプリケーションで追加された既存のSharedプロジェクトを利用するか、Shared Project Reference Managerを利用します(Visual Studio Expressエディションは不可)。

 Sharedプロジェクトは後述するPCL(Portable Class Library)のようにdllとして再利用するポータビリティはありませんが、それぞれのプラットフォームごとにケースわけしてコードを記述することができます。

プラットフォームごとにSharedプロジェクトのコードを場合わけする
#if __WINDOWS_PHONE_APP__
            str = "Hello Windows Phone";
#endif

#if __IOS__
            str = "Hello iOS";
#endif

#if __WINDOWS_APP__
            str = "Hello Windows";
#endif

#if __ANDROID__
            str = "Hello Android";
#endif

PCL(Portable Class Library)

 PCLは異なる.NET環境(WPF、Windows Phone, Windowsストアなど)で共通で利用できるライブラリを作成するための仕組みです。XamarinをインストールするとPCLにXamarin.iOS、Xamarin.Androidが追加されます。

PCLで対応するプラットフォームを選択
PCLで対応するプラットフォームを選択

 PCLには対応するすべてのプラットフォームで動作するコードしか記述できません。

 Sharedプロジェクトのように場合分けを行うことはできないので、PCLでコードの共有を図る場合は、PCL部分はinterfaceによる操作を記述して、実装は各プラットフォームのプロジェクトというような工夫が必要ですが、この方法だとPCLのポータビリティは低下してしまいます。

次のページ
Xamarin.Form

この記事は参考になりましたか?

この記事の著者

西村 誠(ニシムラ マコト)

 Microsoft MVP Windows Platform Development。 Flash、PHPの開発経験もあり国産ECサイト構築フレームワーク「EC-CUBE」の公式エバンジェリストでもある。 ブログ:眠るシーラカンスと水底のプログラマー 著書:基礎から学ぶ Windowsストアアプリ開発

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/7907 2014/08/05 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー