SlideShare uma empresa Scribd logo
1 de 13
VSUG DAY – Summer
 ( 2012.06.16 )

“ なめらか”な
    メトロスタイルアプ
リを
        作るために
~ WinRT の非同期性を活用したアプリ開発
~      青柳 臣一
自己紹介



                  Twitter: @ShinichiAoyagi
           ブログ : http://shinichiaoyagi.blogspot.jp/



       仕事                           職場            自宅
   ソフトウエア開発
                                     大阪           大阪
  WPF 、 Silverlight 、               淀屋橋           吹田
      C# 、 VB 、




                  VSUG DAY - Winter 2012.06.16
“ なめらか”

• タッチ
 – マウス以上に遅延に敏感になる


• フィードバック
 – HDD のアクセスランプ


• メトロスタイルアプリのライフサイクル
 – 起動→サスペンド→再起動→…


          VSUG DAY - Winter 2012.06.16
非同期

• WinRT では多くの API が非同期
 – 50ms 以上かかる API は基本的に非同期
 – 非同期メソッドがある場合は同期版は無し


• 非同期メソッドは末尾に “ Async”
 – ファイル作成
   • StorageFolder.CreateFileAsync()
 – ファイル検索
   • StorageFolder.CreateFileQuery() のあと
     GetFilesAsync()
               VSUG DAY - Winter 2012.06.16
Asynchronous / Await

• Asynchronous
  – 発音記号 eɪ síŋkrənəs
  – 「エイシンクロナス」
  – 日本での発音は「アシンクロナス」が一般的
    ?
• Await
  – 発音記号 əwéɪ t
  – 「アウエイト」


• 今日は「アシンクロナス」
                VSUG DAY - Winter 2012.06.16
サンプル (1)




           VSUG DAY - Winter 2012.06.16
サンプル (2)




• async/await を使うと簡単すっきり




           VSUG DAY - Winter 2012.06.16
async / await

• 魔法ではない
  – C# / VB コンパイラががんばってコードを作
    っている
  – 詳細は C# Language Specification 5.0 に記
    載(たぶん、きっと)
     • 今は以下にあり
     • 「 C# Language Specification for Asynchronous Functions 」
       http://www.microsoft.com/en-us/download/details.aspx?id=23753




                      VSUG DAY - Winter 2012.06.16
自作 Async メソッド

• async メソッドの戻り値
 – void 、 Task 、 Task<T> のいずれかのみ




           VSUG DAY - Winter 2012.06.16
キャンセル / 進捗

• キャンセル
 – CancellationToken と
   CancellationTokenSource


• 進捗
 – IProgress<T>




              VSUG DAY - Winter 2012.06.16
async / await の注意点 (1)

• await から下はあくまで非同期
  – 見た目にだまされるとまずい
  – ときにはきちんとロックが必要かも
  – ローカル変数なら(ほぼ)安心
    • けど、魔法みたいになっちゃうことも




              VSUG DAY - Winter 2012.06.16
async / await の注意点 (2)

• await 後は必ず UI スレッドに返ってくる
  – 必要ないときは
   await XxxAsync()
    .ConfigureAwait(continueOnCapturedContext:false);

   await XxxAsync().ConfigureAwait(false);




                 VSUG DAY - Winter 2012.06.16
ご清聴ありがとうございました




   VSUG DAY - Winter 2012.06.16

Mais conteúdo relacionado

Mais procurados

a-blog cmsのインポート機能を使いこなす
a-blog cmsのインポート機能を使いこなすa-blog cmsのインポート機能を使いこなす
a-blog cmsのインポート機能を使いこなすSeiko Kuchida
 
かけ算で使いこなす Xamarin
かけ算で使いこなす Xamarinかけ算で使いこなす Xamarin
かけ算で使いこなす XamarinTatsuji Kuroyanagi
 
「Azureの動くしくみ」の片鱗を見て
「Azureの動くしくみ」の片鱗を見て「Azureの動くしくみ」の片鱗を見て
「Azureの動くしくみ」の片鱗を見てHideaki Aoyagi
 
ヤマムギ vol.1 kintone 入門ハンズオン
ヤマムギ vol.1 kintone 入門ハンズオンヤマムギ vol.1 kintone 入門ハンズオン
ヤマムギ vol.1 kintone 入門ハンズオンR3 institute
 
