VisualStudio2010 β1 を使ってみた えムナウ (児玉宏之)

Slides:



Advertisements
Similar presentations
2.5 プログラムの構成要素 (1)文字セット ① ASCII ( American Standard Code for Interchange ) JIS コードと同じ ② EBCDIC ( Extended Binary Coded Decimal for Information Code ) 1.
Advertisements

オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也. 講義計画(あくまで予定) 第 1 回 プログラミング言語の種類と歴史 第 2 回 eclipse の基本操作 第 3 回 eclipse のデバッグ機能 第 4 回 構造化プログラミングの復習 第 5 回 演習 第 6 回 構造化指向からオブジェクト指向へ.
Visual Studio 2010 の新機能 Coded UI Test
情報処理実習 第05回 Excelマクロ機能入門 操作マクロ入門.
.NET テクノロジー を利用した SAP ソリューションの拡張 (3階層化) (評価環境構築ガイド)
プログラミング言語としてのR 情報知能学科 白井 英俊.
Win32APIとMFC H107102 古田雅基 H107048 佐藤一樹 H107126 山下洋平.
Javaのための暗黙的に型定義される構造体
情報理工学部 情報システム工学科 ラシキアゼミ3年 H 岡田 貴大
コンポーネントの再利用に必要な情報 えムナウ (児玉宏之)
コンポーネントの再利用に必要な情報 えムナウ (児玉宏之)
実行時のメモリ構造(1) Jasminの基礎とフレーム内動作
続 Entity Framework 入門 SQLWorld #8 サヴロウ.
Lightweight Language Weekend ls-lRシェル
報告 (2006/9/6) 高橋 慧.
最適化ソルバーのための Python言語入門
第2回:Javaの変数と型の宣言 プログラミングII 2007年10月2日.
Visual Studio LightSwitchの概要
MSBuild 色々出来るよ 2011/04/02 お だ.
はじめてのASP.NET 楽しいアプリ制作の会 #1 TWorks.
VisualStudio2010 β1 を使ってみた えムナウ (児玉宏之)
C# の現在・過去・未来 えムナウ (児玉宏之)
ML 演習 第 7 回 新井淳也、中村宇佑、前田俊行 2011/05/31.
チーム FSEL 立命館大学情報理工学部 ソフトウェア基礎技術研究室
プログラミング言語入門 手続き型言語としてのJava
第2回.リレーショナルデータベース入門 SQL を用いたテーブルへの行の挿入 SQL 問い合わせの発行と評価結果の確認.
第2回.リレーショナルデータベース入門 SQL を用いたテーブルへの行の挿入 SQL 問い合わせの発行と評価結果の確認.
0からわかるF# Part1 中 博俊 F# September 2008 CTP Base.
0からわかるF# Part1 中 博俊 F# September 2008 CTP Base.
MVP for VB が語る C# 入門 初音 玲.
MVP for VB が語る C# 入門 初音 玲.
VS2010はここがすごい 中 博俊.
暗黙的に型付けされる構造体の Java言語への導入
VS2010はここがすごい 中 博俊.
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也.
VS2010はここがすごい 中 博俊.
R流・C#マルチスレッドの復讐 2009年05月16日 R・田中一郎
0からわかるF# Part1 中 博俊 F# September 2008 CTP Base.
C# の現在・過去・未来 えムナウ (児玉宏之)
.NET Framework 3.0 概要 (旧称 : WinFX)
0からわかるF# Part1 中 博俊 F# September 2008 CTP Base.
プログラミング言語論 第五回 理工学部 情報システム工学科 新田直也.
C#言語ソースプログラムの原型 C言語 C#言語 Hello World! Hello Students! オマジナイ! 適当なクラス名
Java8について 2014/03/07.
オブジェクト指向言語論 第八回 知能情報学部 新田直也.
0からわかるF# Part1 中 博俊 F# September 2008 CTP Base.
VS2010はここがすごい 中 博俊.
0からわかるF# Part1 中 博俊 F# September 2008 CTP Base.
独習Java ・ 5.7  静的変数と静的メソッド ・ 5.8  ローカル変数と変数のスコープ  11月20日    小笠原 一恵.
統計ソフトウエアRの基礎.
アルゴリズムとプログラミング (Algorithms and Programming)
プログラミング言語論 第十三回 理工学部 情報システム工学科 新田直也.
プログラミング言語論 第十一回 理工学部 情報システム工学科 新田直也.
C#プログラミング実習 第3回.
vc-2. Visual Studio C++ のデバッガー (Visual Studio C++ の実用知識を学ぶシリーズ)
System.AddInを利用したアプリケーション拡張 - アドインの開発 -
画面への描画 Graphics オブジェクト 紙 ペン Pen オブジェクト Brush オブジェクト 画面のピクセルをカプセル化
アルゴリズムとデータ構造1 2009年6月15日
第5回 プログラミングⅡ 第5回
vc-1. Visual Studio C++ の基本操作 (Visual Studio C++ の実用知識を学ぶシリーズ)
オブジェクト指向言語論 第五回 知能情報学部 新田直也.
VS2010はここがすごい 中 博俊.
プログラムの一時停止時に 将来の実行情報を提供するデバッガ
Visual Studio 2013 の起動と プロジェクトの新規作成 (C プログラミング演習,Visual Studio 2019 対応) 金子邦彦.
How To WPF アプリケーション Part4 By 中博俊.
コンパイラ 2012年10月11日
アルゴリズムとデータ構造 2010年6月17日
Cp-1. Microsoft Visual Studio 2019 C++ の使い方 (C プログラミング演習,Visual Studio 2019 対応) 金子邦彦.
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
System.AddInを利用したアプリケーション拡張 - アドインの開発 -
Presentation transcript:

