Xamarin & Universal
Windowsアプリで広がる
Windowsストア解説
第19回OITEC勉強会スライド
Agenda
• Universal Windowsアプリケーションに
ついて
• Xamarinについて
• その他
今日伝えたいこと
•Visual Studioで
マルチプラットフォーム開発が
面白い!!
•Windowsストアアプリ周辺の話で、
Windowsストアアプリに関しては
あまり言及しない
今日伝えたいひと
• ストアアプリは作れるようになったけど、
ストアがいまひとつ
盛り上がってない どうしよう?
• スマートフォン開発で
それぞれ言語を
使い分けるのが面倒
•Visual Studioが好き!!
Universal Windows
アプリケーション
•Windows 8向けのWindowsストア
アプリとWindows Phone向けのア
プリケーションを共通のコードで作
成できる。
Universal~とは?
• ストアアプリとWPの9割のAPIが共通化
• Windows PhoneもWinRTベースになっ
たけど、既存アプリはちょっと大変
Universal~とは?
•Windowsストアアプリはあまり影
響がない
•Windows Phone側は選択が必要
Universal~の影響
APIに不十分な部分はあるが
ストアアプリ展開が可能
将来性高
使えるAPIは多い
8からの変更点が少ない
将来はWinRTにシフト?
• WindowsストアとWindows Phoneの共有
ファイルを配置するSharedプロジェクトが
追加
• コードの共有は従来のPCL or Sharedプロ
ジェクト(PCL=Portable Class Library)
Universal~で追加されたもの
SharedプロジェクトとPCLの違い
• Sharedプロジェクトは#ifでプラット
フォームの別のcaseわけが可能。
• PCLはcaseわけができず、プラット
フォーム固有の処理は使えない。dllとし
て別プロジェクトでも利用可能。
(全体図を説明した後もう一度触れます)
•試してみる
WindowsストアプリをUniversalに
実際どうなん?
Windows Phoneプロジェクトを追加
Sharedに移してみる
•Sharedに思い切って
ファイルをガンガン移動
(実際はエラーを確認しながら移動していきます)
•今回はViewファイルはほとんど共有
できました
(今回の場合共有できなかったのは、Windows
Phoneには存在しない手書き機能のページ)
Viewの共有
セオリー
•今回はゲームなので同じ画面を共有
できたが、画面はストアアプリ、
WPで別々の設計が必要
•ViewModel、
Modelは大部分が
共有可能。
コードは公開中
Githubのcoelacanth77でコードがDLでき
ます。
(広告のIDなどが消してあるので動かすに
はその辺の編集が必要)
https://github.com/coelacanth77/Escap
eOfKinokoForestSample
まとめ
• 既存のアプリを展開する場合はAPI次第で作業
量が変わる
• Windows PhoneはWinRTベース
(Universal)で行くか、Silverlightベースで
行くか要検討
• 画面サイズが違うのでViewは別々に作ること
が多いが、ゲームのような単純に拡大・縮小で
対応できる場合は共通化できる
Xamarinについて
Xamarinについて
•C#&Visual StudioでiOS、Android
のアプリケーションの作成が可能
•お値段高め
•高速進化中
C#でiOS、Androidのアプリ作成が可能
•画面はそれぞれの仕組み
iOS StoryBoard
Android XML
Windowsストア
Windows Phone
XAML
最新の環境だとiOS, AndroidもXAMLで開発可能(後述)
C#でiOS、Androidのアプリ作成が可能
•APIはそれぞれのプラットフォーム
に合わせた呼び出しが必要
•ラップするだけなのでバージョン
アップへの対応は早い!!
Xamarin.iOS
•開発するにはMacが必要
•最新のXamarin3ではVisual Studio
上でStoryboardの編集が可能に
(デモをお見せしたいが、Macに接続してないとできない…)
Xamarin.iOS
• デリゲートやLinqなどが使えるので便利。
• ローカルファイルへの処理、カメラ、位
置情報などなど良く使う機能は
Xamarin.Androidも合わせて同じAPI呼び
出しができるように抽象化されている。
(もちろん、APIも使える)
• iOS開発にC#の便利なところを取り入れ
られる感じ
Xamarin.iOS
•MVVMでは書き辛い(個人的感想)
→Nativeに近い書き方を選択
•AndroidやWinRTとの共通化は思っ
たよりできる
(プラットフォーム依存のコードなどは
interfaceなどを使って手続きだけ共通化)
Xamarin.iOS
// PCL側はinterface定義を記述
public interface IFileManager
{
void saveData(string str, string key);
string getData(string key);
}
Xamarin.iOS
// プラットフォーム依存部分はそれぞれのプロジェクトで実装
/// <summary>
/// iOS版FileManager
/// </summary>
class FileManager : IFileManager
{
string path =
System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
public void saveData(string data, string key)
{
string filePath = path + "/" + key + ".txt";
File.WriteAllText(filePath, data);
}
それじゃPortableじゃないよね? というのが気になるならSharedプロジェクト
Xamarin.iOS
•開発するのにMacが必要なのがやは
り不便。
メインOSをMacにして
仮想で
Windows+VisualStudio
という構成が安定
Xamarin.Android
•MVVMCrossでMVVM開発が便利!!
•実機がないとストレス
(Xamarinに限らず)
•Android開発の知識はやっぱり必要
Xamarin+Universal
•iOS, Android, Windowsストア,
Windows Phoneの開発が1つのソ
リューションで‼
PCL or Shared
• 共通処理はPCLかSharedプロジェクト選択
• PCLはライブラリ化できるが「Androidの
場合」といったケースわけができない
• Sharedプロジェクトはケースわけが可能
ただしライブラリ化はできない
Sharedプロジェクト内で分岐
#if WINDOWS_APP
var setup = new Setup(rootFrame);
…Windowsストアアプリ固有の処理…
#endif
Xamarin.Form
• Xamarin3で追加されたiOSとAndroid、
WPのUIを共通のXAMLで記述できる機能
• 追加されたばかりなので色々不便もある
が、今後完成度を高めれば非常に素晴ら
しい機能になりそう
• Xamarin.Forms Control Gallery
http://developer.xamarin.com/guides/cross-platform/xamarin-forms/controls/
Xamarin.Form
•各プラットフォームで共通して使え
るという仕組みのため機能が最大公
約数になる
•もし、それぞれのプラットフォーム
固有の機能を利用する場合は固有の
View(XAMLとかStoryboard)を
使う
コンポーネントストア
•Xamarin版Nuget
コンポーネントストア
•Xamarin.Mobile
Xamarinまとめ
•iOS,Android,Windowsストア,WP
のすべてをC#で書ける魅力的な
ツール
•ただし高い、ただし進化の途中で変
更も多い
その他
ツール
• Appmethod
• Delphiの機能をモバイル開発に絞ったもの
• C++
•Cordova
• =PhoneGap?
• JavaScript
• Adobe AIR
• ActionScript
ツール
•Unity(ゲーム特化)
•Qt
•WebView(ツールじゃない
資料
•de:code
http://channel9.msdn.com/Events/de-code/2014
XamarinについてはMS渡辺さんの
iOS/Android アプリを C#/.NET で開発 -
Xamarin で実現するクロスプラットフォーム
対応 –
がおすすめ(それ以外も一見の価値あり)
資料
•Xamarin Japan(facebook)
Xamarinの日本代理店のエクセル
ソフトの方も
日本語での技術的な質問はここが
良さそう(英語だと公式のフォーラ
ム)
TypeScript、JavaScript
• WindowsストアアプリでもTypeScriptを
利用可能に(ExpressはNG)
Store Apps Templates with TypeScript
http://visualstudiogallery.msdn.microsoft.com/bd97e47d-ed3a-4f5e-ace2-
37bbcb545c9e
• Windows PhoneでもJavaScriptが使える
ように
お値段
ご静聴ありがとうございました

(公開用)Xamarin & universal windowsアプリで広がるwindowsストア解説