A 1-2 One ASP.NET - ASP.NET Web Stack
A 1-2 One ASP.NET - ASP.NET Web StackA 1-2 One ASP.NET - ASP.NET Web Stack
A 1-2 One ASP.NET - ASP.NET Web StackGoAzure
 
Sails.jsのメリット・デメリット
Sails.jsのメリット・デメリットSails.jsのメリット・デメリット
Sails.jsのメリット・デメリットIto Kohta
 
コンテナで作る開発環境 (20161104 CodeIgniter Night)
コンテナで作る開発環境 (20161104 CodeIgniter Night)コンテナで作る開発環境 (20161104 CodeIgniter Night)
コンテナで作る開発環境 (20161104 CodeIgniter Night)智之 大野
 
Swiftのプロパティオブザーバを使い倒す
Swiftのプロパティオブザーバを使い倒すSwiftのプロパティオブザーバを使い倒す
Swiftのプロパティオブザーバを使い倒すTomoki Hasegawa
 
20160624 JAWS-UG名古屋 第12回 API Gateway 事始め
20160624 JAWS-UG名古屋 第12回 API Gateway 事始め20160624 JAWS-UG名古屋 第12回 API Gateway 事始め
20160624 JAWS-UG名古屋 第12回 API Gateway 事始めToshiaki Aoike
 
JavaScriptの仕組みと未来のJavaScript ~ESNextとは~
JavaScriptの仕組みと未来のJavaScript ~ESNextとは~JavaScriptの仕組みと未来のJavaScript ~ESNextとは~
JavaScriptの仕組みと未来のJavaScript ~ESNextとは~Yuki Hirano
 
Idcfクラウドで始める構築自動化
Idcfクラウドで始める構築自動化Idcfクラウドで始める構築自動化
Idcfクラウドで始める構築自動化智之 大野
 
Xamarin で Prism を使いたい! ~「正式対応」 まで待てない人のための Prism 利用 Tips~
Xamarin で Prism を使いたい! ~「正式対応」 まで待てない人のための Prism 利用 Tips~Xamarin で Prism を使いたい! ~「正式対応」 まで待てない人のための Prism 利用 Tips~
Xamarin で Prism を使いたい! ~「正式対応」 まで待てない人のための Prism 利用 Tips~Tatsuji Kuroyanagi
 
サーバサイドエンジニアが 1年間まじめにSPAやってみた
サーバサイドエンジニアが 1年間まじめにSPAやってみたサーバサイドエンジニアが 1年間まじめにSPAやってみた
サーバサイドエンジニアが 1年間まじめにSPAやってみたItaru Kitagawa
 
最近のASP.NET事情2013Winter
最近のASP.NET事情2013Winter最近のASP.NET事情2013Winter
最近のASP.NET事情2013WinterNarami Kiyokura
 
Ember コミュニティとわたし
Ember コミュニティとわたしEmber コミュニティとわたし
Ember コミュニティとわたしRyunosuke SATO
 
How do you like knockout?
How do you like knockout?How do you like knockout?
How do you like knockout?Narami Kiyokura
 
Smart fxでのsocketio活用事例
Smart fxでのsocketio活用事例Smart fxでのsocketio活用事例
Smart fxでのsocketio活用事例剛志 森田
 
「いつアメブロから乗り換えるの? 今でしょ!」
「いつアメブロから乗り換えるの? 今でしょ!」「いつアメブロから乗り換えるの? 今でしょ!」
「いつアメブロから乗り換えるの? 今でしょ!」英一 森
 

Mais procurados (20)

a-blog cmsのインポート機能を使いこなす
a-blog cmsのインポート機能を使いこなすa-blog cmsのインポート機能を使いこなす
a-blog cmsのインポート機能を使いこなす
 
かけ算で使いこなす Xamarin
かけ算で使いこなす Xamarinかけ算で使いこなす Xamarin
かけ算で使いこなす Xamarin
 
「Azureの動くしくみ」の片鱗を見て
「Azureの動くしくみ」の片鱗を見て「Azureの動くしくみ」の片鱗を見て
「Azureの動くしくみ」の片鱗を見て
 