VisualStudio2010 β1 を使ってみた えムナウ (児玉宏之) http://mnow.jp/ えムナウ (児玉宏之) http://mnow.jp/ http://mnow.wankuma.com/ http://blogs.wankuma.com/mnow/ http://www.ailight.jp/blog/mnow/

アジェンダ 開発環境 言語 フレームワーク パラレル UML まとめ

ドキュメント ウィンドウ 開発環境 IDEの外部にフローティング CTRL+ホイールで拡大縮小 呼び出し階層の表示(Call From/To) アーキテクチャーエクスプローラー オブジェクト ブラウザで .NET Frameworkを検索 検索単語を選択して、編集-移動で検索し移動 画面やスコープ内の選択した変数やクラスを強調表示 VBでは If - End If などのキーワードペアを強調表示 未定義クラス・メンバーからクラス・メンバーを生成 IntelliSense 使う、参考に表示する、の切り替え

開発環境

デバッグ 開発環境 ブレークポイント一覧の検索機能 ブレークポイントのXML保存と読み出し スレッド ウィンドウで各スレッドのスタック確認 Parallel Tasks/Stacks で並列動作の確認 DataTips ソース上に付箋紙みたいに変数ウォッチを貼る デバッグ中にダンプファイル出力 パフォーマンス分析のマルチCPUの分析結果 デバッグ履歴機能 WPF Tree visualizerは自動変数・ローカル・ウォッチから虫眼鏡 付箋紙はデバッグ中に変数の上にマウスを置きノートマークをクリックする

テスト フレームワーク 手動テストの記録と再生 自動の UI テスト 仮想マシン環境での本番環境に近いテスト アサーションの追加でどのコントロールのどのパラメータをチェックするか Spy みたいな UI で指定可能 Microsoft.VisualStudio.TestTools.UITesting 名前空間 UserControls.cs に使ったコントロール毎に制御するクラスを自動作成 RecordedMethods.cs に操作がメソッド呼び出しの形で記録 自動の UI テスト 仮想マシン環境での本番環境に近いテスト 新しいクラス

C# 言語 Dynamic 名前付き引数、省略可能な引数 Office 相互運用機能 type equivalence interface project (異なるバージョンの Microsoft Office を使用) ジェネリックの共変性と反変性(delegateは.NET Framework 2.0)

VB 言語 自動実装プロパティ コレクション初期化子 複数行にまたがるステートメント 複数行のラムダ式 type equivalence interface project (異なるバージョンの Microsoft Office を使用) Dynamic ジェネリックの共変性と反変性

VB 言語 複数行にまたがるステートメント カンマ “,” の後。 “(“ の後、”)” の前。 “{“ の後、”}” の前。 XML リテラルの中の “<%=“ の後、”%>” の前。 文字列結合演算子の “&” の後。 代入演算子 (=, &=, +=, <<= など) の後。 二項演算子 (+, ?, Mod, <, <=, And, AndAlso など) の後。 “Is” と “IsNot” の後。 メンバ名の “.” の後、メンバ名の前。ただし、With ステートメントや初期化リストの中では “_” が必要とかなんとか。 XML リテラルの中の “.”、”.@”、”…” の後。ただし、With キーワードの中では “_” が必要とかなんとか。 属性を示す “<” の後、”>” の前。ただし、アセンブリレベルとモジュールレベルの属性のときは “_” が必要。 LINQ の “From”、”Order By”、”Select” などの前後。ただし、”Order By” などを途中で改行してはダメ。 For Each ステートメントの In の後。 コレクション・イニシャライザの From キーワードの後。

