Upload
yasuhiko-yamamoto
View
1.253
Download
2
Embed Size (px)
DESCRIPTION
サンプルコードは SkyDrive にあります。 http://t.co/Z9DnR4ho
Citation preview
わんくま同盟 名古屋勉強会 #25
2012/12/1BluewaterSoft
biac
Windows 8 ストア・アプリ / Windows Phone 8 アプリ、
両面撃破作戦
わんくま同盟 名古屋勉強会 #25
Windows 8 と Windows Phone 8
• 同じアプリを作る!
例: 「クラウディアさんタイマー」※両方ともストアに公開済み
わんくま同盟 名古屋勉強会 #25
Windows 8 と Windows Phone 8
• できるだけコピペしたくない!!
• それじゃ、コードは!?
「クラウディアさんタイマー」では、画像と音声のリソースは、リンクして使った。
・画像と音声は Win8 のプロジェクトに置いた。・WP8 のプロジェクトからは、リンクして取り
込んだ。
【本日のテーマ】
・どちらからも使える DLL を作る (=PCL)・ソースコードをリンクして使う
わんくま同盟 名古屋勉強会 #25
自己紹介著書
「速攻入門 C#」 (2012/3)技術評論社、共著「ソフトな彼女とハードな彼氏。」(2012/3) アジャイルマインドvol.1 掲載
記事連載 「C#でTDD入門」
CodeZine週刊連載「WinRT/Metro Tips」
@IT - .NET開発者中心…etc.
biac (山本 康彦)
BluewaterSofthttp://www.bluewatersoft.jp/
• 名古屋大学工学部(修士)• HONDA R&Dで自動車設計• 1994~ ソフトウェア業界• 2012~ BluewaterSoft
ソフトウェア開発
Windows 8 Metro Style App.Windows Phone 8…Windows系の最新技術
TDD(コーディング技法)の普及
著作
わんくま同盟 名古屋勉強会 #25
自己紹介 (続き)
• 最近は、こんなアプリを書いてます
5
・青空文庫リーダー・ライト・クラウディアさんタイマー・bwNotepad: 簡易メモ帳・bwDevTools: Metro Color Chart
Windowsストアで公開中!!
わんくま同盟 名古屋勉強会 #25
かつて Metro と呼ばれていた何か⇒ "Windows 8 ストア・アプリ"(?)
• Windows 8
• Windows RT
• Windows Phone 8
わんくま同盟 名古屋勉強会 #25
ん!?
「Windows RT」って、ナニ?
• プログラマ的には…
Windows Runtime の略
• Metroスタイル・アプリの開発に使うAPIセット。
• 実体はCOM
.NETから使いやすい仕掛けが付いた。Windows APIの再創造だと思ってもいい。
• 商品名としては…
ARM用の Windows 8
• ARM CPUで動くWindows 8
• Metroスタイル・アプリとOffice 2013のみ。ユーザーには、ネイティブアプリのインストールを許さない。
• Windows Phone 8 のOSは、Windows RTベース。
わんくま同盟 名古屋勉強会 #25
開発環境
• Windows 8 (必須)
• Visual Studio (必須)
・Express (無償) で OK
・Windows Phone 8 は、SDK を別途インストール(Express もアリ)
• 開発者アカウント (必須)
年会費Windows 8 4,900円 (個人)
Windows Phone 9,800円※キャッシュカード必須
• お、お金が・・・ orz
• 学生なら! (高専、大学等)⇒ DreamSparkプログラム
http://t.co/fdunBKad
• 設立 3年以内のベンチャーなら!⇒ BizSpark プログラム
http://t.co/GqDpfCog
どちらも、開発ツールとアカウントが無料に!!
わんくま同盟 名古屋勉強会 #25
Win8 Metro アプリの作り方 (ざっくりw
• .NET プログラマー向き
XAML + C# (VB)
• C++も使えるDirectX 使うには C++ 必須
• サンプルコード等は、C# C# C# C# C# C# C# ・・・VBは不利
• Web プログラマー向き
HTML + JavaScript
• ただしクラスライブラリは、C# 等で作る必要がある
• ごめん、C#er には JavaScript
でのコーディングはタルすぎて・・・JavaScriptの偉い人にお任せ!
※ WP8 もやるなら、JavaScript は無い。
Windows Phone API reference
http://msdn.microsoft.com/library/windowsphone/develop/ff626516
わんくま同盟 名古屋勉強会 #25
Windows Phone 7 と 8 の比較
http://windowsteamblog.com/windows_phone/b/windowsphone/archive/2012/06/20/announcing-windows-phone-8.aspx
WP 8 WP 7.x
OSカーネル
Windows RT(ARM版Win8)
CE 6.0
画面解像度800 x 4801280 x 7201280 x 768
800 x 480
RAM512MB1GB
256MB512MB
開発MetroXNA
SilverlightXNA
Windows Phone 8
わんくま同盟 名古屋勉強会 #25
世界スマートフォン市場シェア推移予測 (2012年/2016年)出典: IDC Worldwide Quarterly Mobile Phone Trackerhttp://www.itmedia.co.jp/news/articles/1206/07/news077.html
ところで、Windows Phone って、どーよ!?
※ 予想した会社によってバラつくが、数年でiPhoneに追いつくだろうという点では一致している。
わんくま同盟 名古屋勉強会 #25
Win8 Metro と WP8 の API
• WP8 は Win8 Metro のサブセット
• UIコントロール … だいぶ違うWP8のは、WP7から引き継いだ感じ
• WinRT / .NET API … だいぶ違う少ないだけじゃない。WP8独自のも。
• WinMD … WP8では使えない (たぶん)
…とは、言い難い!
わんくま同盟 名古屋勉強会 #25
UIに使うコントロール
• ずいぶん違う
ただし、共通のものはけっこうコピペ出来る (^^)
XAML controls comparison between Windows Phone 8 and Windows 8
http://msdn.microsoft.com/library/windowsphone/develop/ff626516
わんくま同盟 名古屋勉強会 #25
WinRT
• だいぶ違う
共通部分の一部を、PCLとしてバイナリで共用可能
残りの共通部分は、コードレベルで共用可能
"Windows Phone API reference" 掲載の図から描き起こしhttp://msdn.microsoft.com/library/windowsphone/develop/ff626516
わんくま同盟 名古屋勉強会 #25
PCL - Portable Class Library
• 複数の.NETプラットフォームで共用できるクラスライブラリ (DLL)
ロジックやデータ周りはけっこうイケル♪
• とりあえず、このへん読んで!
MSDN マガジン 2011年 8月号「ポータブル クラス ライブラリ: 入門」
http://msdn.microsoft.com/ja-jp/magazine/hh335063.aspx
わんくま同盟 名古屋勉強会 #25
PCL を作るには Visual Studio の Pro. 版以上
• Expressのプロジェクト テンプレートには、無い
※ Win8 Metro と WP8 に限定する(右の画像)と、かなり使える API が増える (^^)
わんくま同盟 名古屋勉強会 #25
WinMD - Windows ランタイムコンポーネント
• バイナリの拡張子が .winmd※語源は Windows Meta Data
• 使い道・Win8 Metro のバックグラウンド タスク※バックグランド タスクには必須
・Win8 Metro アプリをJavaScript で作るときに使えるクラス ライブラリ
• とりあえず、このへん読んで!MSDN マガジン Windows 8 Special Issue 2012
「Windows Runtime Components in a .NET World」http://msdn.microsoft.com/ja-jp/magazine/jj651570.aspx
わんくま同盟 名古屋勉強会 #25
Win8 / WP8 / PCL / WinMD …ややこしいっ
Win8 Metro アプリ
WP8 アプリ
Win8 Metroバックグラウンド
タスクWinMD
クラスライブラリ
P C L
Win8 Metro 用クラスライブラリ
WP8 用クラスライブラリ
Win8 Metro
ランタイム
WP8
ランタイム
わんくま同盟 名古屋勉強会 #25
PCLの例では、PCLの実例をいくつかご紹介。あ、WinMDも。
わんくま同盟 名古屋勉強会 #25
Hello, PCL! (1/3 - from Win8)
• ごくシンプルなクラス
PCL
Win8
XAML
Win8コードビハインド
わんくま同盟 名古屋勉強会 #25
Hello, PCL! (2/3 - from WP8)
• ごくシンプルなクラス
PCLWP8
XAML
WP8コードビハインド
わんくま同盟 名古屋勉強会 #25
Hello, PCL! (3/3 - 実行結果)
• ごくシンプルなクラス
PCL
WP8
Win8
Metro
わんくま同盟 名古屋勉強会 #25
Hello, PCL! (番外 - WinMDから使う)
• ごくシンプルなクラス
PCL
WinMD
Win8コードビハインド
わんくま同盟 名古屋勉強会 #25
INotifyPropertyChangedを実装してバインド
• 使える! (WinMDもOK)
PCL
WinMD
わんくま同盟 名古屋勉強会 #25
ObservableCollectionを公開してバインド
• PCLならイケる! (WinMDでは使えない)
PCL
わんくま同盟 名古屋勉強会 #25
Web アクセス
• WebClientは無い。HttpWebRequestを使う。
• …んが!? WP8でShift-JISがエンコードできん!! orz
わんくま同盟 名古屋勉強会 #25
PCL の罠
• コンパイルできるからと言って、Win8 と WP8 で挙動が同じとは限らない!
* WP8 では実装されてなかったり、例外が出たり… orz
* ユニットテストの楽な Win8 側で作る。でも、WP8 でのテストも必須 !!
わんくま同盟 名古屋勉強会 #25
UI系はPCLに入っていない
• Win8とWP8に共通でも、PCLに入っていないものがある。例: Windows.System.Launcher
ソースをリンクして使うっきゃない!!
わんくま同盟 名古屋勉強会 #25
まとめ
• Win8とWP8なら、ロジックはだいたいPCL でイケるよ!!
わんくま同盟 名古屋勉強会 #25
ご清聴ありがとうございました