ヤマムギ vol.1 kintone 入門ハンズオン
ヤマムギ vol.1 kintone 入門ハンズオンヤマムギ vol.1 kintone 入門ハンズオン
ヤマムギ vol.1 kintone 入門ハンズオン
 
Xamarin.iOS
Xamarin.iOSXamarin.iOS
Xamarin.iOS
 
A 1-2 One ASP.NET - ASP.NET Web Stack
A 1-2 One ASP.NET - ASP.NET Web StackA 1-2 One ASP.NET - ASP.NET Web Stack
A 1-2 One ASP.NET - ASP.NET Web Stack
 
Sails.jsのメリット・デメリット
Sails.jsのメリット・デメリットSails.jsのメリット・デメリット
Sails.jsのメリット・デメリット
 
コンテナで作る開発環境 (20161104 CodeIgniter Night)
コンテナで作る開発環境 (20161104 CodeIgniter Night)コンテナで作る開発環境 (20161104 CodeIgniter Night)
コンテナで作る開発環境 (20161104 CodeIgniter Night)
 
Swiftのプロパティオブザーバを使い倒す
Swiftのプロパティオブザーバを使い倒すSwiftのプロパティオブザーバを使い倒す
Swiftのプロパティオブザーバを使い倒す
 
20160624 JAWS-UG名古屋 第12回 API Gateway 事始め
20160624 JAWS-UG名古屋 第12回 API Gateway 事始め20160624 JAWS-UG名古屋 第12回 API Gateway 事始め
20160624 JAWS-UG名古屋 第12回 API Gateway 事始め
 
JavaScriptの仕組みと未来のJavaScript ~ESNextとは~
JavaScriptの仕組みと未来のJavaScript ~ESNextとは~JavaScriptの仕組みと未来のJavaScript ~ESNextとは~
JavaScriptの仕組みと未来のJavaScript ~ESNextとは~
 
Idcfクラウドで始める構築自動化
Idcfクラウドで始める構築自動化Idcfクラウドで始める構築自動化
Idcfクラウドで始める構築自動化
 
Xamarin で Prism を使いたい! ~「正式対応」 まで待てない人のための Prism 利用 Tips~
Xamarin で Prism を使いたい! ~「正式対応」 まで待てない人のための Prism 利用 Tips~Xamarin で Prism を使いたい! ~「正式対応」 まで待てない人のための Prism 利用 Tips~
Xamarin で Prism を使いたい! ~「正式対応」 まで待てない人のための Prism 利用 Tips~
 
サーバサイドエンジニアが 1年間まじめにSPAやってみた
サーバサイドエンジニアが 1年間まじめにSPAやってみたサーバサイドエンジニアが 1年間まじめにSPAやってみた
サーバサイドエンジニアが 1年間まじめにSPAやってみた
 
最近のASP.NET事情2013Winter
最近のASP.NET事情2013Winter最近のASP.NET事情2013Winter
最近のASP.NET事情2013Winter
 
Ember コミュニティとわたし
Ember コミュニティとわたしEmber コミュニティとわたし
Ember コミュニティとわたし
 
How do you like knockout?
How do you like knockout?How do you like knockout?
How do you like knockout?
 
Smart fxでのsocketio活用事例
Smart fxでのsocketio活用事例Smart fxでのsocketio活用事例
Smart fxでのsocketio活用事例
 
「いつアメブロから乗り換えるの? 今でしょ!」
「いつアメブロから乗り換えるの? 今でしょ!」「いつアメブロから乗り換えるの? 今でしょ!」
「いつアメブロから乗り換えるの? 今でしょ!」
 
Jaws ug shimane-1
Jaws ug shimane-1Jaws ug shimane-1
Jaws ug shimane-1
 

Destaque

Perspresentatie Noordwijk juni2012
Perspresentatie Noordwijk juni2012Perspresentatie Noordwijk juni2012
Perspresentatie Noordwijk juni2012Jaapwdekok
 
Advisory on deferred action for dreamers
Advisory on deferred action for dreamersAdvisory on deferred action for dreamers
Advisory on deferred action for dreamersbtlawgroup
 
Sperimentazione Ipad scuola Materna
Sperimentazione Ipad scuola MaternaSperimentazione Ipad scuola Materna
Sperimentazione Ipad scuola Maternascholeduepuntozero
 