Visual C++ 言語 ユーザー エクスペリエンス 応答性の高いIntelliSense MSBuild ベースのビルド環境 MFC の改善 Office 2007 や Windows の Look & Feel 再起動マネージャをサポート Parallel Pattern Library コンパイラ ラムダ式、 auto キーワード新関数、 decltype 演算子、 rvalue への参照宣言 <T&&>、 static_assert 宣言

Visual F# 言語 マルチ パラダイム プログラミング言語 純粋関数型言語で内部状態をもたない 関数型プログラミング オブジェクト指向プログラミング 純粋関数型言語で内部状態をもたない 厳密型と型推論、リストやTupleが基本 パターンマッチ、ラムダ式 遅延評価がデフォルト=>非正格性 関数に引数を一部だけ渡して新たな関数を作る=>カリー化 関数をネストにすることで評価順を固定=>モナド

.NET Framework 4 フレームワーク System.Diagnostics.Contracts クラスライブラリ Debug.Assert から考えて一歩進んだ考え方 コンパイル時にワーニングが出る ガード句・戻り値・オブジェクトが利用可能か をチェック クラスライブラリ BigInteger 理論的に値が上限または下限の境界を持たない大きな整数を表す型 SortedSet<T> 並べ替えられた順序で管理されているオブジェクトのコレクション Tuple<T1> ~ Tuple<T1,T2,T3,T4,T5,T6,T7,TRest> 種類を明示的に指定しなくても特定の組のオブジェクトをインスタンス化、使い捨てクラスとしても利用可能 ConsoleApplication1,新しいクラス

.NET Framework 4 フレームワーク ディレクトリのLinq対応 メモリーマップドファイル 分離ストレージ Directory, DirectoryInfo クラスがLinqに対応したので、ファイルやディレクトリの列挙が簡単 メモリーマップドファイル 非常に大きなファイルの一部のメモリ マップ ビューを作成・操作 分離ストレージ WebやSilverlightなど制約のある状態でのファイル保存は分離ストレージを利用 ファイル システム内で特定のパスを指定せずに、分離ストレージ ファイル システムの部分へ独自にデータを保存

ADO.Net Entity Framework フレームワーク ADO.Net Entity Framework POCO(plain old CLR objects)サポート EntityObjectクラス ではなく、通常のクラスにに出力して加工して書き戻す形での変更を管理 遅延読み込み 今までは関連するオブジェクトにアクセスする前にInclude で読みだす必要があったが、DeferredLoadingEnabled=True で不要 モデルファースト Entityモデルを先に作成し、それをもとに論理モデルや実際のテーブルを作成 モデルブラウザー 概念モデル・論理モデルの構造をツリー上に表示 WpfApplication3

WPF WPFとSilverlight フレームワーク データソースからDrag&Dropでコンテナやコントロ-ルにまでバインドできるWindows Formsより進んだデータバインド WPF Tree visualizer で階層表示(Snoopぽい) DatePicker, DataGrid サポート WPFとSilverlight 使いやすいカラーピッカー、データバインド画面

WPF Toolkit フレームワーク WPF Toolkit March 2009 WPF テーマ VisualStateManager, WPF Ribbon, WPF Chart Shader Effects BuildTask and Templates WPF Splash Screen Item Templates WPF Model-View-ViewModel Toolkit WPF テーマ Expression Dark, Expression Light, Whistler Blue, Shiny Red, Shiny Blue, Bureau Blue, Twilight Blue, Bubble Creme, Bureau Black

Silverlight フレームワーク Controlをドラッグドロップして画面を作成 データソースはIDE上はオブジェクトとサービスだけ WPFに比べてないもの、 DatePicker, DockPanel, DocumentViewer, Expander, Frame, GroupBox, ListView, Menu, Separator, StatusBar, ToolBar系, TreeView, ViewBox, WindowsFormsHost, WrapPanel DataGrid はある。

