帰ってきた C++ CommunityOpenDay2013 2013/5/11 Sat Room metro 大阪 遥佐保.

Slides:



Advertisements
Similar presentations
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也. 講義計画(あくまで予定) 第 1 回 プログラミング言語の種類と歴史 第 2 回 eclipse の基本操作 第 3 回 eclipse のデバッグ機能 第 4 回 構造化プログラミングの復習 第 5 回 演習 第 6 回 構造化指向からオブジェクト指向へ.
Advertisements

本プレゼンテーション ( 以下、本書 ) で提供されている情報は、本書が 発表された時点における Microsoft の見解を述べたものです。市場 ニーズの変化に対応する必要があるため、本書は記載された内容の実 現に関する Microsoft の確約とはみなされないものとします。また本 書に記載された情報の正確さについて、保証するものではありません。
本プレゼンテーション ( 以下、本書 ) で提供されている情報は、本書が 発表された時点における Microsoft の見解を述べたものです。市場 ニーズの変化に対応する必要があるため、本書は記載された内容の実 現に関する Microsoft の確約とはみなされないものとします。また本 書に記載された情報の正確さについて、保証するものではありません。
1 なんとなく Ajax ~新しくて古い XMLHttp 川合孝典 (Kansai.pm) 2005/5/22.
本プレゼンテーション ( 以下、本書 ) で提供されている情報は、本書が 発表された時点における Microsoft の見解を述べたものです。市場 ニーズの変化に対応する必要があるため、本書は記載された内容の実 現に関する Microsoft の確約とはみなされないものとします。また本 書に記載された情報の正確さについて、保証するものではありません。
Introducing Windows Runtime Hokuriku.NET vol /8/30 Sat 遥佐保(はるか・さお)
実践!DB逆設計 ~レシートからER図を起こす~
Visual Studio 2010 の新機能 Coded UI Test
IIS 4.0で開発をするコツ Webアプリケーション構築.
PHP AV(Audio Visual) 拡張 クライアントサイド PHP アプリケーションPHP
PHP AV(Audio Visual) 拡張 PHP asアプリケーション
Visual Studio 2005による XML Web サービス入門
Win32APIとMFC H107102 古田雅基 H107048 佐藤一樹 H107126 山下洋平.
WebサービスII (第10回) 2007年11月28日 植田龍男.
Hot Pepper for iPod touch
情報理工学部 情報システム工学科 ラシキアゼミ3年 H 岡田 貴大
WindowsストアアプリをC++/CXで作る
Biac /10/25 DI コンテナの本懐 ~ IoC の実装も楽々! biac
Solid Edge Customization with VB   (Fundamentals)
Microsoft .NET 入門 Silverlight のための 福井コンピュータ株式会社 小島 富治雄
RAD Studio 14/09/27 TEffectを使った綺麗なForm
卒研:データベースチーム 第4回 DOMを使った処理
Silverlight とは.
構造体.
MSBuild 色々出来るよ 2011/04/02 お だ.
はじめてのASP.NET 楽しいアプリ制作の会 #1 TWorks.
Live Framework 入門 その2 JZ5(松江) 2009/8/22.
2013/06/22 つくばC#勉強会 Officeで始めるC# 2013/06/22 つくばC#勉強会
C#とC++とオブジェクト指向 上甲 健史.
Microsoft Consumer Channels and Central Marketing Group
Titanium Studioを使った アプリ開発 Vol.1
Windows ストア アプリ 開発概要 (Windows 8.1 対応)
コンパイラの解析 (2) GCJのデータ構造 - 1.
【プログラミング応用】 必修2単位 通年 30週 授業形態:演習.
Biac /10/ /10/25 DI コンテナの本懐 ~ IoC の実装も楽々! biac
XNAアプリ→WindowsPhone \(\◇ ̄ )ヘン~(  ̄▽/)ゝシン!!! \(○ `O´ ○)/トゥーー!!
プログラミング言語入門 手続き型言語としてのJava
プロジェクト演習Ⅱ インタラクティブゲーム制作 イントロダクション2
3D散歩ゲーム 08A2043 谷口盛海 種田研究室.
MVP for VB が語る C# 入門 初音 玲.
MVP for VB が語る C# 入門 初音 玲.
Windows Azure (CTP) 触ってみた
暗黙的に型付けされる構造体の Java言語への導入
Windows PowerShell Cmdlet
.NET Framework 3.0 概要 (旧称 : WinFX)
仕事: SystemVerilogを使いたい
Microsoft BizTalk Server & SAP PP モジュール 連携検証レポート概要
COM コンポーネント・オブジェクト・モデル.
Java8について 2014/03/07.
Windows Azure (CTP) 触ってみた
インタラクティブ・ゲーム制作 プログラミングコース 補足資料
Microsoft Consumer Channels and Central Marketing Group
第1章 いよいよプログラミング!! ~文章の表示 printf~
Webアプリケーションと JSPの基本 ソフトウェア特論 第4回.
vc-2. Visual Studio C++ のデバッガー (Visual Studio C++ の実用知識を学ぶシリーズ)
System.AddInを利用したアプリケーション拡張 - アドインの開発 -
「拝啓、さかもとと申します」 2008年6月28日 わんくま同盟 勉強会初参戦。 ※最重要 -質問はご遠慮願います-
アルゴリズムとデータ構造1 2009年6月15日
vc-1. Visual Studio C++ の基本操作 (Visual Studio C++ の実用知識を学ぶシリーズ)
第0章 MMC PCセクションへようこそ! ~VC++導入~
「拝啓、さかもとと申します」 2008年6月28日 わんくま同盟 勉強会初参戦。 ※最重要 -質問はご遠慮願います-
プログラミング基礎a 第9回 Java言語による図形処理入門(1) Javaアプレット入門
Visual Studio 2013 の起動と プロジェクトの新規作成 (C プログラミング演習,Visual Studio 2019 対応) 金子邦彦.
How To WPF アプリケーション Part4 By 中博俊.
アルゴリズムとデータ構造 2010年6月17日
プロジェクト演習Ⅱ インタラクティブゲーム制作
C#プログラミング実習 第1回.
System.AddInを利用したアプリケーション拡張 - アドインの開発 -
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
How To WPF アプリケーション Part3 By 中博俊.
Presentation transcript:

帰ってきた C++ CommunityOpenDay /5/11 Sat Room metro 大阪 遥佐保

はじめに

@hr_sao 名前と経歴を言う 出没コミュニティ Room metro (大阪) ExceptionalC++ 読書会(大阪) SQLWorld (大阪) 自己紹介

VisualStudio2012 の C++ 関連の 理解度を深める 本日の目的

0. C++ とその周りの歴史 1. C++ separate programing categories 2. Windows application – UI 3. How can you use Visual Studio 2012? 4. Windows store apps – C++/CX 5. How to learn C++/CX -. Welcome back to Windows Phone Topics

0. C++ とその周りの歴史

‘00 ~ ‘90 ~ ‘80 ~ ‘70 ~ ‘60 ~ C/C++ の歴史

より上位の高級言語を目指した Java と C# Web 系言語の登場 …> どうみても押され気味 ? 90 年代以降をよく見て見る ‘00 ~ ‘90 ~

‘00 ~ iOS と Android が登場 ナローバンドでの利用前提 Web 画面遷移の操作感の限界 クライアント側に情報を! 2000 年後半にスマートフォンの登場

Recently Published: C++11 (2011)

いったん Web に走ったみんなの気持ちが クライアントサイド ( ネイティブ ) に戻ってきた … ! C++11 規格をひっさげて VisualStudio2012 が 通りますよっ Welcome back to C++

1. Portability Linux と Windows で同じコードを動かす 2. Reusability 既存ライブラリ使いたい 3. Performance.NET がリッチすぎる Now… use cases for C++

1. C++ separate programing categories

プログラミングのカテゴリが 3 つある C 言語を使う Class を使う Template を使う C++ Primer Plus (6th Edition) Day 1 Keynote - Bjarne Stroustrup: C++11 Style /Keynote-Bjarne-Stroustrup-Cpp11-Stylehttp://channel9.msdn.com/Events/GoingNative/GoingNative- 2012/Keynote-Bjarne-Stroustrup-Cpp11-Style C++ の世界

手続き型言語 開発効率が高いとは言えないがシンプル 実行速度が速く、サイズも小さい ↑↑↑ もちろん作り方に依存するが、普通はそうなる function と struct の世界 macros / void* / casts の多用スキルが身についてしまう C 言語の世界

C 言語にプラスされたオブジェクト指向言語 struct にもっと機能を入れたなどなど private / operator overload / inheritance / interface / exception / virtual functions … C 言語よりは開発効率は上がる ↑↑↑ もちろん作り方に依存するが、普通はそうなる C++85 style ( C with Classes) class の世界

ジェネリック / メタプログラミングが可能 データの型には依存せず 任意 Object を格納できるコンテナ クラス・関数テンプレート / 特殊化 / テンプレートパラメータ … 型・数値の差し替え、型推論でコーディング量 の減少が可能に その他応用例も多数 template の世界 いつでもどこでも Template(^^)

sample: C style and C++11 // for-loop sum = 0; for( vector size_type i = 0; i < v.size(); i ++ ){ sum += v [ i ]; } // for_each + lambda sum = 0; for_each( v.begin(), v.end(), [&sum]( int x ) { sum += x; });

例えば、 C 言語を使う人の本音は マクロだけで頑張るのはホントは辛い ポインタを安全に使いたい、頑張ってるけどさ エラー処理を確実にしたい、頑張ってるけどさ もっと便利な機能を使いたい! そこでCの拡張です! Why Language Extensions?

例えば、 Windows で C++ を使う人の本音は ファイルの操作、もっと楽に出来ないのかなぁ 表示といえば、 MFC/DirectX/GDI… なんでこんなにコーディ ング量多いの …(  ̄ д  ̄ ) エー いつも「それ C# がよしなにやってくれるよ」と言われる Java/C# 使いたくない!! そこでC++の拡張です! Why Language Extensions? part2

C++ 言語の拡張 Visual C++ コンポーネント拡張のことを指す Windows ストアアプリの作成用 ※ストアアプリ以外でも利用可能 C++/CX

2. Windows application - UI

Programing model Desktop apps C C++ Win32 C# VB.NET SL HTML JavaScript Internet Explorer Windows store apps Windows Kernel Services Communication & Data Devices & Printing WinRT APIs Graphics & Media Application Model XAML JavaScript HTML / CSS C C++ C# VB DirectX

C#/VB.NET での UI の表現 Windows apps - C#/VB.NET XAML C#/VB.NET -.netframework XNA WinForm

JavaScript UI Windows apps - JavaScript JavaScript HTML JSIL Enchant Moon PhoneGap

C++ から見ると簡単に表現する方法が増えた! Windows apps - C++ XAML C/C++ DirectX GDI MFC WTL OpenGL

3. How can you use Visual Studio 2012?

Store appsDesktop Visual Studio 2012 の C++ の世界 Windows8 DirectX Windows Phone8 DirectX apps for phone XAML for C++ WRLWTL MFC

Windows ストアアプリで COM コンポーネントなど ローレベルアクセスを行う Template Library → WindowsRuntime は使わず ATL で記述された COM コンポーネントを簡単に移 植、操作可能 WTL:Windows Template Library – ATL:Active Template Library という COM プログラミングを簡単にする ためのテンプレートベースのライブラリ、ダイアログ、フレーム、 GDI などなど,MFC より軽い Windows Runtime C++ Template Library (WRL)

DirectX 機能レベル ShaderModel D3D_FEATURE_LEVEL_9_12.0 D3D_FEATURE_LEVEL_9_22.0 D3D_FEATURE_LEVEL_9_32.0 D3D_FEATURE_LEVEL_10_04.0 D3D_FEATURE_LEVEL_10_14.1 D3D_FEATURE_LEVEL_11_05.0 D3D_FEATURE_LEVEL_11_15.0 RT なら Feature Level は 「 D3D_FEATURE_LEVE L_9_1 」ベース Windows 環境にビデオやサウンドなどのマルチメ ディア機能を提供するための API Windows ストアアプリは、 DirectX11.1 の書き方のみ

C++/CX C#/VB.NET と同様の UI 表現 -XAML が利用可能 XML ベースで UI を表現する XAML for C++

4. Windows store apps – C++/CX

Build の流れ – C++ 編 WinRT : Windows ストア Apps の プロジェクトファイル なんとなく触れそうなファイルは3つ MainPage.xaml MainPage.cpp MainPage.h

Windows store apps – C++ build Auto Generated 見慣れないソースコードが しれっと自動生成されます

XAML Obj を利用可能な pointer に void ::StoreApp1::MainPage::InitializeComponent() { … btn00 = safe_cast (static_cast (this)->FindName(L"btn00")); … }

WinRT C++ Build process

.winmd ファイルのおかげ WinRT のクラス名やメソッド名などの メタデータが入っているファイル.NET, C++, javaScript が共通で理解できる → *.lib ファイルに似てます! →.NET アセンブリと同じ (binary format) *.winmd ファイルが VisualStudio でコンパイルする時に WinRT の DLL の場所を教えてくれる

Windows meta data.winmd ファイル C:\Windows\System32\WinMetadata フォルダ

C:\Windows\System32 の下にあるよ Windows. ○○○.dll WinRT の実体 実体は DLL だったんですね!!

良い感じにマップしてくれる例 Windows::Foundation の HSTRING ハンドルは … C++/CX が Windows メタデータ (.winmd) ファイルを読み取ると … 言語 HSTRING のマップ C++/CXPlatform::String class JavaScriptString object C#/VB.NETSystem.String class

WinRT は API 単なるインタフェース 実体は DLL Desktop apps C C++ Win32 C# VB.NET SL HTML JavaScript Internet Explorer Windows store apps Windows Kernel Services Communication & Data Devices & Printing WinRT APIs Graphics & Media Application Model XAML JavaScript HTML / CSS C C++ C# VB DirectX デスクトップ C++ からも呼べるよ ※ XAML/HTML 系以外

Windows Runtime C#, VB, C++ に提供されている API UI 関係は Windows.UI.Xaml (★) Windows Library for JavaScript JavaScript API ( 各種コントロール、 CSS ) (★)に相当するのは WinJS 名前空間 Windows ストアアプリの WindowsAPI

デスクトップアプリからも WindowsRuntime 利用可能 Win32 コンソールアプリケーション作成 int main( Platform::Array ^ argv ) コンパイルオプション /ZW つける、 /Gm- を外す.winmd ファイルを 2 つ参照追加 Windows.winmd - C:\Program Files (x86)\Windows Kits\8.0\References\CommonConfiguration\Natural Platform.winmd - C:\Program Files (x86)\Microsoft SDKs\Windows\8.0\ExtensionsSDKs\Microsoft.VCLibs\11.0\References\CommonConfiguration\natural

5. How to learn C++/CX

C++/CX を学習する WinRT API が利用可能 → ネイティブライブラリ、 XAML が利用可能 DirectX の利用可能 純粋にネイティブアプリ – WRL 利用可能 XAML からの DirectX 利用可能 → 最初はいいと思ったけど後で良いかも XAML オブジェクトの 中が DirectX の世界

今、 C#/VB.net で作っている人 そのまま、 C# で書けばいいよ! C++ や DLL を呼び出す部分は完備されてます l Why do we use C++? でも、勘違いしないで!!

今までは C#/VB.NET でしかできなかった (仕方ない) XAML 系での最終表現の形態がそれしかなかった Why do we use C++? でも、今は違います!!

WinRT における C++ の土俵 C# が出来ることと全く同じことが可能 C# で出来るから C# を利用する時代ではない Why do we use C++? 表現出来る土表は全て整っている

C++ プログラマに C++/CX つまり Windows ストアアプリを 作るための情報が必要に行きわたっていないこと 正しい C++ での Windows ストアアプリの使い方を 伝えていないことにある (だって XAML 系の使い方に慣れてるのは C#/VB.NET 系 ユーザなんだから、仕方ないでしょ) 問題は …

MSDN : C++ を使った Windows ストア アプリの ためのロードマップ Windows ストアアプリのための C++ 情報まとめ concurrency::create_async … task – then(), when_all() … casablanca – C++ REST SDK bindings to HTTP, JSON, and URIs ストアアプリで C++ を選択したら …

C++ と XAML を利用するための実践的サンプル Hilo Windows7 の時は DirectX でした 今は C++/XAML 版と、 JavaScript 版があるよ

Windows 8 Microsoft Visual Studio 2012 C++ と XAML のプログラミングに対する関心 → C++ と異なり、 XAML は UI を宣言型で書ける Hilo 利用の前提条件

UX の設計 非同期プログラミング パターンとヒント タイルとスプラッシュ画面の操作 Model-View-ViewModel (MVVM) パターン使用 リポジトリ パターンの使用 ページの作成とページ間の移動 コントロールの使用 タッチの使用 Hilo で学べること 中断、再開、アクティブ化の処理 パフォーマンスの向上 Windows ストア アプリのテストと展開

初心者向け表記 巨大なリンク集&プログラム解説

C++/CX プログラミングノウハウ Hilo

task チェーン – 処理流れ、チェーンの取り消し Hilo

Hilo で Windows ストアアプリの作り方を覚えたら、 次は通信がしたくなる Casablanca – C++ REST SDK

REST サービス (Windows Vista/7/8, Linux) VS2010/2012, クラウドベースの通信サポート 非同期処理、ストリームバッファ HTTP Client C++11 base Apache オープンソース Casablanca とは Azure など

-. Welcome back to Windows Phone

Windows Phone8 の C++ サポート VC Windows8 と同じコードで OK C++11 ベース DirectX ( XAML は利用できない ) Using C++ in your Windows Phoen Apps

summary

クライアントサイドアプリケーション復権 C++ ネイティブコード C++11 規格 拡張 C++/CX XAML での表現力 Windows Runtime は API XAML × C++ の学習 Hilo / Casablanca まとめ

これからも C++ でアプリケーションを作りましょう そのための道は マイクロソフトが全て用意してくれています