Brico instalación de iluminacion en bajos
Brico instalación de iluminacion en bajosBrico instalación de iluminacion en bajos
Brico instalación de iluminacion en bajosdaxiel
 
หน่วยที่3การขยายพันธุ์พืช
หน่วยที่3การขยายพันธุ์พืชหน่วยที่3การขยายพันธุ์พืช
หน่วยที่3การขยายพันธุ์พืชHataitip Suwanachote
 
การขยายพันธุ์พืช
การขยายพันธุ์พืชการขยายพันธุ์พืช
การขยายพันธุ์พืชHataitip Suwanachote
 

Destaque (9)

Twitter for good
Twitter for goodTwitter for good
Twitter for good
 
Perspresentatie Noordwijk juni2012
Perspresentatie Noordwijk juni2012Perspresentatie Noordwijk juni2012
Perspresentatie Noordwijk juni2012
 
Hr тренды 2012
Hr тренды 2012Hr тренды 2012
Hr тренды 2012
 
Advisory on deferred action for dreamers
Advisory on deferred action for dreamersAdvisory on deferred action for dreamers
Advisory on deferred action for dreamers
 
Vectores ejercicios 2
Vectores ejercicios 2Vectores ejercicios 2
Vectores ejercicios 2
 
Sperimentazione Ipad scuola Materna
Sperimentazione Ipad scuola MaternaSperimentazione Ipad scuola Materna
Sperimentazione Ipad scuola Materna
 
Brico instalación de iluminacion en bajos
Brico instalación de iluminacion en bajosBrico instalación de iluminacion en bajos
Brico instalación de iluminacion en bajos
 
หน่วยที่3การขยายพันธุ์พืช
หน่วยที่3การขยายพันธุ์พืชหน่วยที่3การขยายพันธุ์พืช
หน่วยที่3การขยายพันธุ์พืช
 
การขยายพันธุ์พืช
การขยายพันธุ์พืชการขยายพันธุ์พืช
การขยายพันธุ์พืช
 

Semelhante a Vsugday2012 summer tokyo_aoyagi

Javaな人が気を付けるべきJavaScriptコーディングスタイル
Javaな人が気を付けるべきJavaScriptコーディングスタイルJavaな人が気を付けるべきJavaScriptコーディングスタイル
Javaな人が気を付けるべきJavaScriptコーディングスタイルMaaya Ishida
 
わんくま名古屋 #40 (20161217) Xamarinで自動化テストしよう
わんくま名古屋 #40 (20161217) Xamarinで自動化テストしようわんくま名古屋 #40 (20161217) Xamarinで自動化テストしよう
わんくま名古屋 #40 (20161217) Xamarinで自動化テストしようYasuhiko Yamamoto
 
オレたちとVisual Studioとの関係を話そう
オレたちとVisual Studioとの関係を話そうオレたちとVisual Studioとの関係を話そう
オレたちとVisual Studioとの関係を話そうMitsuhito Ishino
 
APIドキュメントの話 #sphinxjp
APIドキュメントの話 #sphinxjpAPIドキュメントの話 #sphinxjp
APIドキュメントの話 #sphinxjpTakeshi Komiya
 
Nodeにしましょう
NodeにしましょうNodeにしましょう
NodeにしましょうYuzo Hebishima
 
たのしいNode.js
たのしいNode.jsたのしいNode.js
たのしいNode.jsishiki-takai
 
Visual Studio Code のこれまでとこれから at OSC 2021 Online/Spring
Visual Studio Code のこれまでとこれから at OSC 2021 Online/SpringVisual Studio Code のこれまでとこれから at OSC 2021 Online/Spring
Visual Studio Code のこれまでとこれから at OSC 2021 Online/SpringIssei Hiraoka
 
20101127 Android Usability Seminar
20101127 Android Usability Seminar20101127 Android Usability Seminar
20101127 Android Usability SeminarVisso株式会社
 
Building libc++ for toy OS
Building libc++ for toy OSBuilding libc++ for toy OS
Building libc++ for toy OSuchan_nos
 
わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)
わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)
わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)Yasuhiko Yamamoto
 
Visual Studio 2017 事はじめ
Visual Studio 2017 事はじめVisual Studio 2017 事はじめ
Visual Studio 2017 事はじめHideaki Aoyagi
 
