45
Xamarin & Universal Windows アアアアアアア Windows アアアアア 第 19 第 OITEC 第第第第第第第

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

Embed Size (px)

Citation preview

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

Xamarin & Universal Windows アプリで広がる

Windows ストア解説

第 19 回 OITEC 勉強会スライド

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

Agenda

•Universal Windows アプリケーションについて

• Xamarin について

•その他

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

今日伝えたいこと

•Visual Studio でマルチプラットフォーム開発が面白い !!

•Windows ストアアプリ周辺の話で、 Windows ストアアプリに関してはあまり言及しない

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

今日伝えたいひと

•ストアアプリは作れるようになったけど、

ストアがいまひとつ盛り上がってない どうしよう?

•スマートフォン開発でそれぞれ言語を使い分けるのが面倒

•Visual Studio が好き !!

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

Universal Windowsアプリケーション

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

•Windows 8 向けの Windows ストアアプリと Windows Phone 向けのアプリケーションを共通のコードで作成できる。

Universal ~とは?

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

•ストアアプリと WP の 9 割の API が共通化

•Windows Phone も WinRT ベースになったけど、既存アプリはちょっと大変

Universal ~とは?

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

•Windows ストアアプリはあまり影響がない

•Windows Phone 側は選択が必要

Universal ~の影響

API に不十分な部分はあるがストアアプリ展開が可能将来性高

使える API は多い8 からの変更点が少ない将来は WinRT にシフト?

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

•Windows ストアと Windows Phone の共有ファイルを配置する Shared プロジェクトが追加

•コードの共有は従来の PCL or Shared プロジェクト( PCL = Portable Class

Library )

Universal ~で追加されたもの

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

Shared プロジェクトと PCL の違い

• Shared プロジェクトは #if でプラットフォームの別の case わけが可能。

• PCL は case わけができず、プラットフォーム固有の処理は使えない。 dll として別プロジェクトでも利用可能。

(全体図を説明した後もう一度触れます)

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

•試してみるWindows ストアプリを Universal

実際どうなん?

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

Windows Phone プロジェクトを追加

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

Shared に移してみる

•Shared に思い切ってファイルをガンガン移動(実際はエラーを確認しながら移動していきます)

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

•今回は View ファイルはほとんど共有できました(今回の場合共有できなかったのは、 Windows

Phone には存在しない手書き機能のページ)

View の共有

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

セオリー

•今回はゲームなので同じ画面を共有できたが、画面はストアアプリ、WP で別々の設計が必要

•ViewModel 、Model は大部分が共有可能。

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

コードは公開中

Github の coelacanth77 でコードが DL

できます。

(広告の ID などが消してあるので動かすにはその辺の編集が必要)

https://github.com/coelacanth77/

EscapeOfKinokoForestSample

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

まとめ

• 既存のアプリを展開する場合は API 次第で作業量が変わる

• Windows Phone は WinRT ベース( Universal )で行くか、 Silverlight ベースで行くか要検討

• 画面サイズが違うので View は別々に作ることが多いが、ゲームのような単純に拡大・縮小で対応できる場合は共通化できる

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

Xamarin について

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

Xamarin について

•C#&Visual Studio でiOS 、 Android のアプリケーションの作成が可能

•お値段高め

•高速進化中

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

C# で iOS 、 Android のアプリ作成が可能

•画面はそれぞれの仕組み

    iOS StoryBoard

    Android XML

    Windows ストア    Windows Phone

XAML

最新の環境だと iOS, Android も XAML で開発可能(後述)

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

C# で iOS 、 Android のアプリ作成が可能

•API はそれぞれのプラットフォームに合わせた呼び出しが必要

•ラップするだけなのでバージョンアップへの対応は早い !!

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

Xamarin.iOS

•開発するには Mac が必要

•最新の Xamarin3 では Visual

Studio 上で Story b oard の編集が可能に(デモをお見せしたいが、 Mac に接続してないとできない…)

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

Xamarin.iOS

•デリゲートや Linq などが使えるので便利。

•ローカルファイルへの処理、カメラ、位置情報などなど良く使う機能はXamarin.Android も合わせて同じ API 呼び出しができるように抽象化されている。(もちろん、 API も使える)

• iOS 開発に C# の便利なところを取り入れられる感じ

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

Xamarin.iOS

•MVVM では書き辛い ( 個人的感想 )

→Native に近い書き方を選択

•Android や WinRT との共通化は思ったよりできる(プラットフォーム依存のコードなどはinterface などを使って手続きだけ共通化)

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

Xamarin.iOS

// PCL 側は interface定義を記述

public interface IFileManager

{

void saveData(string str, string key);

string getData(string key);

}

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

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 プロジェクト

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

Xamarin.iOS

•開発するのに Mac が必要なのがやはり不便。

メイン OS を Mac にして仮想でWindows+ VisualStudio

という構成が安定

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

Xamarin.Android

•MVVMCross で MVVM 開発が便利 !!

•実機がないとストレス( Xamarin に限らず)

•Android 開発の知識はやっぱり必要

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

Xamarin+Universal

• iOS, Android, Windows ストア ,

Windows Phone の開発が 1 つのソリューションで‼

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

PCL or Shared

•共通処理は PCL か Shared プロジェクト選択

• PCL はライブラリ化できるが「 Android

の場合」といったケースわけができない

• Shared プロジェクトはケースわけが可能ただしライブラリ化はできない

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

Shared プロジェクト内で分岐

#if WINDOWS_APP

var setup = new Setup(rootFrame);

  … Windows ストアアプリ固有の処理…

#endif

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

Xamarin.Form

• Xamarin3 で追加された iOS とAndroid 、 WP の UI を共通の XAML で記述できる機能

•追加されたばかりなので色々不便もあるが、今後完成度を高めれば非常に素晴らしい機能になりそう

• Xamarin.Forms Control Galleryhttp://developer.xamarin.com/guides/cross-platform/xamarin-forms/controls/

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

Xamarin.Form

•各プラットフォームで共通して使えるという仕組みのため機能が最大公約数になる

•もし、それぞれのプラットフォーム固有の機能を利用する場合は固有のView ( XAML とか Storyboard )を使う

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

コンポーネントストア

•Xamarin版 Nuget

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

コンポーネントストア

•Xamarin.Mobile

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

Xamarin まとめ

• iOS,Android,Windows ストア ,WP

のすべてを C# で書ける魅力的なツール

•ただし高い、ただし進化の途中で変更も多い

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

その他

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

ツール

•Appmethod 

• Delphi の機能をモバイル開発に絞ったもの

• C++

•Cordova• =PhoneGap ?

• JavaScript

•Adobe AIR

• ActionScript

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

ツール

•Unity (ゲーム特化)

•Qt

•WebView (ツールじゃない

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

資料

•de:codehttp://channel9.msdn.com/Events/de-code/2014

Xamarin については MS渡辺さんの

iOS/Android アプリを C#/.NET で開発 - Xamarin で実現するクロスプラットフォーム対応 –

がおすすめ(それ以外も一見の価値あり)

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

資料

•Xamarin Japan ( facebook )

  Xamarin の日本代理店のエクセルソフトの方も

 日本語での技術的な質問はここが良さそう(英語だと公式のフォーラム)

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

TypeScript 、 JavaScript

•Windows ストアアプリでも TypeScript

を利用可能に( Express は NG )

Store Apps Templates with TypeScript

http://visualstudiogallery.msdn.microsoft.com/bd97e47d-ed3a-4f5e-

ace2-37bbcb545c9e

•Windows Phone でも JavaScript が使えるように

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

お値段

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

ご静聴ありがとうございました