Upload
makoto-nishimura
View
829
Download
6
Embed Size (px)
Citation preview
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/
EscapeOfKinokoForestSample
まとめ
• 既存のアプリを展開する場合は 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 上で Story b oard の編集が可能に(デモをお見せしたいが、 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 Galleryhttp://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:codehttp://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 が使えるように
お値段
ご静聴ありがとうございました