Visual Studioで始めるTypeScript開発入門
Visual Studioで始めるTypeScript開発入門Visual Studioで始めるTypeScript開発入門
Visual Studioで始めるTypeScript開発入門Narami Kiyokura
 
【18-C-5】C# で iOS/Androidアプリ開発 - Visual Studio 2015 + Xamarin + MVVMCross -
【18-C-5】C# で iOS/Androidアプリ開発 - Visual Studio 2015 + Xamarin + MVVMCross -【18-C-5】C# で iOS/Androidアプリ開発 - Visual Studio 2015 + Xamarin + MVVMCross -
【18-C-5】C# で iOS/Androidアプリ開発 - Visual Studio 2015 + Xamarin + MVVMCross -ShinichiAoyagi
 
OWIN - .NETにおけるPSGI -
OWIN - .NETにおけるPSGI -OWIN - .NETにおけるPSGI -
OWIN - .NETにおけるPSGI -将 高野
 
これ以上ソースコードの負債を増やさないためにVisual Studioの静的解析とAzure PipelinesでCIを回す
これ以上ソースコードの負債を増やさないためにVisual Studioの静的解析とAzure PipelinesでCIを回すこれ以上ソースコードの負債を増やさないためにVisual Studioの静的解析とAzure PipelinesでCIを回す
これ以上ソースコードの負債を増やさないためにVisual Studioの静的解析とAzure PipelinesでCIを回すStudy Group by SciencePark Corp.
 
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
2020/06/16 tsjp-azure-staticwebapps-vs_codespacesIssei Hiraoka
 
2016/12/17 ASP.NET フロントエンドタスク入門
 2016/12/17 ASP.NET フロントエンドタスク入門 2016/12/17 ASP.NET フロントエンドタスク入門
2016/12/17 ASP.NET フロントエンドタスク入門miso- soup3
 
async / await の話
async / await の話async / await の話
async / await の話yoitakeda
 

Semelhante a Vsugday2012 summer tokyo_aoyagi (20)

async/await deep dive
async/await deep diveasync/await deep dive
async/await deep dive
 
Javaな人が気を付けるべきJavaScriptコーディングスタイル
Javaな人が気を付けるべきJavaScriptコーディングスタイルJavaな人が気を付けるべきJavaScriptコーディングスタイル
Javaな人が気を付けるべきJavaScriptコーディングスタイル
 
わんくま名古屋 #40 (20161217) Xamarinで自動化テストしよう
わんくま名古屋 #40 (20161217) Xamarinで自動化テストしようわんくま名古屋 #40 (20161217) Xamarinで自動化テストしよう
わんくま名古屋 #40 (20161217) Xamarinで自動化テストしよう
 
オレたちとVisual Studioとの関係を話そう
オレたちとVisual Studioとの関係を話そうオレたちとVisual Studioとの関係を話そう
オレたちとVisual Studioとの関係を話そう
 
APIドキュメントの話 #sphinxjp
APIドキュメントの話 #sphinxjpAPIドキュメントの話 #sphinxjp
APIドキュメントの話 #sphinxjp
 
Nodeにしましょう
NodeにしましょうNodeにしましょう
Nodeにしましょう
 
たのしいNode.js
たのしいNode.jsたのしいNode.js
たのしいNode.js
 
Visual Studio Code のこれまでとこれから at OSC 2021 Online/Spring
Visual Studio Code のこれまでとこれから at OSC 2021 Online/SpringVisual Studio Code のこれまでとこれから at OSC 2021 Online/Spring
Visual Studio Code のこれまでとこれから at OSC 2021 Online/Spring
 
20101127 Android Usability Seminar
20101127 Android Usability Seminar20101127 Android Usability Seminar
20101127 Android Usability Seminar
 
Building libc++ for toy OS
Building libc++ for toy OSBuilding libc++ for toy OS
Building libc++ for toy OS
 
わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)
わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)
わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)
 
Visual Studio 2017 事はじめ
Visual Studio 2017 事はじめVisual Studio 2017 事はじめ
Visual Studio 2017 事はじめ
 