Silverlight Toolkit フレームワーク Silverlight 2 Toolkit March 2009 TreeView, DockPanel, WrapPanel, Label, HeaderedContentControl, HeaderedItemsControl, ButtonSpinner, Charting, Expander, ImplicitStyleManager, NumericUpDown, Spinner, UpdownBase, Viewbox, AutoCompleteBox, NumericUpDown, Accordion, DomainUpDown, LayoutTransformer, TimePicker, TimeUpDown, TransitioningContentControl 色々なテーマ Expression Dark, Expression Light, Whistler Blue, Rainier Orange, Rainier Purple, Bureau Black, Shiny Red, Shiny Blue, Bureau Blue, Twilight Blue, Bubble Creme

Web 開発 グラフ表示 フレームワーク コード スニペット JScript 大幅に強化された IntelliSense Web と Forms のグラフ表示

Task Parallel Library (TPL) パラレル Task Parallel Library (TPL) Parallel.For Parallel.For(startIndex, endIndex, (currentIndex) => DoSomeWork(currentIndex)); Parallel.ForEach Parallel.ForEach(sourceCollection, item => Process(item)); Parallel.Invoke Parallel.Invoke( () => DoSomeWork(), () => DoSomeOtherWork());

Task Parallel Library (TPL) パラレル Task Parallel Library (TPL) Task<Tresult> Task.WaitAll AggregateException  InnerExceptions Task 処理中のすべてのException var task = Task<int>.Factory.StartNew(()->DoSomeWork()); int i = task.Result; //ここで終了を待つ Task[] tasks = new Task[3] { Task.Factory.StartNew(() => MethodA()), Task.Factory.StartNew(() => MethodB()), Task.Factory.StartNew(() => MethodC()) }; Task.WaitAll(tasks); //ここで終了を待つ

Task Parallel Library (TPL) パラレル Task Parallel Library (TPL) Parallelの中断 Exception、ParallelLoopState クラス、Break、Stop、ShouldExitCurrentIteration try { Parallel.For(1, 100000, (i, loopState) => // if (i == 20) throw new Exception(“例外"); // if (i == 20) loopState.Break(); if (i == 20) loopState.Stop(); if (loopState.ShouldExitCurrentIteration) return; Console.WriteLine(i); }); } catch (AggregateException e) Console.WriteLine(e); ParallelFor 1つ目は Exception を throw すること、 2つ目は ParallelLoopState クラスの Break メソッドを実行しそれ以上のインデックスが必要ないと宣言すること、3つ目は ParallelLoopState クラスの Stop メソッドを実行ししかかり以外の実行を停止することです。 そして、他の Parallel の実行中にその状態を確認するのが、ParallelLoopState クラスの ShouldExitCurrentIteration プロパティです、個別に IsExceptional や IsStopped や LowestBreakIteration でも確認できます。 尚、Exception を throw すると、 throw された Exception は、全体でまとめられて AggregateException として throw されます、AggregateException の InnerExceptions に全ての Exception は格納されます。

PLINQ パラレル AsParallel() パラレル化、 AsOrdered() 昇順化 ParallelEnumerable var q = from num in Enumerable.Range(10, 100).AsParallel() where num % 10 == 0 select num; q.ForAll((i) => Console.WriteLine(i)); Console.WriteLine(); var q2 = from num in ParallelEnumerable.Range(10, 100).AsOrdered() foreach(int i in q2) { Console.WriteLine(i); } Plinq

パフォーマンスウィザードでパラレルの分析 ConsoleApplication2

同時実行のコレクションクラス 遅延初期化クラス パラレル 今までのコレクションはスレッドセーフではない、コレクションに結果を追加していくタスクでは使えない BlockingCollection<T> クラス ConcurrentBag<T> クラス ConcurrentDictionary<TKey, Tvalue> クラス ConcurrentQueue<T> クラス ConcurrentStack<T>クラス 遅延初期化クラス スレッドセーフな遅延初期化 Lazy<T> スレッドローカルな遅延初期化 ThreadLocal<T>

UML UML図が描ける アクティビティ図 ユースケース図 レイヤー図 論理クラス図 コンポーネント図 シーケンス図

UML

UML

UML

UML クラス関係図

TeamSystemやテスト関係は充実すると思うのでデバッグもやりやすくなる。 まとめ VisualStudio2010はものすごい。 今日紹介した以外にも、Oslo や AjaxToolKit / WpfToolkit / SilverlightToolkit などでも取り込んでくるものがあるかもしれない。 TeamSystemやテスト関係は充実すると思うのでデバッグもやりやすくなる。 みなさんもβ版のバグ報告をしてよいVisualStudioを一緒に作っていきましょう。