読者です 読者をやめる 読者になる 読者になる

Xamarin 日本語情報

Xamarin(ザマリン) の代理店だったエクセルソフト田淵のブログです。主に Xamarin に関するエントリーをアップしていきます。(なるべく正しい有益な情報を掲載していきたいと考えていますが、このブログのエントリーは所属組織の公式見解ではありませんのでご注意ください)

Visual Studio での PCL (Portable Class Library) の Profile について

Visual Studio Xamarin

こんにちは。エクセルソフトの田淵です。

Visual Studio で Xamarin でアプリを開発する際に、PCL (Portable Class Library) の Profile を指定する指針になればと思い、ざっくりと調べました。

PCL (Portable Class Library) について

PCL はプラットフォーム間でソースを共有する仕組みの一つです。
PCL (Portable Class Library) と Xamarin については 榎本さんBuildInsider 連載 をご覧頂くのが良いかと思います。

Xamarin のソース共通化の手法としては、PCL の他に Visual Studio 2013 Update 2 以降でサポートされている ユニバーサルアプリ で使われている Shared Project があります。詳細については以下をご参照ください。

PCL (Portable Class Library) は対象とするプラットフォームの組み合わせによって、いくつもの Profile があります。逆に言うとプロファイル以外の組み合わせは出来ません。

Visual Studio の UI からはどの Profile かは見えませんが、.csproj にはその情報が記載されています。

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
  <PropertyGroup>
   ...略...
     <TargetFrameworkProfile>Profile78</TargetFrameworkProfile>
    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
  </PropertyGroup>

Visual Studio / Xamarin Studio で Xamarin.Forms プロジェクトを作成した際のデフォルトの Profile は、Windows Phone Sliverlight 8 のプロジェクトがセットのため 78 になっていて、Xamarin Native Portable プロジェクトを作成した際のデフォルトの Profile は Winsows Phone 8.1 (WinRT) がセットのため 111 になっています。Profile 78 を Xamarin Studio から見ると、対応プラットフォーム (PF) は以下のように .NET 4.5, Windows Phone 8 or later, Windows 8, Windows Phone Silverlight 8, Windows Store apps (Windows 8), Xamarin.Android, Xamarin.iOS Classic, Xamarin.iOS Unified, Xamarin.Mac Unified となっています。全部入りですね笑。

f:id:ytabuchi:20141210132013p:plain

Profile は以下のように沢山あります。

f:id:ytabuchi:20141210132212p:plain

.NET 4.5 に対応する Profile 7, 49, 78, 111, 259 なのですが、Visual Studio の UI 上からは Profile は分からないので、.NET 4.5 に対応した Profile だけ以下にチェック項目を纏めてみました。私の Windows 8.1 / Visual Studio 2013 Update 4 の環境で Xamarin Studio のに比べてチェック項目が少ないのは、Windows 8 (WPF?) と Windows Store apps (Windows Runtime?) とかが一緒になってたり、Mac が無かったりしているのではないかな?と思います。詳しい方は教えてほしいです。。

Profile VSチェック項目 対応PF(Macでチェック)
Profile 7 f:id:ytabuchi:20151102002452p:plain:w200
Profile 49 f:id:ytabuchi:20151102002506p:plain:w200
Profile 78 f:id:ytabuchi:20151102002522p:plain:w200
Profile 111 f:id:ytabuchi:20151102002533p:plain:w200
Profile 259 f:id:ytabuchi:20151102002545p:plain:w200

どの Profile を使用するべき?

対象としたいプラットフォームによって選択してください。

PCL は仕組みとして組み合わせが増えれば使える機能が減っていきます。特に、Windows Store アプリや Sliverlight は制限が多いようです。

2015/11/1 追記:
2015/3 にリリースされた Xamarin.Forms for Windows を使用したい場合 (Xamarin.Forms for Windows を使ってみた - Xamarin 日本語情報 を参照) は Profile 259、Xamarin ネイティブのロジックを Windows Store アプリと共通化したい場合は Profile 7, 111, 259 のどれかを指定することになるかと思います。
また、2015/10 に Preview がリリースされた Xamarin.Forms for UWP を使用したい場合 (【速報】Xamarin.Forms for UWP Preview 版がリリースされました - Xamarin 日本語情報 を参照) は、Profile 111 が良いでしょう。

Xamarin 気になった方は

是非 ダウンロード(直接) / ダウンロード(弊社経由) して触ってみてください。 学習用リソースJXUG リンクページ に参考資料を纏めてますので併せてどうぞ。

Xamarin の情報が欲しい方はこのブログも購読いただいたりすると嬉しいです。

以上です。