Visual Studioで始めるTypeScript開発入門
Visual Studioで始めるTypeScript開発入門Visual Studioで始めるTypeScript開発入門
Visual Studioで始めるTypeScript開発入門
 
【18-C-5】C# で iOS/Androidアプリ開発 - Visual Studio 2015 + Xamarin + MVVMCross -
【18-C-5】C# で iOS/Androidアプリ開発 - Visual Studio 2015 + Xamarin + MVVMCross -【18-C-5】C# で iOS/Androidアプリ開発 - Visual Studio 2015 + Xamarin + MVVMCross -
【18-C-5】C# で iOS/Androidアプリ開発 - Visual Studio 2015 + Xamarin + MVVMCross -
 
OWIN - .NETにおけるPSGI -
OWIN - .NETにおけるPSGI -OWIN - .NETにおけるPSGI -
OWIN - .NETにおけるPSGI -
 
これ以上ソースコードの負債を増やさないためにVisual Studioの静的解析とAzure PipelinesでCIを回す
これ以上ソースコードの負債を増やさないためにVisual Studioの静的解析とAzure PipelinesでCIを回すこれ以上ソースコードの負債を増やさないためにVisual Studioの静的解析とAzure PipelinesでCIを回す
これ以上ソースコードの負債を増やさないためにVisual Studioの静的解析とAzure PipelinesでCIを回す
 
Keep a diary
Keep a diaryKeep a diary
Keep a diary
 
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
 
2016/12/17 ASP.NET フロントエンドタスク入門
 2016/12/17 ASP.NET フロントエンドタスク入門 2016/12/17 ASP.NET フロントエンドタスク入門
2016/12/17 ASP.NET フロントエンドタスク入門
 
async / await の話
async / await の話async / await の話
async / await の話
 

Mais de vsug_jim

初めての Windows ストア アプリ開発for vsug summer2013_up
初めての Windows ストア アプリ開発for vsug summer2013_up初めての Windows ストア アプリ開発for vsug summer2013_up
初めての Windows ストア アプリ開発for vsug summer2013_upvsug_jim
 
Daisukei vsug ef
Daisukei vsug efDaisukei vsug ef
Daisukei vsug efvsug_jim
 
「Windows 8 ストア アプリ開発 tips」 vsug day 2012 winter (2012年12月15日)
「Windows 8 ストア アプリ開発 tips」  vsug day 2012 winter (2012年12月15日)「Windows 8 ストア アプリ開発 tips」  vsug day 2012 winter (2012年12月15日)
「Windows 8 ストア アプリ開発 tips」 vsug day 2012 winter (2012年12月15日)vsug_jim
 
20121215 ono
20121215 ono20121215 ono
20121215 onovsug_jim
 
Metroスタイルアプリに向けたxamlデザイナーの変更点
Metroスタイルアプリに向けたxamlデザイナーの変更点Metroスタイルアプリに向けたxamlデザイナーの変更点
Metroスタイルアプリに向けたxamlデザイナーの変更点vsug_jim
 
2008 Vsug Leaders Summit Lightning Talks Kataoka
2008 Vsug Leaders Summit Lightning Talks Kataoka2008 Vsug Leaders Summit Lightning Talks Kataoka
2008 Vsug Leaders Summit Lightning Talks Kataokavsug_jim
 
2008 Vsug Leaders Summit Lightning Talks Numaguchi
2008 Vsug Leaders Summit Lightning Talks Numaguchi2008 Vsug Leaders Summit Lightning Talks Numaguchi
2008 Vsug Leaders Summit Lightning Talks Numaguchivsug_jim
 

Mais de vsug_jim (7)

初めての Windows ストア アプリ開発for vsug summer2013_up
初めての Windows ストア アプリ開発for vsug summer2013_up初めての Windows ストア アプリ開発for vsug summer2013_up
初めての Windows ストア アプリ開発for vsug summer2013_up
 
Daisukei vsug ef
Daisukei vsug efDaisukei vsug ef
Daisukei vsug ef
 
「Windows 8 ストア アプリ開発 tips」 vsug day 2012 winter (2012年12月15日)
「Windows 8 ストア アプリ開発 tips」  vsug day 2012 winter (2012年12月15日)「Windows 8 ストア アプリ開発 tips」  vsug day 2012 winter (2012年12月15日)
「Windows 8 ストア アプリ開発 tips」 vsug day 2012 winter (2012年12月15日)
 
20121215 ono
20121215 ono20121215 ono
20121215 ono
 
Metroスタイルアプリに向けたxamlデザイナーの変更点
Metroスタイルアプリに向けたxamlデザイナーの変更点Metroスタイルアプリに向けたxamlデザイナーの変更点
Metroスタイルアプリに向けたxamlデザイナーの変更点
 
2008 Vsug Leaders Summit Lightning Talks Kataoka
2008 Vsug Leaders Summit Lightning Talks Kataoka2008 Vsug Leaders Summit Lightning Talks Kataoka
2008 Vsug Leaders Summit Lightning Talks Kataoka
 
2008 Vsug Leaders Summit Lightning Talks Numaguchi
2008 Vsug Leaders Summit Lightning Talks Numaguchi2008 Vsug Leaders Summit Lightning Talks Numaguchi
2008 Vsug Leaders Summit Lightning Talks Numaguchi
 

Vsugday2012 summer tokyo_aoyagi

  • 1. VSUG DAY – Summer ( 2012.06.16 ) “ なめらか”な     メトロスタイルアプ リを         作るために ~ WinRT の非同期性を活用したアプリ開発 ~ 青柳 臣一
  • 2. 自己紹介 Twitter: @ShinichiAoyagi ブログ : http://shinichiaoyagi.blogspot.jp/ 仕事 職場 自宅 ソフトウエア開発 大阪 大阪 WPF 、 Silverlight 、 淀屋橋 吹田 C# 、 VB 、 VSUG DAY - Winter 2012.06.16
  • 3. “ なめらか” • タッチ – マウス以上に遅延に敏感になる • フィードバック – HDD のアクセスランプ • メトロスタイルアプリのライフサイクル – 起動→サスペンド→再起動→… VSUG DAY - Winter 2012.06.16
  • 4. 非同期 • WinRT では多くの API が非同期 – 50ms 以上かかる API は基本的に非同期 – 非同期メソッドがある場合は同期版は無し • 非同期メソッドは末尾に “ Async” – ファイル作成 • StorageFolder.CreateFileAsync() – ファイル検索 • StorageFolder.CreateFileQuery() のあと GetFilesAsync() VSUG DAY - Winter 2012.06.16
  • 5. Asynchronous / Await • Asynchronous – 発音記号 eɪ síŋkrənəs – 「エイシンクロナス」 – 日本での発音は「アシンクロナス」が一般的 ? • Await – 発音記号 əwéɪ t – 「アウエイト」 • 今日は「アシンクロナス」 VSUG DAY - Winter 2012.06.16
  • 6. サンプル (1) VSUG DAY - Winter 2012.06.16
  • 7. サンプル (2) • async/await を使うと簡単すっきり VSUG DAY - Winter 2012.06.16
  • 8. async / await • 魔法ではない – C# / VB コンパイラががんばってコードを作 っている – 詳細は C# Language Specification 5.0 に記 載(たぶん、きっと) • 今は以下にあり • 「 C# Language Specification for Asynchronous Functions 」 http://www.microsoft.com/en-us/download/details.aspx?id=23753 VSUG DAY - Winter 2012.06.16
  • 9. 自作 Async メソッド • async メソッドの戻り値 – void 、 Task 、 Task<T> のいずれかのみ VSUG DAY - Winter 2012.06.16
  • 10. キャンセル / 進捗 • キャンセル – CancellationToken と CancellationTokenSource • 進捗 – IProgress<T> VSUG DAY - Winter 2012.06.16
  • 11. async / await の注意点 (1) • await から下はあくまで非同期 – 見た目にだまされるとまずい – ときにはきちんとロックが必要かも – ローカル変数なら(ほぼ)安心 • けど、魔法みたいになっちゃうことも VSUG DAY - Winter 2012.06.16
  • 12. async / await の注意点 (2) • await 後は必ず UI スレッドに返ってくる – 必要ないときは await XxxAsync() .ConfigureAwait(continueOnCapturedContext:false); await XxxAsync().ConfigureAwait(false); VSUG DAY - Winter 2012.06.16
  • 13. ご清聴ありがとうございました VSUG DAY - Winter 2012.06.16