Quantcast
Channel: Visual Studio 日本チーム Blog
Viewing all 182 articles
Browse latest View live

モバイル ファースト、クラウド ファーストのビジョンを掲げるマイクロソフト、Gartner Magic Quadrant の Mobile Application Development Platforms 分野で「リーダー」に

$
0
0

 

本記事は、マイクロソフト本社の Official Microsoft Blog の記事を抄訳したものです。
【元記事】 Mobile-first, cloud-first makes Microsoft a Leader in the Gartner Magic Quadrant for Mobile Application Development Platforms 2016/6/16

 

clip_image002

マイクロソフトが Xamarin を買収してから数か月後、Scott Guthrie と私は、これまで両社が長年にわたってパートナーとして協力してきたモバイル開発およびクラウドサービスの分野をさらに補完するロードマップを発表しました。Visual Studio と Xamarin そして Azure を組み合わせたことで高い成果が得られており、たいへん嬉しく思っています。既に大勢の開発者の皆様にご採用いただいているだけでなく、開発者コミュニティ以外からもご好評の声が届いています。

昨日、マイクロソフトは、ガートナーのマジッククアドラントのモバイル アプリケーション開発プラットフォーム部門で「リーダー」に選出されました。これは、Xamarin の統合、Azure App Service の強化、モバイル DevOps 機能の改良などを推し進め、モバイル アプリケーション開発プラットフォームのビジョンを劇的に拡大させているマイクロソフトの取り組みを評価したものです。

この 1 年間、マイクロソフトは「すべての開発者、すべてのアプリ、すべてのプラットフォーム」というビジョンの下、驚くほどの進化を遂げました。開発者の皆様にとっては、フルスタック ソリューションの効率性と、開発者が習熟している言語やツール、サービスを状況に応じて使用できるという柔軟性を両立させる必要があります。マイクロソフトは、すべてのアプリ、すべての開発者、すべてのプラットフォームに向けて完全なソリューションを提供している唯一の企業でありながら、皆様のワークスタイルに合わせてお使いいただける柔軟性も兼ね備えています。このアプローチは、私たちがモビリティ分野において独自に進めているもので、業界内でもますます高く評価していただいており、嬉しいかぎりです。

マイクロソフトでは、開発者がアプリの構築や保守を行う方法を根本的に変革するべく取り組んでいます。また、この取り組みはまだまだゴールにはほど遠いですが、これまでの成果をガートナーから認められたことを誇りに思っています。今回の勝因と思われるポイントを以下にご説明します。

1 つのパッケージに最高級の開発ツールを集約

すべては IDE から始まります。Visual Studio は市場で最も完成度の高いモバイル開発ツールとして認められています。

Xamarin は、品質に妥協することなく、あらゆるプラットフォームに対応するネイティブアプリを最もスピーディかつ効率的に構築できる開発環境です。現在、すべての Visual Studio 開発者の皆様に無償で提供されています。Azure は、バックエンドとして世界で最も洗練され、開発者にとって使いやすい柔軟なクラウドプラットフォームであり、モバイル アプリを作り上げるうえで役立つサービスを簡単に利用できます。App Service では、認証やプッシュ通知などの時間のかかるプロシージャを簡単に使用したり、オンデマンドでアプリケーションをスケーリングしたり、Cognitive API などの Azure 独自のオプションにアクセスして真にインテリジェントな機能をアプリに追加したり、ハイブリッド接続を使用してオンプレミスのデータに安全にアクセスしたりといったことが可能です。

各サービスは単体でも業界最高レベルのものですが、これを Visual Studio にまとめて、あらゆるスタックのすべてのサービスに単一の IDE と一般的な言語を使用できるようにしたことで、モバイル エクスペリエンスの開発効率がさらに向上しています。

洗練されたモバイル DevOps

高品質で高パフォーマンス、安全性にも優れたモバイルアプリを大規模に配信するのは容易なことではありません。絶えず進化を続けるデバイスのオペレーティング システムに追随するためにリリース サイクルの短縮が求められていると同時に、ユーザーはますます多くのことを期待するようになっています。そうした中、開発者は展開したモバイルアプリが安全でコンプライアンスを順守していることを把握しなくてはなりません。そのためには、フォーム ファクターやオペレーティング システム、メーカーなどの数千とおりにもなる組み合わせでアプリの外観や挙動、動作が正常であることを確認できるように、市場に向けてアプリをリリースした後も簡単に管理と監視が行えるようにする必要があります。マイクロソフトと Xamarin の製品ラインアップでは、完全なエンドツーエンドのモバイル DevOps ソリューションを使用して、モバイル アプリの企画、追跡、開発、テスト、セキュリティ確保、および監視を行うことができます。

開発者の皆様にいち早く提供

iOS/Android/Mac 用 Xamarin SDK をオープン ソース化 (英語) して .NET Foundation に公開することを開発者の皆様にお約束しています。私たちは開発者の皆様に寄り添い、透明性を確保したいと考えており、皆様にはぜひとも開発作業へのご協力をお願いいたします。開発者の皆様はマイクロソフトにとって最も大切な存在であり、これからもそれは変わりません。

私たちは「あらゆる開発者、あらゆるアプリ、あらゆるプラットフォーム」という理念を掲げ、C# や Cordova、iOS や Android、Mac や Windows などのすべてに対応する優れたモバイル エクスペリエンスを迅速に構築するために最適なプラットフォームを提供しています。これまでの成果に対する誇りを胸に、今後もさまざまな新サービスを皆様に提供してまいりますので、ぜひご期待ください。

[Visual Studio はこちらのページ、ガートナーのレポートはこちらのページ (英語) からそれぞれダウンロードしていただけます]


リリースへの道: Visual Studio のインストール方法を刷新

$
0
0

 

本記事は、マイクロソフト本社の The Visual Studio Blog の記事を抄訳したものです。
【元記事】 On the Road to Release: Redesigning Visual Studio Installation 2016/6/17

 

Visual Studio の次期リリース (コードネーム「Visual Studio “15”」) の進捗を細かくチェックしているという方は、次のリリースで私たちが最も大きなテーマに掲げているのがインストールと更新であることはお気付きなのではないでしょうか? 以前のブログ記事 (下記リンク参照) でもお伝えしたとおり、現在マイクロソフトは、標準のインストールを軽量化し、信頼性と管理性を向上させることを目指してリファクタリングを進めています。

新しい Visual Studio のインストーラー: より高速、より軽量に、皆さまの開発ニーズに適応

//build では新しいインストールエクスペリエンスがお試しいただけるプレビューをリリースしましたが、これには最小限の Visual Studio 用「コア エディター」が搭載され、ディスク容量は約 320 MB にまで縮小されました。このリリース (およびそれに続くリリースの Preview 2) では、.NET デスクトップ アプリ、Python、C++、Unity のエクスペリエンスがサポートされており、このインストールに関する取り組みに対して早期フィードバックをいただいています。Visual Studio の他のツールコンポーネントについても、影響が小さい新しいインストールモデル (英語) への移行作業が進んでいます。最終的には、「従来型」のインストーラーは新しいエクスペリエンスとセットアップ エンジンに切り替えられます。

 

インストール エクスペリエンス

セットアップ エクスペリエンスは Visual Studio ユーザーなら必ず使用するものであるため、マイクロソフトでは設計が完成する前にできるだけ多くの皆様のご意見を伺いたいと考えています。今夏末にはインストーラー UI が刷新された Visual Studio “15” をリリースする予定ですが、その前に、通常は公開しない試作段階の UI モックアップを公開します。これは社内で「ブルーライン」と呼んでいるもので、青写真に過ぎないため実際の実装とは異なります。ワイヤー フレームに多少肉付けされた程度のもので、これを使用して、ユーザーが UI を使用するさまざまなパターンを調査しています。ぜひこのモックアップをご覧になり、簡単なアンケート (英語) にご協力ください。

Visual Studio の新しいインストール エクスペリエンス (英語)

スタックを選択して自分好みのインストールを

上記以外にも、現在機能の統合を進めている「ワークロード」についても皆様からご意見を伺いたいと考えています。Visual Studio にはインストールする機能を非常に細かく制御できる高度なセットアップ オプションが用意されています。Visual Studio “15” では、現行の VS よりもさらに高度な制御が行えるようになります。しかし、ユーザーの皆様からは、デスクトップ開発用の C++ や Web 開発用の C# というように、「ワークロード」をインストールできるようにしてほしいという声を多くいただいています。

ワークロードとしてどのようなものが適切であるか調査した結果、以下をご用意することにしました。

  1. ユニバーサル Windows プラットフォームの開発
  2. Web 開発 (ASP.NET、TypeScript、Azure ツールなど)
  3. C++ での Windows デスクトップ アプリの開発
  4. .NET (Xamarin など) でのクロス プラットフォーム モバイル開発
  5. .NET デスクトップ アプリケーションの開発
  6. C++ での Linux および IoT の開発
  7. Cordova でのクロス プラットフォーム モバイル開発
  8. C++ (Android や iOS など) でのモバイル アプリの開発
  9. Office/SharePoint アドインの開発
  10. Python での Web 開発 (Django や Flask のサポートなど)
  11. データ サイエンスおよび分析アプリケーション (R、F#、Python など)
  12. Node.js 開発
  13. クロス プラットフォーム ゲームの開発 (Unity など)
  14. ネイティブな Windows ゲームの開発 (DirectX など)
  15. データ ストレージおよびデータ処理 (SQL、Hadoop、Azure ML など)
  16. Azure クラウド サービスの開発および管理
  17. Visual Studio 拡張機能の開発

これらのワークロードをどのように提示するかを検討しています。次に示すのは、初期の試作段階の画面です。

clip_image002

 

最後にご協力のお願いです。このブログ記事のコメント欄や Connect、その他のシステムからご意見をお寄せください。また、このインストールに関する取り組みを効率的に洗練、改良するために、アンケート (英語) にご協力ください。ぜひご回答いただきますようよろしくお願いいたします。

 

clip_image004 Tim Sneath (Visual Studio プラットフォーム担当主任プログラム マネージャー)Tim Sneath は Visual Studio の導入および拡張性を担当するチームの責任者で、開発者がマイクロソフトのプラットフォームで魅力的なアプリケーションを作成するための支援を行っています。また、プライベートでは母親にコンピューターは敵ではないことを理解してもらうために努力しています。さまざまなことに興味を持っていますが、中でも古い Windows リリースの収集に凝っていて、80 年台終盤からの各リリースの未開封パッケージをほぼすべて所有しているという一面を持っています。

Visual Studio 2015 Update 3 および .NET Core 1.0 をリリース

$
0
0

 

本記事は、マイクロソフト本社の The Visual Studio Blog の記事を抄訳したものです。
【元記事】 Visual Studio 2015 Update 3 and .NET Core 1.0 Available Now 2016/6/27

 

Visual Studio 2015 Update 3Team Foundation Server 2015 Update 3 (英語).NET Core 1.0 (英語)、ASP.NET Core 1.0 の最終リリースが公開されました。

 

ここではまず .NET Core と ASP.NET Core についてご説明します。こちらの .NET ブログ (英語)WebDev ブログ (英語) をまだお読みでない方のためにご説明すると、.NET Core はクロス プラットフォームに対応したオープン ソースのモジュール型 .NET プラットフォームであり、Windows、Mac、Linux 向けの先進的な Web アプリやマイクロサービス、ライブラリ、コンソール アプリケーションを作成することができます。今回のリリースには .NET Core と ASP.NET Core のランタイムとライブラリ、新しいコマンド ライン ツール群、.NET Core プロジェクトとの連携が可能になる Visual Studio と Visual Studio Code の拡張機能が含まれています。機能は、Visual Studio の次期メジャー リリースである Visual Studio “15” のリリース レベルの品質です。

 

VS Update 3 については、いつものようにこの記事の中で概要をご紹介することもできますが、この数か月間でリリース ノート (英語)既知の問題 (英語) のページを充実させてきたのでぜひそちらをご参照ください。わかりやすく詳細な内容になっています。その代わり、この記事ではそうした変更点を説明するのではなく、VS のメモリに関する問題について詳細にお伝えしたいと思います。

 

この問題は、2 社のお客様で実際に起こったものです。両社とも規模が非常に大きく、成功を収めており、VS を長年使用しています。両社からは、数百個のプロジェクトと膨大な数のファイルを含むソリューション ファイルを処理するときに応答性と安定性について問題があるというご報告をいただいていました。このうちの 1 社では、500 個のプロジェクト (すべて .NET) を含むソリューション ファイルを使用しており、ソリューションを開いてから 5 ~ 60 分で VS がハングしたりクラッシュしたりしていました。もう 1 社では 200 個のプロジェクト (ほとんどが .NET で一部は C++ プロジェクト) を含むソリューションファイルを使用しており、このプロジェクトは正常に読み込まれるものの、CPU サイクルの消費量が多いためコード編集時に IDE の応答性が低下し、突然クラッシュすることもありました。

 

表面的には、これらの問題は非常に関連が深いように見えます。しかし実際はそうではなく、それぞれのお客様と話し合いソリューションのデバッグを行ったところ、これらの問題の根本的な原因は大きく異なることが判明しました。以下は、この経緯からわかったことと対応を行った点です。

 

  • キャッシュされたプロジェクト情報をある特定のタイプのソリューション (基本的には中程度のサイズの .NET 専用ソリューション) に解放するアルゴリズムを調整しました。
  • キャッシュされたプロジェクト情報の中には、ソリューションに関係なく、単に保持期間が長すぎるものがありました。
  • VS では、常にコード全文スキャンなどの負荷の高い機能が有効になっており、ユーザーが有効化するかしないかを選択できませんでした。
  • VS でソリューション内の複数のプロジェクトを対象としたイベントが実行される場合に、一括処理が適切に行われず、1 つずつ処理されていました。
  • VS では、エクスペリエンスを向上させるためにメタデータ参照をプロジェクト間 (P2P) 参照に昇格させることがありますが、これが一部のユーザーでパフォーマンス低下の原因となっていました (複雑な P2P 参照チェーンがある場合や、ビルド後にバイナリを変更する手順がある場合)。

 

これらの問題が非常に複雑であることがわかってからは、診断や修正を行うために 5 つまたは 6 つの機能チームのエンジニアに参加してもらうことも珍しくありませんでした。こうした対応にマイクロソフトは時間を取られ、さらにはお客様の時間も無駄にしてしまうことになりました。2 社 (皆様もご存知の有名企業) には、それぞれのプロジェクトの調査にあたり快い許可とご協力をいただきましたことを改めて感謝申し上げます。

 

これらの修正点はすべて (さらに他の修正も) Update 3 に反映されています。詳細はリリース ノート (英語)既知の問題 (英語) のページでご確認ください。

その他の関連製品はダウンロード ページから入手できます。リリース ノートや各製品は、Azure でホストされている VM (英語) でも閲覧、ダウンロードが可能です。今回の更新は、前バージョンの Visual Studio 2015 をインストールした環境にインストールできるようになっています。

 

いつものお願いではありますが、皆様からのフィードバックをお待ちしています。問題がありましたら Visual Studio のフィードバック送信オプション (Send a Smile) からご報告ください。機能に関するご提案は UserVoice (英語) へご投稿ください。

 

clip_image002 John Montgomery (Visual Studio 担当プログラム マネージメント ディレクター)
@JohnMontJohn Montgomery は Visual Studio、C++、C#、VB、JavaScript、.NET の製品設計とユーザー サポートを担当しています。マイクロソフトに 17 年前に入社し、以来、開発者向けテクノロジの開発に従事しています。

Visual Studio “15” Preview 3 のリリースを発表

$
0
0

 

本記事は、マイクロソフト本社の The Visual Studio Blog の記事を抄訳したものです。
【元記事】 Visual Studio “15” Preview 3 2016/6/27

 

Visual Studio “15” Preview 3 がリリースされました (Visual Studio 2015 Update 3 とは別物です)。今回のリリースは引き続きプレビュー版でサポート対象外であるため、運用環境にはインストールしないことをお勧めします。ただし、以前の Visual Studio “15” のプレビュー版へ上書きでインストールすることや、以前のバージョンの Visual Studio とのサイドバイサイドで実行することが可能です。詳細については、Visual Studio “15” Preview のリリース ノートおよび Visual Studio “15” Preview 3 の既知の問題をご確認ください。

前回のバージョンに引き続き基礎的な作業を進めていますが、同時にいくつか新しい機能も追加しています。たとえば、IntelliSense を機能強化してメンバー リストを型で絞り込めるようにしたり、新しい例外ヘルパーで内部例外がモードレス ビューに瞬時に表示されるようにしました。また、IntelliSense トレイは既定では無効になっていますが、[Tools] > [Options] > [Text Editor] > [C#/VB] > [IntelliSense] の順にクリックして簡単に有効化できるようにしています。さらに、Preview 3 に含まれる Xamarin 4.1 では、バグの修正、tvOS のサポートの追加、iOS Asset Catalog のサポートの強化を実施しています。詳細については、Xamarin のリリース ノート (英語) をご確認ください。

さらに今回は、Team Foundation Server “15” Preview もリリースされました。このリリースの詳細については、TFS “15” のリリース ノートおよび TFS “15” の既知の問題をご確認ください。

clip_image002_thumb4

現在、フィードバック システムのアップグレードにも取り組んでいます。新しくなった IDE の問題報告機能をお試しいただいてから、Web ポータル (英語) ビューをご覧ください。

マイクロソフトでは皆様からのフィードバックをお待ちしています。問題点がありましたら、Visual Studio の [Report a Problem] オプションからご報告をお願いします。ご提案は UserVoice (英語) までお寄せください。

 clip_image002_thumb30.jpg John Montgomery (Visual Studio 担当プログラム マネジメント ディレクター)
@JohnMontJohn Montgomery は Visual Studio、C++、C#、VB、JavaScript、.NET の製品設計とユーザー サポートを担当しています。マイクロソフトには 17 年前に入社し、以来、開発者向けテクノロジの開発に従事しています。

 

Visual Studio Tools for Unity 2.3 をリリース

$
0
0

 

本記事は、マイクロソフト本社の The Visual Studio Blog の記事を抄訳したものです。
【元記事】 Visual Studio Tools for Unity 2.3 2016/7/14

 

このたびマイクロソフトは、Visual Studio Tools for Unity 2.3 (英語) をリリースしました。この Visual Studio 拡張機能は、Windows 上の Unity によってネイティブにサポートされるもので、ゲーム開発者が Visual Studio IDE のリッチな機能を利用しやすくなり、Unity でより簡単にクロス プラットフォーム ゲームを開発できるようになります。

主な変更点

Visual Studio Tools for Unity (VSTU) 2.3 での主な変更点は以下のとおりです。

  • Unity ゲームのデバッグの妨げとなっていた VSTU Xamarin ツールの競合が解消されました。
  • デバッグ時にテキスト、XMLHTMLJSON 文字列用の各ビジュアライザーを使用できるようになりました。
  • Visual Studio 2015 の関数ブレークポイントがサポートされるようになりました。
  • Unity の MonoBehaviour がすべて VSTU のウィザードから利用できるようになりました。
  • デバッガーでの式の評価に関する複数の問題が解決されました。

更新方法

VSTU を更新するには、Visual Studio IDE の拡張機能マネージャーを使用するのが最も簡単です。手動で更新する場合は、インストールしている Visual Studio のバージョンに対応するバージョンの VSTU の中から使用したいものをダウンロードしてインストールする必要があります。

Unity 5.2 以降を実行している場合: VSTU はネイティブにサポートされるため、VSTU をインストールするだけで済みます。

Unity 5.1 以前を実行している場合: 対応するパッケージをプロジェクトに再インポートする必要があります。

ユーザーの皆様には VSTU 2.3 にアップデートすることを強くお勧めします。VSTU の利用には、ネイティブにサポートされる Unity 5.3 が最適ですが、マイクロソフトは引き続き、VSTU Unity パッケージを使用して以前のバージョンの Unity でゲームを開発されるユーザーの皆様も支援していきたいと考えています。このリリースのすべての変更ログは、こちらのドキュメントでご覧いただけます。

VSTU は、Visual Studio IDE の拡張機能マネージャーまたは Visual Studio ギャラリーから直接ダウンロードできます。

VSTU についてのご要望は UserVoice (英語) までお寄せください。何か問題がありましたら、Visual Studio IDE [問題の報告] オプションからご報告いただければ幸いです。

Jb Evain (Visual Studio プラットフォーム チーム、ソフトウェア エンジニアリング マネージャー)
@jbevain
Jb Evain は Visual Studio Tools for Unity のエクスペリエンスの開発を担当しています。開発ツールとプログラミング言語に情熱を傾け、10 年以上にわたって開発者向けテクノロジの分野に携わっています。

 

Visual Studio の知られざる便利機能

$
0
0

 

本記事は、マイクロソフト本社の The Visual Studio Blog の記事を抄訳したものです。
【元記事】 Visual Studio Hidden Gems 2016/7/29

 

Visual Studio は、開発者がより多くの作業をすばやくこなすための多くの生産性機能が備わった強力な IDE です。この記事では、Visual Studio チームに 1 年前に加わった私が見つけた便利な機能をいくつかご紹介したいと思います。すべて Visual Studio 2015 の機能で、一部は旧バージョンでも搭載されていた機能なので、最新バージョンでなくても使用できるものもあります。

クイック起動 (Ctrl + Q)

クイック起動は、タイトル バーの右端にある高度な検索ボックスです。メニュー コマンドやオプションだけでなく、ファイル、設定、NuGet パッケージ、その他さまざまなものを検索できます。既定のキーボード ショートカットである Ctrl + Q を使用すれば直接アクセスできます。

リストのアイテムにカーソルを重ねると、ショートカット キーやディレクトリ情報など、役に立つ情報が表示されます。

多言語のサポート

Visual Studio は標準で多くの主要言語をサポートしています。自分が使用したい言語がない場合は簡単に追加することができます。TextMate (英語) バンドルの新たなサポートにより、Visual Studio ではあらゆる言語を活用できます。TextMate には、新しい言語での構文強調表示、基本的な IntelliSense、シンボリック検索などの機能があります。

TextMate の機能を利用するには、tmbundle をユーザーの extensions ディレクトリ (<userdir>\.vs\extensions) に追加します。Visual Studio の再起動は必要ありません。ファイルを開くと新しい言語の機能がすぐに利用できます。

TextMate バンドルのインポート方法の詳細については、こちらのページ (英語) をご覧ください。

TextMate バンドルにはいくつかの種類があります。以下は人気の高いものです。

[C# Interactive] ウィンドウ (REPL)

このツール ウィンドウでは、C# コードを直接入力して実行することができます。ソリューションをビルドして実行しなくても、すばやく式を評価したりコードをテストしたりできるため便利です。

[C# Interactive] ウィンドウは [View] メニューの [Other Windows] にあります。

Navigate To (Ctrl + ,)

Navigate To 機能はスマートな検索機能で、ソリューション内のファイル、クラス、メンバー、シンボルに簡単にアクセスできます。この機能を有効にするには、Ctrl キーを押しながらコンマ キーを押します。エディター ウィンドウの右上に入力ボックスが表示されます。

定義をここに表示 (Alt + F12)

この機能は Visual Studio エディター チームが愛用している機能です。作業中のエディター内の小さなインライン ウィンドウにメソッドや変数の定義が表示され、確認することができます。この定義ウィンドウ内のコードからさらに定義を参照できるため、たくさんのファイルが開いたままになることはありません。開いた定義ウィンドウ間を移動するには、ウィンドウ上部に控えめに表示される小さな階層リンクを使用します。Alt キーを押しながら F12 キーを押すと、[定義をここに表示] ウィンドウが開きます。Productivity Power Tools をインストールしている場合は、既定で Ctrl + Click Go To Definition (Ctrl キーを押しながらクリック) 機能でこのウィンドウを表示できます。

[Preview] タブ

もともとデバッグの補助機能として導入された [Preview] タブは、ドキュメントの右側に表示され、デバッグ セッションの終了時にファイルが複数開いたままになることなくコードにステップインできます。新しいドキュメントはすべて既定で [Preview] タブに表示されるため、ファイル間の移動や検索にも便利です。このタブには 1 つのドキュメントしか表示されないため、コードを検索してもファイルが散らかりません。特定のファイルを開いたままにしたい場合は、[Preview] タブの [Keep] アイコンでピン留めします。そうすると、その他の開いているドキュメントと同じようにタブが左側に追加されます。

コードを上下に移す (Alt + 上方向キー/下方向キー)

コード リンクやコード ブロックを簡単に並べ替えることができます。ドキュメント内でコードを移動させるには、Alt キーを押しながらキーボードの上方向キーや下方向キーを使用します。選択している行すべてが移動します。何も選択していない場合はカーソルのある行が移動します。

ポップアップ ボックスを透明化 (Ctrl キーを押す)

IntelliSense やデバッグ中のデータヒントなどのように、コンテキストに沿った操作や情報を提供するスマートで小さなポップアップ ボックスがたくさんあります。このポップアップ ボックスに表示された情報によって、その下の重要なコードが見えなくなることがあります。ポップアップ ボックスを閉じずにコードを見るには、Ctrl キーを押し続けます。ポップアップ ボックスが目立たなくなり、下のコードを見ることができます。

たとえば次の図のような場合、

次のようになります。

ステータス バーのバージョン管理情報

Visual Studio 2015 Update 2 から、IDE の右下のバージョン管理情報にアクセスできるようになりました。現在のブランチ、変更されたファイル数、未発行のコミット数などの情報をステータス バーで確認できます。ブランチ名をクリックするとメニューが表示され、ブランチを変更したり、その他のバージョン管理機能を実行したりできます。

診断ツール ウィンドウ

診断ツール ウィンドウ (英語) には、プログラムがデバッグ モード時のメモリや CPU の使用率が表示されます。.NET アプリケーションまたは C++ アプリケーションのデバッグを開始すると、このツール ウィンドウが自動的に開き、コードの CPU 使用率、メモリ使用量の増加量、読み込まれているオブジェクトの種類を確認できます。

メモリに関して詳細な分析を行う場合は、実行時にさまざまなポイントでメモリのスナップショットを取得できます。2 つのポイントのヒープ サイズの違いを簡単に比較して、さまざまな種類のオブジェクトを詳しく見ていくことができます。メモリ使用量が増加しているオブジェクトの種類を見つけて、アプリケーションで発生しているメモリ リークを特定し、解決できるようになります。

デバッグに関するヒントについては、デバッグのヒントとコツに関する記事を参照してください。

皆様が選ぶ Visual Studio のお気に入りの機能や便利な機能は何ですか?
ぜひ下のコメント欄でお聞かせください。

Justin Clareburt (Visual Studio 担当シニア プログラム マネージャー)

Justin Clareburt は Visual Studio チームのプログラム マネージャーとして、現在 Visual Studio 拡張機能の開発に取り組んでいます。これまで 20 年以上にわたってソフトウェア エンジニアリングの分野に携わり、Amazon、News Corp、Symantec、オーストラリア政府などの大組織で経験を重ねてきました。チーム内では IDE に関する専門知識を活かし、究極の開発体験を生み出すことに情熱を注いでいます。

 

Node.js Tools 1.2 for Visual Studio 2015 をリリース

$
0
0

 

本記事は、マイクロソフト本社の The Visual Studio Blog の記事を抄訳したものです。
【元記事】 Node.js Tools 1.2 for Visual Studio 2015 released 2016/7/28

 

このたび、Node.js Tools for Visual Studio (NTVS) の次期安定版である Node.js Tools 1.2 for Visual Studio (英語) のリリースが発表され、ダウンロードが開始されました。このバージョンでは Visual Studio 2015 (無料の Visual Studio Community エディションと Express for Web を含む) がサポートされます。

Node.js Tools for Visual Studio は、強力なコード補完、高度なデバッグとプロファイリング、単体テスト、クラウド展開、その他多数の機能によってアプリケーション開発のあらゆる段階をサポートし、エンタープライズ クラスの Node.js アプリケーションの開発がこれまで以上に簡単になるように設計されています。

v1.2 の新機能

Node.js v6.x (英語) のサポートと製品全体における多数のバグ修正に加えて、開発の生産性向上のために以下の機能強化が追加されました。

高速かつ的確になった ES6 IntelliSense

以前からパフォーマンスの問題を解消してほしいと考えていた方や、最新の JavaScript の優れた機能を利用したいという方に向けて、新しい ES6 IntelliSense エクスペリエンスを既定で有効化し、これまで以上に的確な結果が得られるようにしました。新しい ES6 IntelliSense エンジンでは型定義ファイルが利用されるため、高パフォーマンスの的確な IntelliSense が提供されるようになります。この機能は、主要な Node.js フレームワーク (Commander、Express、jQuery、Knockout など) に適用できます。

もちろん、特別な設定は不要です。新しい npm パッケージを追加すると、関連付けられている型定義がプロジェクトに自動的にダウンロードされます。それ以降、モジュールを ‘require’ する際には適切な補完候補が表示されます。

この新しい IntelliSense 機能が皆様のお役に立てば幸いです。なお、以前の静的分析エンジンとは大幅に異なるため、エクスペリエンスの開発は引き続き行い、その間はフォールバック オプションとして提供する予定です。

デバッグの信頼性向上

高度なデバッグは NTVS に不可欠な要素です。今回、ユーザーの皆様からご報告いただいた複数の問題を解決しました。ブレークポイントが適切に機能しない、全般的な不整合が見られるといった問題を修正しましたので、ぜひダウンロードしてお試しください。

パフォーマンスの向上

ハングやクラッシュは頭の痛い問題ですが、今回のリリースでこれらを解消しました。安定性とパフォーマンスを大幅に向上させ、以前のバージョンで発生したメモリ不足によるクラッシュを減少させました。また、プロジェクト システムの機能を強化し、プロジェクトの読み込み時間も短縮しました (特に [Add from Existing Code] を選択した場合)。

まだ問題が発生するようでしたら、GitHub までご報告 (英語) をお願いいたします。今後の更新に合わせて修正を行います。

単体テスト エクスペリエンスの強化

バグがないのに超したことはありませんが、ご存知のとおり人間は完璧ではありません。そこで便利なのが単体テストです。今回、@jcansdale (#989、英語) から提案された tape (英語) のサポートなど、単体テストのエクスペリエンスが強化されました。

お気に入りのテスト フレームワークのサポートを希望される場合は、フィードバックをお寄せください。NTVS の次回の更新内容として検討いたします。可能であれば、GitHub にプル リクエストを送信していただければ幸いです。

Node.js Tools 1.2 for Visual Studio の使用を開始するには

Visual Studio で Node.js アプリケーションの開発を行うには、まず Node.js Tools 1.2 for Visual Studio をダウンロードしてください。問題のご報告はこちら (英語) までお願いします。また、ご意見、ご感想、ご要望は、Gitter (英語) または Twitter にお寄せください。特にプル リクエスト (英語) の形でフィードバックをいただけますと幸いです。

最後に、コミュニティの皆様に心から感謝いたします。NTVS は無料のオープン ソース プロジェクトであり、皆様のサポートがなければ今回のリリースには至りませんでした。既に GitHub リポジトリ (英語) でご協力いただいている皆様に重ねてお礼申し上げると共に、このリンク先 (英語) で皆様からのご意見をお待ちしています。

今後の進化にもご期待ください!

Sara Itani (Node.js Tools 担当ソフトウェア エンジニア)
@mousetrapsSara Itani は、優れた Node.js 開発者ツールの開発に取り組んでいます。当初は Node.js の有用性に懐疑的でしたが、その多様な可能性に気付いてからは、Visual Studio の機能を Node.js コミュニティを通じて積極的に世界中に広めています。今では彼女自身も、JavaScript のエキスパートがどんどん増えることを願っています。

.NET Framework 4.6.2 を発表

$
0
0

 

本記事は、マイクロソフト本社の The Visual Studio Blog の記事を抄訳したものです。
【元記事】 Announcing .NET Framework 4.6.2 2016/8/2

 

このたび、.NET Framework 4.6.2 がリリースされました。今回の変更点の多くは、UserVoice (英語)Connect (英語) などに寄せられた皆様からのフィードバックを反映したものです。皆様の継続的なご支援とご協力に感謝いたします。

このリリースでは、以下の分野で多数の機能強化が実施されました。

すべての変更点の一覧については、.NET Framework 4.6.2 の変更リスト (英語) および API 差分 (英語) をご確認ください。

今すぐダウンロード

.NET Framework 4.6.2 は以下のリンクからダウンロード可能です。

基本クラス ライブラリ (BCL)

BCL では、以下の機能強化が実施されています。

長いパスのサポート (MAXPATH)

System.IO API において、最長 260 文字 (MAXPATH) というファイル名の文字数制限 (英語) が修正されました。この問題については、UserVoice に 4,500 を超える投票がありました。

この制限は通常、コンシューマー向けアプリケーションでは問題になりません (マイ ドキュメント フォルダーからファイルを読み込む場合など)。しかし、開発者のマシンで深くネストされたソース ツリーを構築したり、(長いパスが一般的に使用される) Unix でも動作する特別なツールを使用したりする場合には、この制限の影響を受ける可能性があります。

この新機能は、ターゲット フレームワークが .NET Framework 4.6.2 (またはそれ以降) のアプリケーションで有効化されます。アプリケーションの構成によって .NET Framework 4.6.2 をターゲットに指定するには、app.config または web.config 構成ファイルで以下のように設定します。

以前のバージョンの .NET Framework をターゲットとするアプリケーションでこの機能を使用するには、以下の構成ファイルのように AppContext スイッチを設定します。このスイッチは、アプリケーションが .NET Framework 4.6.2 (またはそれ以降) で実行される場合にのみ適用されます。

.NET Framework 4.6.2 をターゲットに指定していない場合や AppContext スイッチを設定していない場合は、MAXPATH より長いパスは使用できないという従来の動作になります。この動作は、既存のアプリケーションとの下位互換性を保持するために有効化されています。

長いパスを有効にするために、以下の点が強化されました。

  • 260 文字 (MAX_PATH) を超えるパスの許可: BCL で MAX_PATH (英語) より長いパスが許可されます。BCL API は、基盤となる Win32 ファイルの API を使用して制限のチェックを行います。
  • 拡張パス構文およびファイル名前空間 (\\?\、\\.\) の有効化: Windows では、拡張パス構文などの代替パス スキーマを可能にする複数のファイル名前空間 (英語) が提供されており、32,000 文字強のパスを使用できます。今回、そのようなパス (\\?\very long path など) が BCL でサポートされました。.NET Framework では、有効なパスを誤ってブロックすることがないように、パスの正規化に主に Windows API を使用し、“真の情報源” として扱っています。拡張パス構文は、通常の形式 (“C:\very long path” など) の長いパスをサポートしないバージョンの Windows では便利な回避策となります。
  • パフォーマンスの強化: Windows のパス正規化を導入し、BCL に含まれる類似のロジックを減らしたことで、ファイル パスに関するロジック全体のパフォーマンスが向上しました。また、この他にもパフォーマンスを高めるための機能強化がいくつか実施されています。

今回の変更の詳細については、Jeremy Kuhne のブログ (英語) をご覧ください。

X509 証明書で FIPS 186-3 デジタル署名アルゴリズムをサポート

.NET Framework 4.6.2 では、FIPS 186-3 (英語) デジタル署名アルゴリズム (DSA) のサポートが追加されました。FIPS 186-3 では、キーのサイズが 1,024 ビットを超える X509 証明書がサポートされるほか、SHA-2 ファミリのハッシュ アルゴリズム (SHA256、SHA384、SHA512) による署名の計算が可能になります。

.NET Framework 4.6.1 では FIPS 186-2 (英語) をサポートします。FIPS 186-2 では、キーのサイズが最大 1,024 ビットに制限されます。

FIPS 186-3 のサポートを利用するには、以下の例のように、新しい DSACng クラスを使用します。

また、DSA 基本クラスも更新され、新しい DSACng クラスにキャストしなくても FIPS 186-3 のサポートを利用できるようになりました。これは、.NET Framework の前々回および前回のリリースでそれぞれ RSA と ECDsa の実装が更新されたときと同じアプローチです。

楕円曲線 Diffie-Hellman のキー派生ルーチンをより使いやすく

ECDiffieHellmanCng クラスがより使いやすくなりました。.NET Framework の ECDH (楕円曲線 Diffie-Hellman) キー合意の実装には 3 種類の KDF (キー派生関数) ルーチンが含まれます。以下の例のように、これらの KDF ルーチンが 3 種類のメソッドで表現およびサポートされるようになりました。

以前のバージョンの .NET Framework では、この 3 種類の各ルーチンについて、ECDiffieHellmanCng クラスに設定するプロパティのサブセットを把握しておく必要がありました。

永続化されたキーによる対称暗号化をサポート

Windows の暗号化ライブラリ (CNG) では、永続化された対称キーのソフトウェアとハードウェア デバイスでの格納がサポートされています。以下の例のように、.NET Framework 4.6.2 でもこの CNG 機能が提供されるようになりました。

キー名とキー プロバイダーは実装ごとに異なるため、この新機能を使用するには、一般的に使用されるファクトリの手法 (Aes.Create() など) ではなく、具体的な実装クラス (AesCng など) を使用する必要があります。

永続化されたキーによる対称暗号化は、AES アルゴリズム (AesCng クラス) および 3DES アルゴリズム (TripleDESCng クラス) に追加されています。

SignedXml で SHA-2 ハッシュをサポート

.NET Framework SignedXml 実装では、以下の SHA-2 ハッシュ アルゴリズムが新たにサポートされました。

以下の例では、XML の署名に SHA-256 を使用しています。

新しい SignedXML URI 定数は新しい SignedXml フィールドとして追加されています。新しいフィールドは以下に示すとおりです。

これまでカスタムの SignatureDescription ハンドラーを CryptoConfig に登録してこれらのアルゴリズムをサポートしていたプログラムは、すべて従来どおりに動作します。しかし、プラットフォームによって既定でサポートされるようになったため、CryptoConfig への登録は不要になります。

共通言語ランタイム (CLR)

CLR では、以下の機能強化が実施されています。

NullReferenceException の機能強化

NullReferenceException が発生し、その原因を調査した経験がある方は多いでしょう。.NET Framework チームは現在 Visual Studio チームと協力し、Visual Studio の今後のリリースで null 参照をデバッグしやすくするための取り組みを行っています。

Visual Studio でのデバッグ処理は、作成されたコードとの下層レベルでの対話に共通言語ランタイムのデバッグ API を使用します。現在、Visual Studio で NullReferenceException が発生した場合には以下のようなメッセージが表示されます。

null_ref

今回のリリースでは、CLR のデバッグ API が強化され、NullReferenceException の発生時にデバッガーがより多くの情報を要求し、より詳細な分析を行うようになりました。デバッガーは取得した情報を基に null である参照を判断し、その情報を提示するため、デバッグ処理が簡単になります。

ClickOnce

ClickOnce では、以下の機能強化が実施されています。

Transport Layer Security (TLS) 1.1 および 1.2 のサポート

.NET Framework バージョン 4.6.2、4.6.1、4.6、4.5.2 の ClickOnce に TLS 1.1 および 1.2 プロトコルのサポートが追加されました。UserVoice (英語) で投票してくださった皆様にお礼を申し上げます。ClickOnce は、実行時にどの TLS プロトコルが必要であるかを自動的に検出するため、TLS 1.1 または 1.2 プロトコルのサポートを有効化するために必要な操作は特にありません。

Secure Sockets Layer (SSL) および TLS 1.0 は現在、一部の組織で非推奨またはサポート対象外となっています。たとえば、PCI SSC (Payment Card Industry Security Standards Council) では、オンライン取引の仕様を満たすために TLS 1.1 以降の義務化 (英語) を進めています。

ClickOnce では、アプリケーションをアップグレードできない場合にも互換性を維持できるように引き続き TLS 1.0 をサポートしますが、SSL および TLS 1.0 を使用しているすべてのアプリケーションを調査することをお勧めします。.NET Framework の修正プログラムをダウンロードするリンクについては、サポート技術情報の記事 (バージョン 4.64.6.1 (英語)4.5.2) を参照してください。

クライアント証明書のサポート

SSL が有効化され、クライアント証明書が要求される仮想ディレクトリで ClickOnce アプリケーションをホストできるようになりました。このような構成の場合、エンド ユーザーがアプリケーションにアクセスすると、証明書の選択を求めるメッセージが表示されます。[Client Certificates] が “Ignore” に設定されている場合には、証明書を求めるメッセージは表示されません。

以前のバージョンでは、アプリケーションがこのような構成でホストされる場合、ClickOnce による展開を実行すると、アクセス拒否エラーが発生して終了します。

clickonce_ssl

ASP.NET

ASP.NET では、以下の機能強化が実施されています。ASP.NET Core の機能強化については、ASP.NET Core 1.0 の発表 (英語) に関するブログ記事をご覧ください。

DataAnnotation のローカライズ

モデル バインディングと DataAnnotation による検証を使用する場合のローカライズが非常に簡単になりました。ASP.NET では、DataAnnotation 検証メッセージを格納する resx リソース ファイルについて、以下のようなわかりやすい規則を採用しています。

  • App_LocalResources フォルダーに配置する。
  • DataAnnotation.Localization.{locale}.resx という命名規則に従う。

.NET Framework 4.6.2 を使用する場合、ローカライズされていないアプリケーション (英語) と同じように、DataAnnotation 属性をモデル ファイルで指定します。ErrorMessage には、以下の例のように、resx ファイルで使用する名前を指定します。

asp.net_dataAnnotation_localization

以下の例に示すように、ローカライズされた resx ファイルは新しい規則に従って App_LocalResources フォルダーに配置されます。

asp.net_dataAnnotation

独自の文字列ローカライズ プロバイダーを組み込み、ローカライズした文字列を別の場所や別の種類のファイルに格納することもできます。

以前のバージョンの .NET Framework では、以下の例のように、ErrorMessageResourceType と ErrorMessageResourceName の値を指定する必要がありました。

非同期処理の機能強化

SessionStateModule と OutputCache モジュールの強化により、非同期シナリオがサポートされました。現在、各モジュールの非同期バージョンを NuGet からリリースできるように作業を進めています。これらの NuGet パッケージは、既存プロジェクトにインポートする必要があり、数週間以内のリリースを予定しています。リリース時にはこの記事を更新します。

SessionStateModule インターフェイス

Session State を使用すると、ユーザーが ASP.NET サイト内を移動するときに、ユーザーのセッション データを格納および取得できます。今回、新しい ISessionStateModule インターフェイスを使用して、独自の非同期の SessionStateModule 実装を作成できるようになりました。これにより、セッション データを独自の方法で格納したり、非同期メソッドを使用したりできます。

OutputCache モジュール

出力キャッシュ (英語) を使用すると、コントローラーのアクションから返された結果がキャッシュされ、すべての要求に対して同一のコンテンツが不必要に生成されなくなるため、ASP.NET アプリケーションのパフォーマンスが大幅に向上します。

今回、OutputCacheProviderAsync という新しいインターフェイスが実装され、出力キャッシュに非同期 API を使用できるようになりました。これにより、Web サーバーでのスレッドのブロックが減り、ASP.NET サービスのスケーラビリティが向上します。

SQL

SQL クライアントでは、以下の機能強化が実施されています。

Always Encrypted の強化

Always Encrypted は、データベースに格納されたクレジット カード番号や身分登録番号などの機密データを保護するために設計された機能です。 Always Encrypted を使用すると、クライアントはデータベース エンジンに暗号化キーを開示することなく、クライアント アプリケーション内の機密データを暗号化することができます。結果として、Always Encrypted ではデータの所有者 (閲覧できるユーザー) とデータの管理者 (アクセス許可は付与しないユーザー) を区別できます。

.NET Framework Data Provider for SQL Server (System.Data.SqlClient) では、Always Encrypted のパフォーマンスとセキュリティの 2 点について重要な機能強化が行われました。

パフォーマンス

暗号化されたデータベース列に対するパラメーター化クエリのパフォーマンス向上のために、クエリ パラメーターの暗号化メタデータがキャッシュされるようになりました。SqlConnection::ColumnEncryptionQueryMetadataCacheEnabled (英語) プロパティが true (既定値) に設定されている場合には、同じクエリが複数回呼び出されても、データベース クライアントがサーバーからパラメーターのメタデータを取得するのは 1 回だけで済みます。

セキュリティ

キー キャッシュに格納された列暗号化キーのエントリは、設定した時間の経過後に消去されるようになりました。消去されるまでの時間は、SqlConnection::ColumnEncryptionKeyCacheTtl (英語) プロパティを使用して設定できます。

Windows Communication Foundation (WCF)

WCF では、以下の機能強化が実施されています。

NetNamedPipeBinding の “最適な一致”

.NET Framework 4.6.2 では、NetNamedPipeBinding が強化され、“最適な一致” と呼ばれる新しいパイプの検索方法がサポートされました。“最適な一致” を使用する場合、NetNamedPipeBinding サービスは、最初に一致したサービスではなく、要求されたエンドポイントと最も一致する URI をリッスンしているサービスを検索するようにクライアントに強制します。

“最適な一致” のパイプは、既定の動作である “最初の一致” を使用すると WCF クライアント アプリケーションが誤った URI に接続してしまう場合に特に役立ちます。名前付きパイプ上で複数の WCF サービスがリッスンしている場合、“最初の一致” を使用している WCF クライアントは誤ったサービスに接続する可能性があります。この問題は、1 つの管理者アカウントで複数のサービスがホストされている場合に発生します。

この機能を有効化するには、以下の AppSetting をクライアント アプリケーションの app.config ファイルまたは web.config ファイルに追加します。

DataContractJsonSerializer の機能強化

DataContractJsonSerializer が強化され、複数の夏時間調整ルールが適切にサポートされるようになりました。この機能を有効化すると、DataContractJsonSerializer は TimeZone クラスの代わりにTimeZoneInfo クラスを使用します。TimeZoneInfo クラスは複数の調整ルールをサポートするため、過去のタイム ゾーン データを処理できます。この機能は、(UTC+2) イスタンブールのように、1 つのタイム ゾーンに複数の夏時間調整ルールがある場合に役立ちます。

この機能を有効化するには、以下の AppSetting を app.config ファイルに追加します。

TransportDefaults による SSL 3 のサポート終了

トランスポート セキュリティに NetTcp を使用し、証明書の資格情報の種類を使用する場合に、安全な接続のネゴシエーションに使用される既定のプロトコルから SSL 3 プロトコルが除外されました。NetTcp のすべての既定のプロトコル リストには TLS 1.0 が含まれているため、既存のアプリケーションへの影響はほとんどないと考えられます。すべての既存のクライアントは、TLS 1.0 以降を使用して接続をネゴシエートできます。

SSL 3 が既定のプロトコルから除外されたのは、安全と見なされなくなったためです。推奨はされませんが、必要に応じて以下の構成メカニズムのいずれかを使用して、ネゴシエートされたプロトコルの一覧に SSL 3 を再び追加することができます。

Windows 暗号化ライブラリ (CNG) のトランスポート セキュリティ

トランスポート セキュリティでは、Windows 暗号化ライブラリ (CNG) を使用して格納された証明書が新たにサポートされました。現時点では、このサポートは公開キーの指数の長さが 32 ビット以下の証明書を使用する場合に限定されます。

この新機能は、ターゲット フレームワークが .NET Framework 4.6.2 (またはそれ以降) のアプリケーションで有効化されます。アプリケーションの構成によって .NET Framework 4.6.2 をターゲットに指定するには、app.config または web.config 構成ファイルで以下のように設定します。

以前のバージョンの .NET Framework をターゲットとするアプリケーションでこの機能を使用するには、以下の構成ファイルのように AppContext スイッチを設定します。このスイッチは、アプリケーションが .NET Framework 4.6.2 (またはそれ以降) で実行される場合にのみ適用されます。

この機能は、以下のようにプログラムから有効化することもできます。

OperationContext.Current の非同期処理の機能強化

WCF では、ExecutionContextOperationContext.Current を追加して、OperationContext を非同期の後続処理に渡すことができるようになりました。この機能強化により、スレッド間で CurrentContext を伝達できます。そのため、コンテキスト スイッチをはさんで OperationContext.Current を 2 回呼び出した場合にも、値はメソッドの実行中に常に正しく渡されます。

以下の例では、スレッドの切り替えの前後で OperationContext.Current が正しく渡されます。

これまで、OperationContext.Current の内部実装では CurrentContext を格納するために ThreadStatic 変数を使用していました。ThreadStatic 変数は、CurrentContext に関連付けられたデータをスレッドのローカル ストレージに格納します。メソッド呼び出しの実行コンテキストが変更された場合 (別の処理の待機によってスレッドが変更される場合など)、その後の呼び出しは、元の値を参照することなく別のスレッドで実行されます。今回の修正により、threadId1 と threadId2 が異なる場合でも、2 回目の OperationContext.Current の呼び出しによって想定した値が返されます。

Windows Presentation Foundation (WPF)

WPF では、以下の機能強化が実施されています。

グループの並べ替え

CollectionView を要求してデータをグループ化するアプリケーションで、グループを並べ替える方法を明示的に宣言できるようになりました。今回の機能強化により、アプリケーションによってグループが動的に追加または削除されたり、グループ化に関係する項目プロパティの値が変更されたりした場合に想定した順序にならないという問題が解決されます。また、グループ化プロパティの比較がコレクション全体の並べ替えから各グループの並べ替えに変更されるため、グループ作成処理のパフォーマンスも向上します。

この機能の GroupDescription クラスには、SortDescriptions と CustomSort という 2 つの新しいプロパティが追加されました。これらのプロパティは、GroupDescription によって生成されたグループのコレクションを並べ替える方法を示します。これは、ListCollectionView の同名のプロパティがデータ項目を並べ替える方法を示すのと同様です。また、PropertyGroupDescription クラスにも、CompareNameAscending と CompareNameDescending という新しい静的プロパティが追加されました。これらのプロパティは、一般的なケースで使用することができます。

たとえば、Age によってデータをグループ化し、作成されたグループを昇順に並べ替え、各グループ内の項目は LastName で並べ替えるとします。

今回の新機能により、以下のように宣言することができます。

この機能が追加される以前は、以下のように宣言していました。

Per-Monitor DPI のサポート

WPF アプリケーションが Per-Monitor DPI に対応しました。この機能強化は、DPI レベルの異なる複数のディスプレイを 1 台のマシンに接続する場合に重要になります。WPF アプリケーションの一部または全体を複数のモニター間で移動する場合に、WPF によってアプリケーションの DPI がディスプレイに合わせて自動的に変更されるようになりました。

WPF アプリケーションで Per-Monitor DPI を有効にする方法の詳細については、GitHub の WPF のサンプルおよび開発者向けガイド (英語) を参照してください。

以前のバージョンでは、WPF アプリケーションで Per-Monitor DPI を有効にするには加のネイティブ コード (英語) を記述する必要がありました。

ソフト キーボードのサポート

ソフト キーボードのサポートにより、Windows 10 で WPF のスタイラス/タッチ入力を無効化しなくても WPF アプリケーションでタッチ キーボードが自動的に起動、終了するようになりました。

以前のバージョンでは、WPF アプリケーションのタッチ キーボードの起動や終了が明示的にはサポートされておらず、WPF のスタイラス/タッチ入力を無効化する必要がありました。これは、Windows 8 以降のタッチ キーボードがアプリケーション内のフォーカスを追跡する方法が変更されたことによるものです。

softkeyboard

 

フィードバックのお願い

.NET Framework 4.6.2 のプレビュー リリースに関してフィードバックをお寄せくださった皆様に改めて感謝申し上げます。皆様からのフィードバックのおかげで、.NET Framework 4.6.2 はすばらしいリリースとなりました。引き続き、以下にフィードバックをお寄せください。

 


Ionic と Visual Studio で高品質なモバイル アプリを開発

$
0
0

 

本記事は、マイクロソフト本社の The Visual Studio Blog の記事を抄訳したものです。
【元記事】 Create high quality mobile apps with Ionic & Visual Studio 2016/8/3

 

既にモバイル アプリケーション開発に携わっている Web 開発者の皆様にとっても、これから力を入れようと考えている皆様にとっても嬉しいお知らせがあります。このたび、Typescript 言語 (英語) を使用する新しい Visual Studio テンプレートがリリースされました。Apache Cordova プラットフォーム (英語)Ionic UI フレームワーク (英語) 上に構築されるものです。

改めて説明すると、Ionic とは Cordova 開発者の間でたいへん人気の高いアプリケーション開発フレームワークであり、優れたユーザー エクスペリエンスを備えた Android、iOS、Windows 10 デバイス向けのアプリを簡単に開発することができます。ネイティブ SDK としてモバイル デバイス向けに最適化された既製の UI コントロールのセットが提供されます。HTML では、UI をデザインするためのプリミティブ (基本的に長方形) のセットしか提供されませんが、Ionic では、モバイル開発者に HTML ベースのコントロールが提供され、タブ コントロールやリスト ビュー、その他多数のコントロールの使用が可能になります。

Tool for Apache Cordova (TACO) チームは、この 1 年間 Ionic チームと協力して、Ionic フレームワークと TypeScript 言語 (今後発表予定の Ionic 2 (英語) フレームワークの開発言語) を使用する Visual Studio 開発者に最高のエクスペリエンスをお届けできるよう取り組みを進めてきました。そして今回、TypeScript 言語を使用する新しい 2 つの Ionic テンプレート セットをリリースします。

これらのテンプレートはリンク先からダウンロードできます。詳細については、次のセクションをご覧ください。

Ionic 2 のテンプレートをお試しください

Ionic チームは、Angular 2 をベースとする次期バージョンの Ionic の RC リリースに向けて精力的に取り組んでいます。同様に、TACO チームも Visual Studio による Ionic 2 の優れたサポートを実現するために尽力しており、現行の Ionic 2 Beta 10 リリースをベースとする初期バージョンの Ionic 2 テンプレートをリリースしました。

このテンプレート セットには、上記の Ionic 1 リリースと同じ 3 つのテンプレートが含まれています。

  • Blank
  • Sidemenu
  • Tabs

TACO チームは、これらのテンプレートを Visual Studio 2015 で実験的にリリースすると同時に、次期バージョンである Visual Studio “15” で Ionic 2 開発者に優れたエクスペリエンスをお届けするべく取り組みを続けています。

開発者エクスペリエンスにはまだ改良が必要な点がいくつかあります。これらは、テンプレートを使用してプロジェクトを初めて作成するときに表示されるプロジェクトの readme ページに記載されています。特に重要な点として、Ionic 2 テンプレートを使用する場合には次の作業を行う必要があります

  • Visual Studio 2015 Update 3 以上をインストールする
  • 最新版の ASP.NET Web ツール (英語) をインストールする
  • 最初のプロジェクトを作成した後、ソリューション エクスプローラーの依存関係の項目から “(Restoring)” というメッセージが消えるまで待つ
  • ビルド前に、[View] メニューから [Other Windows][Task Runner Explorer] の順に選択して、Task Runner Explorer を開く。これにより、このテンプレートで使用するカスタム Gulp ビルド スクリプトを Visual Studio で実行できるようになります。

Ionic フレームワークとベータ版のテンプレートの利用方法の詳細については、先日公開された Ionic 2 の入門ガイド (英語) をご覧ください。

TypeScript と Ionic 1: 型によるツールの強化

以前より、TACO 開発者には JavaScript 開発者向けの Ionic 1 テンプレート (英語) が提供されていました。今回の更新では、JavaScript テンプレートのマイナー アップデートが実施されたほか、TypeScript プログラミング言語を使用する新しいテンプレート セットが追加されました。

JavaScript 開発と TypeScript 開発の両方で、以下の 3 つの Ionic テンプレートを利用できます。

  • Blank
  • Sidemenu
  • Tabs

インストール後、[File] メニューから [New Project] を選択すると、[JavaScript][Apache Cordova Apps] カテゴリと [TypeScript][Apache Cordova Apps] カテゴリに対象のテンプレートが表示されます。

TypeScript のサポートが追加されたことにより、他の TypeScript 開発者と同じツールを利用できます。以下に主な機能の一部を示します。

  • 高精度の IntelliSense
  • リファクタリング ツール
  • ソース全体から参照を検索
  • シンボルを使用したコード内のナビゲーション

Visual Studio と Ionic 1 の利用方法の詳細については、Ionic 1 の入門ガイド (英語) をご覧ください。

Ionic のエクスペリエンス向上へのご協力のお願い

Ionic 2 (英語) および Ionic 1 (英語) の TypeScript テンプレートを試して、ご感想をお聞かせください。これらのテンプレートの使用方法の詳細については、Ionic 2 の入門ガイド (英語)Ionic 1 の入門ガイド (英語) のチュートリアルをご覧ください。

ご意見については、各テンプレートのダウンロード ページのコメント欄、メールStack Overflow (英語)Twitterドキュメント サイト (英語) の各ドキュメントのコメント欄までお寄せください。

Jordan Matthiesen (@JMatthiesen)

JavaScript モバイル開発者ツール担当プログラム マネージャー

Jordan Matthiesen はマイクロソフトで Web およびモバイル アプリケーション開発者向けの JavaScript ツールを担当しています。それ以前にも 18 年以上の開発経験があり、現在は優秀なモバイル開発者からできるだけ多くの意見を取り入れることにしています。プライベートでは、コーヒーを飲みながら、妻と 4 人の子ども、犬と猫と共に過ごす時間を大切にしています。

 

Visual Studio テスト プラットフォームの進化 – パート 2

$
0
0

 

本記事は、マイクロソフト本社の The Visual Studio Blog の記事を抄訳したものです。
【元記事】 Evolving the Visual Studio Test Platform – Part 2 2016/8/5

 

前回の記事 (英語) でお約束したとおり、この記事では現在までに Visual Studio 2015 に実装され、提供されたすべてのテスト関連機能をまとめてご紹介いたします。これらの機能はそれぞれテスト ライフサイクルの異なるステージに関連するものですが、これらの機能が目標とするところは、「効率性の向上」という 1 点となります。このことは、ライフサイクルの図に重ねてみるとわかりやすくなります。

InvestmentsShipped

では、各機能の特長についてご説明していきましょう。

  • NuGet で公開されているサード パーティ製のテスト フレームワークおよびアダプター (1) のリストに “MSTest V2 (英語)(4) が加わり、待望の新機能が追加されました。これにより、独自のサイクルでリリース、更新することが可能になるほか、テスト対象のコードの依存関係として MSTest V2 を簡単に検索、インストール、アンインストール、更新できるようになります。
  • 単体テストの作成 (英語) (2) ウィザードにより、テスト プロジェクトやプロジェクトに含まれるテスト クラスおよびテスト メソッド スタブを簡単に構成し、コード作成フローの最中にテストのブートストラップをすばやく行うことができます。
  • ただし、テスト対象のコードのロジックをもれなく実行して検証する一連の単体テストを作成することは容易ではありません。基盤となるテスト対象のコードが頻繁に変更される場合にはなおさら困難です。IntelliTest (3) はこの課題を解決するために使える機能で、一連のテストを自動的に生成し、自動的に最新の状態を維持します。
  • 増分検証 (英語) (5) では、Red (失敗)、Green (成功)、Refactor (リファクタリング) という “開発の内部ループ” をさらに短期間で実施できるように、対象のビルドで利用されたテスト コンテナー内のテストのみを選択します。[Test Explorer] ウィンドウの [Run Test After Build] コントロールをクリックすると、選択されたテストのみが実行されます。
  • Visual Studio 2015 Update 3 では、並列実行を利用しない場合でもテストの実行が高速化 (9) され、テストの検出および実施時の両方でメモリ消費量が低下 (6) しています。これらの改良は、多数のテスト コンテナーに別れた何千、何万というテストを含んでいる大規模なソリューションで特に重要になります。
  • アセンブリの解決 (8) により、テストの実行時に依存関係を読み込む場所を簡単に設定できます。この機能は、ラボ環境でインストールした製品に対してテストを実行する場合 (依存関係の DLL とテスト用の DLL を同じ場所に配置することが困難な場合) に特に便利です。
  • テストの並列実行 (英語) (10) は、すべてのテスト アダプターでサポートされています。並列処理の単位としてテスト コンテナー (実行するテストを含むファイル) を使用し、分離の単位としてプロセスを使用します。各コンテナー内では、対応するテスト フレームワークのセマンティクスに従ってテストが実行されます。この機能は、[Test Explorer] ウィンドウから直接有効化できますが、.runsettings ファイルを使用して、並列処理のレベルを追加で設定 (7) することもできます。

Visual Studio “15” Preview

これまでに、Test Explorer に関するフィードバック (英語) が多数寄せられています。これらのフィードバックについては、Visual Studio “15” Preview 2 以降で対応してまいります。

  • 名前空間別のグループ化 (英語) (11) が実装され、Test Explorer で利用可能なグループ化の種類が補完されました。
  • ビルドの失敗時に、以前のビルドからテストを実行するオプション (英語) (12) が追加されました。このオプションを変更するには、[Tools]、[Options]、[Project and Solutions]、[Build and Run] の順に選択します。
  • テストの実行時に Test Explorer が自動的に表示 (英語) (13) され、実行中のテストを簡単に確認できるようになりました。
  • テストの継続時間を正確に表すために、新しい h:mm:ss:sss 形式が使用されるようになりました (14)
  • [Summary] ウィンドウ、[Output] ウィンドウ、[Continuous Integration] ウィンドウのテスト レポートで各テストの継続時間の表示が統一されました (15)
  • さらに、継続時間別にグループ化した場合、時間のかかるテストが隠れることなく上部に表示されるように各グループのテストの並べ替えが可能になりました (16)

GroupingAndDuration

出力ログ ファイルを確認していると、ログが途中で終了し、「!!LOG TRUNCATED!! To get a complete log select “Copy All” and paste into some text editor like Notepad (!! ログが切り詰められました !! 完全なログを取得するには、[すべてコピー] を選択し、メモ帳などのテキスト エディターに貼り付けます)」というメッセージが表示される場合があります。Test Window では選択およびコピー操作がサポートされていなかったため、コードに含まれる例外メッセージなどをすばやく検索することは困難でした。Visual Studio “15” では、この問題が修正されています。

CopyFromOutputWindow

まとめ

ここでご紹介した 18 の機能は、テストの概念化からビジネス上の意思決定に利用するレポートの生成まで、ライフサイクル全体にわたって効率性を向上するという共通の目的を果たすものです。

機能ごとに 1 本ずつ記事を書き上げることもできますが、それはまた別の機会にします。その間、皆様からご意見をお聞かせいただければ幸いです。

次回予告: vstest プラットフォームの今後の展望

次回の記事では、テスト プラットフォームの今後の方向性と、具体的な取り組みについてご説明します。

どうぞご期待ください。

Visual Studio の便利なのに知られていない機能

$
0
0

 

本記事は、マイクロソフト本社の Scott Hanselman Blog の記事を抄訳したものです。
【元記事】 Visual Studio’s most useful (and underused) tips 2016/8/17

 

まず、私が先日公開したブログ記事 (英語) に寄せられたあるコメントを紹介しましょう (たくさん寄せられたうちの 1 つで、その記事のコメント欄でご覧いただけます)

Btw, “until I realized that the Solution Explorer tree nodes are searchable.” This one is a saver !
(訳: ところで、「ソリューション エクスプローラーのツリー ノードが検索可能…」と書かれてていますが、こういうヒントは助かります!)

この記事の中で何気なくソリューション エクスプローラーのテキストが検索可能であることに触れたのですが、それがコメントの投稿者である Sam さんの目に留まったようです。このようなちょっとした小ワザは Visual Studio にたくさんあり、中には熟練の開発者ですら知らないものもあります。こうしたことは Visual Studio に限らず、あらゆるソフトウェアで見られます。Windows、OSX、iPhone などでわかりにくいユーザー エクスペリエンスをユーザーが発見することは日常茶飯事です。ユーザー エクスペリエンスがわかりやすければすべて直観的に操作できるものですが、そうではないのが実情です。;)

機能を数えきれないほど (英語) を備えている Microsoft Office にまつわる古いジョークがあります。

Most of the exciting new Office features you discover have always been in Office.
(訳: あなたが発見したすばらしい新機能のほとんどは、はるか昔から Office にあったものだ。)- 筆者および開発担当者一同 (英語)

この記事では、多くのユーザーが気づいていない Visual Studio の非常に便利な機能をいくつかご紹介します (ちなみに、Visual Studio は無料でダウンロードできます)。

ソリューション エクスプローラーの検索: Ctrl + セミコロン (;)

ソリューション エクスプローラー上部のテキスト ボックスをクリックするだけで、表示されているノードも非表示のノードもすべて検索することができます。Ctrl + セミコロン (;) キーを押しても検索可能です。

Ctrl ; will filter the Solution Explorer

非常に深い階層にあるノードも検索できます。検索結果は絞り込まれて表示され、この状態は検索テキストをクリアするまで維持されます。

Ctrl ; will filter the Solution Explorer and open subnodes

クイック起動: Ctrl + Q

だれも使っていないけど絶対に使ってもらいたい機能を 1 つ挙げるとすれば、「クイック起動」です。同僚が教えてくれたのですが、システム内部の利用統計情報によると、クイック起動の利用率は 1 桁台またはそれ以下だそうです。

ユーザーの多くは機能にアクセスする際、いつもメニューをたどっています。マウスで [ツール]、[オプション] というように順番に選択してから、目当ての機能を目で探すのです。

それよりも、Ctrl + Q を押してテキストを入力する方が簡単だと思いませんか? フォント サイズを変更したい場合は、以下のようにテキストを入力します。

Find the Fonts Dialog quickly

ファイルを比較したい場合は、以下のように入力します。そもそも VS にこのような機能があることをご存知でしたか?

Compare Files

NuGet のダイアログを使用するよりも早く NuGet パッケージを検索するなら、以下のように入力します。

image

Ctrl + Q をこれから何日か使ってみて、慣れるかどうか試してみてください。きっと便利ですよ。

スクロール バーのマップ モード

私はユーザーの皆様に「そんな機能があるなんて思いもしなかった」と驚いてもらえるような機能を紹介するのが大好きです。では、クイック起動で「map mode」とテキストを入力し、下図のように有効化した後、大きなファイルを開いてスクロール バーを確認してみてください。

Map Mode for the Scroll Bar

スクロール バーがサムネイル表示になり、その上にポインターを合わせるとファイル内のコードを確認できます!

Map Mode turns your Scrollbar into a Scroll Thumbnail

タブの管理

多くのユーザーの皆さんのタブの使い方は、以下のような感じではないでしょうか。

  • タブを開く
  • 別のタブも開く
  • タブをたくさん開きすぎて表示しきれなくなる
  • タブを全部閉じる
  • 最初からやり直し

これをやめて、「ピン留めタブ」や「プレビュー タブ」を利用することをお勧めします。

Pin things you want to keep open

ブラウザーと同じようにタブをピン留めすると、ピン留めしたタブは常に左側に表示されるようになります。右クリックのコンテキスト メニューから「すべて閉じる」、「このタブ以外すべて閉じる」という操作ができるだけでなく、「ピン留めしたタブ以外すべて閉じる」ことも可能です。

image

また、ファイルの内容を確認する場合に、ソリューション エクスプローラーでダブルクリックする必要はありません。ダブルクリックすると新しいタブが開きますが、このタブも結局は閉じることになります。代わりに、シングルクリックするか、キーボードから操作してみてください (後者をお勧めします)。右側にプレビュー タブが表示されます。プレビュー タブは 1 つしか表示されないため、いくら開いてもタブが散らかることはありません。ただし、複数表示するように設定することも可能です。

移動: Ctrl + コンマ (,)

圧倒的に便利なショートカットは、NavigateTo に相当する Ctrl + コンマ (,) です。ファイルを開いたり、特定のメンバーや機能を検索したりする際に、マウスのクリックを繰り返す必要はありません。Ctrl + コンマ (,) を押して文字を入力するだけで、ファイル、メンバー、型など、あらゆるものを検索できます。その後、キーボードで目的の項目を選択し、Enter キーを押します。

確認したい項目の名前がわかっている場合は、ソリューション エクスプローラーを何度もクリックするなんて無駄です。Ctrl + コンマ (,) がいちばん早いです。

image

キーボードで行を移動

もちろん Visual Studio は Emacs でも VIM でもありません (VsVim (英語) するなら話は別です)。しかし、ほとんどの VS ユーザーが使用していない便利な小ワザもあります。

Alt + 上方向/下方向キーを押すだけで、コードの行を移動させることができます。私の他にこのショートカットを実務で利用している人を見たことがありません。さらに、Shift キーを押しながら複数行を選択して Alt + 上方向/下方向キーを押すと、行をまとめて移動できます。

Move those lines with ALT-ARROW

また、Alt を押しながらマウスをドラッグするとブロック選択できます。長方形の範囲を選択してから入力すれば、大量の行を一度に編集できます。

ご存知の機能もあったかもしれませんが、少しでもお役に立てればと思ってご紹介しました。重要なのは、非常に便利な機能を 5 ~ 10 個ほど自由に使えるようにしておくことです。この記事では私が愛用する便利機能をご紹介しました。皆様のお気に入りのテクニックは何ですか?


広告: 同一のアプリケーションを個々のエンド ユーザーに繰り返しデプロイしていませんか? Octopus のチームはマルチテナント デプロイメントに伴う手間を削減しようと取り組んでいます。Octopus Deploy 3.4 ベータ版 (英語) をお試しください。

筆者紹介

Scott Hanselman は、これまでに教授や金融会社のチーフ アーキテクトを務め、現在はマイクロソフトに勤務する傍ら、講演者やコンサルタントとして、父として、また、糖尿病を抱えながら働いています。漫才師のなり損ない、コーンロー ヘアーのスタイリスト、著者という肩書きも持っています。

 

PowerShell のオープン ソース化とクロス プラットフォーム対応

$
0
0

 

本記事は、マイクロソフト本社の The Visual Studio Blog の記事を抄訳したものです。
【元記事】 PowerShell is now open-source, and cross-platform 2016/8/18

 

このたび、PowerShell がオープン ソース化され、Windows、Mac、Linux で利用可能になったことが PowerShell チームより発表 (英語) されました。これ自体がすばらしいニュースですが、.NET チームとしては、.NET 開発者にどのようなメリットがあるのかを考察してみたいと思います。

まず、PowerShell が Linux や Mac OS で利用可能になったことで (これらのオペレーティング システムのネイティブのシェル エクスペリエンスの代わりにご利用いただくことが目的ではないものの)、環境が混在するチームでの共同作業が容易になります。仮想マシンを起動することなく各 OS 上で同じスクリプトを実行できるため、開発作業が促進され、異なる環境を使用している開発者間の摩擦が軽減されます。

アプリケーションを運用環境にデプロイする際には、PowerShell スクリプトを Linux で実行できることで、ターゲット環境をより柔軟に選択できるようになり、Linux サーバーと Windows サーバー間での移行も簡単になります。

もちろん、オープン ソース モデルへの移行には、コミュニティの協力が必要となるだけでなく、設計プロセスの透明性の向上とバグ追跡が重要になります。今後は、PowerShell を必要とするユーザーがだれでも、新しいプラットフォームや環境に実装できるようになります。

そして、PowerShell および PowerShell スクリプトは .NET Core でも実行可能になりました。

次の関連情報をご確認ください。

Visual Studio “15” Preview 4

$
0
0

 

本記事は、マイクロソフト本社の The Visual Studio Blog の記事を抄訳したものです。
【元記事】 Visual Studio “15” Preview 4 2016/8/22

 

このたびマイクロソフトは Visual Studio “15” Preview 4 をリリースしました。このバージョンでは多数の機能強化と不具合の修正を行い、製品の完成度をさらに高めています。

今回最もご注目いただきたいのは、ほぼすべての VS が新しいセットアップ エンジン上で実行され、結果としてインストール ファイルの容量の削減、インストールの高速化と影響の低下が実現されている点です。最も小さいインストール ファイルのディスク容量は 500 MB を下回っており、前バージョンの Visual Studio の 6 GB と比較すると大幅に小さくなっていることがわかります。.NET Core ツールや Azure ツールなどまだ実装されていない「ワークロード」もいくつかありますが、その他の既存の VS 2015 機能セットはすべてご利用いただけます。

新しいインストーラーの詳しい情報については、次の 2 つのブログ記事をご確認ください (新しいインストール エンジンに関する記事ワークロードの再設計プロセスに関する記事)。デプロイメントの自動化やオフライン インストールのサポート、リファクタリングやコンポーネント化の推進などは、リリース前から実装が予定されていました。

Preview 4 では新しいインストーラーの他にも多数の機能強化を実施しました。まず、スタート ページに最近のリストやニュース フィードで特によく使用される機能に対する [Open] 機能と [Create] 機能が新たに追加されました。また、全体的に C++ の機能を多数実装しました。現在はフィードバック システムのアップグレードにも取り組んでいます。IDE の問題報告機能をお試しいただくと、今回何が改善されたのかよくおわかりいただけると思います。そのうえで、開発者コミュニティ ポータル (英語) ビューもご確認ください。

このリリースで提供される機能の完全なリストと既知の問題については、Visual Studio “15” Preview 4 のリリース ノート (英語) を参照してください。

次に、Preview 4 の注意点を 2 つお伝えします。まず、今回はプレビュー版でサポート対象外であるため、重要な業務に使用しているコンピューターにはインストールしないでください。また、Preview 4 は前バージョンの Visual Studio と共存インストールできますが、セットアップを開始する前に旧バージョンの Visual Studio “15” Preview インストールをすべて削除することをお勧めします。その他の一般的な問題については、Preview 4 についてよく寄せられる質問 (英語) を参照してください。

マイクロソフトでは皆様からのフィードバックをお待ちしています。問題点がありましたら、インストーラーまたは Visual Studio IDE 本体の [Report a Problem] オプションからご報告をお願いします。また、ご提案は UserVoice (英語) までお寄せください。

John Montgomery (Visual Studio 担当プログラム マネージメント ディレクター)
@JohnMont
John Montgomery は Visual Studio、C++、C#、VB、JavaScript、.NET の製品設計とユーザー サポートを担当しています。マイクロソフトには 17 年前に入社して以来、開発者向けテクノロジの開発に従事しています。

サーバーレス コンピューティングと Azure Functions の概要

$
0
0

 

本記事は、マイクロソフト本社の Scott Hanselman Blog の記事を抄訳したものです。
【元記事】 What is Serverless Computing? Exploring Azure Functions 2016/8/27

 

「クラウド」という言葉は別にしても、クラウドの世界はわかりづらい言葉であふれています。

  • IaaS (サービスとしてのインフラストラクチャ) – オンデマンドで使用可能な仮想マシンなどのリソース。
  • PaaS (サービスとしてのプラットフォーム) – アプリのデプロイ先。その基盤となる仮想マシンなどについて考慮する必要はありません。実際には仮想マシンは存在しているのですが、必要がない限り存在が見えないようになっています。
  • SaaS (サービスとしてのソフトウェア) – Office 365 や Gmail のような製品。サブスクリプション料金を支払って電子メールなどのサービスを利用します。ユーザーには動作しているようすのみが見えます。

「サーバーレス コンピューティング」では、実際にサーバーが存在しないわけではありません。サーバーレスとは、ユーザーがサーバーの存在を意識する必要がないという意味です。これは PaaS と類似していますが、さらに高レベルなものです。

サーバーレス コンピューティングでは、コードを作成してスライダーを調整し、クレジット カードを用意します。以上で関数を使用する準備が完了し、支払い額に応じてスケーリングすることができます。これは、クラウドで得られる「クラウド的」なメリットによく似ています。

Serverless Computing is like this. Your code, a slider bar, and your credit card.

PaaS では、Node や C# のアプリを作成して Git にチェックインし、Web サイトにデプロイするか、または Web アプリケーションとしてデプロイすると、エンドポイントが作成されます。この場合、スケール アップ (CPU の高速化やメモリ、ディスクの容量増加) またはスケール アウト (Web アプリのインスタンス数の増加) は可能ですが、シームレスに実行することはできません。非常に有効な手段ではありますが、この環境では常にサーバーを意識する必要があります。

Amazon LambdaAzure Functions のような新しいクラウド システムでは、コードをアップロードした数秒後にはそれを実行できます。ここでは、継続的なジョブやイベントによりトリガーされる関数を実行したり、Web API や URL 付きの関数の Webhook を作成したりできます。

この記事では、サーバーレス コンピューティング環境で手軽に Web API を作成できる方法について説明します。

まず、https://azure.microsoft.com/ja-jp/services/functions/ にアクセスして新しい関数を作成します。アカウントをお持ちでない方は、無料でサインアップできます。

Getting started with Azure Functions

関数は JavaScript または C# で作成できます。

Getting started with Azure Functions - Create This Function

Azure Function エディターにアクセスしたら [New Function] をクリックします。下記のようなテンプレートやサンプル コードが数十種類用意されています。

  • 画像内から顔を検出し、その周辺の長方形を保存する
  • GitHub Webhook がトリガーされた場合に関数を実行し GitHub の issue にコメントを投稿する
  • HTTP 要求を受け取ったときにストレージ BLOB を更新する
  • データベース テーブルまたはストレージ テーブルからエンティティを読み込む

ここでは、上記の最初の例を変更することにします。この関数では、ストレージ内の画像を表示し、Cognitive Services の API を呼び出して顔の位置を取得し、データを保存するという動作をトリガーします。これを次のように変更します。

  • 画像を HTTP POST からの入力として取得する
  • 顔の周囲に長方形を描画する
  • 新しい画像を返す

この作業は Git や GitHub で行うことができますが、ここでは簡略化のためすべてブラウザーで行います。そのようすを次の図に示します。

Azure Functions can be done in the browser
コードを作成して繰り返し変更し、保存して、何度も実行してはエラーを発生させます。基礎として使用した最初のコードを次に示します。このコードはイベントをトリガーする最初の関数です。ここで、コード内の Run() を変更します。
#r "Microsoft.WindowsAzure.Storage"
#r "Newtonsoft.Json"

using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
using Newtonsoft.Json;
using Microsoft.WindowsAzure.Storage.Table;
using System.IO;

public static async Task Run(Stream image, string name, IAsyncCollector<FaceRectangle> outTable, TraceWriter log)
{
    var image = await req.Content.ReadAsStreamAsync();

    string result = await CallVisionAPI(image); //STREAM
    log.Info(result);

    if (String.IsNullOrEmpty(result))
    {
        return req.CreateResponse(HttpStatusCode.BadRequest);
    }

    ImageData imageData = JsonConvert.DeserializeObject<ImageData>(result);
    foreach (Face face in imageData.Faces)
    {
        var faceRectangle = face.FaceRectangle;
        faceRectangle.RowKey = Guid.NewGuid().ToString();
        faceRectangle.PartitionKey = "Functions";
        faceRectangle.ImageFile = name + ".jpg";
        await outTable.AddAsync(faceRectangle);
    }
    return req.CreateResponse(HttpStatusCode.OK, "Nice Job");
}

static async Task<string> CallVisionAPI(Stream image)
{
    using (var client = new HttpClient())
    {
        var content = new StreamContent(image);
        var url = "https://api.projectoxford.ai/vision/v1.0/analyze?visualFeatures=Faces";
        client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", Environment.GetEnvironmentVariable("Vision_API_Subscription_Key"));
        content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
        var httpResponse = await client.PostAsync(url, content);

        if (httpResponse.StatusCode == HttpStatusCode.OK){
            return await httpResponse.Content.ReadAsStringAsync();
        }
    }
    return null;
}

public class ImageData {
    public List<Face> Faces { get; set; }
}

public class Face {
    public int Age { get; set; }
    public string Gender { get; set; }
    public FaceRectangle FaceRectangle { get; set; }
}

public class FaceRectangle : TableEntity {
    public string ImageFile { get; set; }
    public int Left { get; set; }
    public int Top { get; set; }
    public int Width { get; set; }
    public int Height { get; set; }
}

目標: この Run() を変更し、画像を含む HTTP 要求をリッスンして POST された画像 (ここでは検証は行いません) を読み込み、検出された顔の周辺に長方形を描画し、新しい画像を返すようにします。

public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log) {
    var image = await req.Content.ReadAsStreamAsync();

この関数の本体について、ちょっと MemoryStreams を多用しすぎているような気もしますが、これから整理することにして、このコードを初期概念実証バージョンとします。この後、少なくとも 2 つのことを行う必要があります。ともかく、この件に関してよくご存じの方とお話することができて、想像以上の優れたアイデアを得られました。次に示すように、基本的には API を呼び出して複数の顔のデータを取得します。

2016-08-26T23:59:26.741 {"requestId":"8be222ff-98cc-4019-8038-c22eeffa63ed","metadata":{"width":2808,"height":1872,"format":"Jpeg"},"faces":[{"age":41,"gender":"Male","faceRectangle":{"left":1059,"top":671,"width":466,"height":466}},{"age":41,"gender":"Male","faceRectangle":{"left":1916,"top":702,"width":448,"height":448}}]}

このデータを取得して、顔が検出された場所の周辺に長方形を描画します。

public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log)
{
    var image = await req.Content.ReadAsStreamAsync();

    MemoryStream mem = new MemoryStream();
    image.CopyTo(mem); //他の API により破壊されるため、コピーを作成します。ただ、あまり良い方法ではありません。
    image.Position = 0;
    mem.Position = 0;

    string result = await CallVisionAPI(image);
    log.Info(result);

    if (String.IsNullOrEmpty(result)) {
        return req.CreateResponse(HttpStatusCode.BadRequest);
    }

    ImageData imageData = JsonConvert.DeserializeObject<ImageData>(result);

    MemoryStream outputStream = new MemoryStream();
    using(Image maybeFace = Image.FromStream(mem, true))
    {
        using (Graphics g = Graphics.FromImage(maybeFace))
        {
            Pen yellowPen = new Pen(Color.Yellow, 4);
            foreach (Face face in imageData.Faces)
            {
                var faceRectangle = face.FaceRectangle;
                g.DrawRectangle(yellowPen,
                    faceRectangle.Left, faceRectangle.Top,
                    faceRectangle.Width, faceRectangle.Height);
            }
        }
        maybeFace.Save(outputStream, ImageFormat.Jpeg);
    }

    var response = new HttpResponseMessage()
    {
        Content = new ByteArrayContent(outputStream.ToArray()),
        StatusCode = HttpStatusCode.OK,
    };
    response.Content.Headers.ContentType = new MediaTypeHeaderValue("image/jpeg");
    return response;
}

次に System に参照を追加しました。ファイル冒頭でこの構文を使用して描画を実行し、ここで使用する System.Drawing や System.Drawing.Imaging などの名前空間を追加しました。また、入力について、[Integrate] タブの入力を “HTTP” に変更しました。

#r "System.Drawing

それでは、Postman (英語) にアクセスして、新規作成された Azure Function のエンドポイントに画像を POST します。ここでは、実物よりもうまく撮れている私と、実物よりもうまく撮れていない The Oatmeal の設立者である Matthew Inman 氏の写真をアップロードしています。彼は、実際もっと素敵な男性なのですが。

Image Recognition with Azure Functions
特に何もせず 15 分ほどブラウザー、Postman (とブラウザー)、Google/StackOverflow、Azure Functions を眺めていると、バックエンドの概念実証が完了しました。

Azure Functions では、Node.js、C#、F#、Python、PHP の各言語、および Batch、Bash、PowerShell の各ツールをサポートしていて、ほぼすべてのユーザーが自由に使用できます。Slack にコードを送信したり、システムを自動化したり、GitHub の issue を更新したり、Webhook として動作させたりするなど、Web で関数を使用したいときには、どのようなケースでもこれを利用できます。また、こちらの GitHub リポジトリ (英語) ではサードパーティ製の優れた Azure Functions のサンプル コードが公開されています。入力も出力も、基本的に場所を選ばず行うことができます。そのため、スケーリングが簡単な「サーバーレス バックエンド」を Azure Tables や Azure Storage などのクラウド サービスでも利用できます。

まだわからないこともありますが、VM (完全に制御可能)、Web アプリ (ほぼ完全に制御可能)、「サーバーレス」の Azure Function (制御可能な範囲は狭いながらも、制御は不要でただ関数をクラウドで使用したい場合に便利) のいずれが適しているのか、場合に応じて判断できるようになりました。


スポンサー: Aspose により、DOC、XLS、PPT、PDF などの多数のファイルで API のプログラミングが可能になりました。同社の製品を使用して、ファイルの作成、変換、変更、管理をあらゆる方法で行うことができます。ぜひ Aspose の優秀な製品をご利用ください。こちらのページ (英語) で各製品の内容を確認し、無料試用版をダウンロードできます。

SCOTT HANSELMAN について

Scott Hanselman は、大学教授と金融会社のチーフ アーキテクトという経歴を持ち、現在はマイクロソフトの社員として講演やコンサルティングを担当しています。父親や糖尿病患者としての顔もあります。また、漫談やドレッドヘアーを編むことが好きで、執筆活動も行っています。

 

Visual Studio Team Services で iOS アプリケーションの継続的デリバリを実現

$
0
0

 

本記事は、マイクロソフト本社の Microsoft Application Lifecycle Management Blog の記事を抄訳したものです。
【元記事】 Continuous Delivery of iOS Applications with Visual Studio Team Services 4 2016/8/25

 

このたび、Apple App Store 拡張機能 (英語) が発表されました。この機能を使用すると、Team Services または Team Foundation Server (2015 Update 3 以降) を通じて iOS アプリケーションを Apple App Store にデプロイすることができます。Google Play 拡張機能 (英語) と併せて使用すると、Team Services および TFS を通じて iOS や Android のモバイル アプリケーションの継続的なデプロイを実現できます。

この Apple App Store 拡張機能では、モバイル開発者にお馴染みのオープン ソース ツールである Fastlane (英語) が使用されています。この拡張機能はオープン ソースなので、コードは GitHub (英語) で公開されています。

また、ビルド タスクとリリース タスクという 2 つのタスクと 1 つのサービス エンドポイントがあり、Apple App Store や iTunes Connect の資格情報を管理できます。この機能により以下のことを実施できます。

  • 既存のアプリのビルドをアップロードし、テストフライト (英語) としてベータ版テストを実施
  • 既存のアプリのビルドをメタデータやスクリーンショットと共に iTunes Connect (英語) にアップロード
  • レビュー用に Apple App Store にアプリを送信

release-task-with-advanced

次のデモ ビデオもご覧ください。
ぜひこの機能を試して、GitHub リポジトリ (英語) にご意見をお寄せいただければ幸いです。問題点のご報告もお待ちしています。
ではまた!

クラウド ロード テスト サービスがハイパースケールに対応: 100 万ユーザーの同時実行負荷を生成する場合

$
0
0

 

本記事は、マイクロソフト本社の Microsoft Application Lifecycle Management の記事を抄訳したものです。
【元記事】 Cloud-load testing service is hyper-scale ready: lessons from generating 1M concurrent user load 2016/9/30

 

販促キャンペーンやクリスマス セールといった大規模な季節イベントの最中に、基幹業務アプリがダウンしてしまったという話はよく耳にします。このような場合、原因の多くは、一時的に発生する大規模な需要にアプリが対応できていないことにあります。最終的にはサーバーで障害が発生して、顧客満足度の低下や機会損失といった最悪の事態につながることになります。お客様のアプリがこのような事態に陥らないようにするには、クラウド ロード テスト (CLT) サービスを使ってアプリが需要の急増に対応できるかどうか検証するのがおすすめです。

ロード テストに使用するツールやサービスでは、必要な規模の負荷を生成できなくてはなりません。そのため、マイクロソフトでは先日インフラストラクチャを変更し、CLT サービスをハイパースケールで実行できるようにしました。ハイパースケールへの対応状況を検証する一環として、100 万ユーザーの同時実行負荷を生成するテストを実行し、正常に行えることを確認しました。「同時実行」とは、100 万ユーザーが全員同時にアクティブな状態にあったということです。このテストは、自動的にプロビジョニングされたエージェントを使用する場合と、Azure IaaS VM を使用して「自社のサブスクリプションを持ち込む (英語)」場合の両方に対応しています。つまり、自動的にプロビジョニングされたエージェントを使用するにしても、自社のマシンを持ち込むにしても、ハイパースケールでテストを実行できます。

先日実施したインフラストラクチャの変更によってさまざまな効果が表れていますが、ここでは特に以下の 2 点にご注目ください。

  • エージェント コア 1 つあたりの仮想ユーザー数が、最大でこれまでの 2.5 倍に増加しました。これまで宣言型 Web テストではエージェント コア 1 つにつき 250 ~ 1,000 の仮想ユーザーを生成できましたが、この数が 600 ~ 2,500 に増えました。
  • リソース取得の総所要時間が 50% 以上短縮され、ロード テストでエージェントを準備してテストを開始するまでにかかる時間が大幅に短くなりました。大規模なテストを実行する場合、これまでは準備に 15 分程度かかっていましたが、これが 7 分程度にまで短縮されます。また、リソース保持機能 (英語) も引き続き使用できるため、ロード テストで修正とテストを短期間で繰り返す場合はさらに準備時間を削減できます。

以降では、大規模なロード テストの実行に関する疑問にお答えします。また、意図した負荷を適切に生成できるように、負荷の生成方法に影響を及ぼす設定についてもご説明します。

まず、私たちが実行したテストのスクリーンショットをご覧ください。

1MTest

ご覧のとおり、同時実行ユーザー数 100 万、総要求数 4,370 万、秒間要求数 7 万 1,100 という生成結果と、エラー発生数 0 という非常に良好な結果が得られました。それでは詳しくご説明していきます。

アプリのセットアップ: このテストの目的は 100 万の同時実行ユーザーを生成できるかどうかの検証であったため、容易にスケーリングできるアプリが必要でした。このため、コアの検証のほか、サービスの問題を修正して、安心してアプリをスケーリングできるようにすることに集中しました。テストではシンプルな ASP.NET Web API コメント アプリ (英語) を使用し、1 台のロード バランサーに接続された Azure IaaS VM 一式にそれをデプロイしました。徐々に負荷を増大させながらテストを実行し、アプリがその限界に達すると VM インスタンスをさらに追加して増強しました。100 万の同時実行ユーザーに対してアプリからサービスを提供するために、Azure の Standard_D4_V2 VM インスタンスを 12 台使用しました。

テスト: ホーム ページへの要求を送信する Web テストの作成には Visual Studio を使用しました。一定の負荷パターンを用いるようにロード テストを設定し、100 万の同時実行ユーザーをシミュレートしました。通常、現実世界では一定期間にわたって負荷が上昇します。しかし、エージェントが過酷な条件も簡単にシミュレートできることを検証するために、このテストでは大規模で一貫した負荷をかけました。テストの詳細は GitHub (英語) で公開しています。

ロード テストに関して、「1 台のエージェントでどのくらいの数の仮想ユーザーを生成できるのか?」、「ロード テストで必要となるエージェント数は?」といった質問をよくいただきます。皆様が特に関心のある質問だとは思いますが、これには「場合によって異なる」としかお答えできません。アプリは 1 つひとつが違い、ユーザーのシナリオをシミュレートするテストもそれぞれ異なります。宣言型の Web テストであるのか、コードを作成して実行する単体テストであるのか、または検証するシナリオを的確に再現した自作コードによる Web テストであるのかによっても異なります。さらに、テストでカスタム プラグインを使用する場合もあります。テスト実行時には、エージェントは負荷を生成するために CPU やメモリ、ディスクなどのリソースを消費します。テスト エージェントのこれらのリソースについては、ロード テスト中にパフォーマンス カウンターのデータが収集されるため、これを基にエージェントでさらに多くの仮想ユーザーを処理できるかどうかを判断できます。まずは小規模なロード テストから始め、大規模なロード テストを実行する前にそのテストでのエージェントの処理能力を把握することをお勧めします。

TCPV4

 

上のスクリーンショットは、エージェントで収集される各種のパフォーマンス カウンターを示したものです。これらの値はテストで消費される各種リソースの状態を表し、テストに使用するエージェントの能力を判断する際の参考になります。CPU やメモリなどの通常の指標に加えて、私たちのテストでは TCPv4 カウンターのデータも収集しています。この値はハイパースケールでテストを実行する場合に重要です。ロード テストを実行しアプリに要求を送信するとき、接続にはソケットが使用されます。要求で SocketExceptions エラーが発生した場合、アプリが負荷を処理できなかったために接続が切断されたのか、エージェントがソケットの能力の限界に達したのかを簡単に判断できる方法があると便利です。なお、エージェント マシンは 1 台で最大 64,000 の接続が可能です。

1 仮想ユーザーあたりの最大接続数に影響を及ぼす要素と、ロード エージェントを最大限に活用できる設定については、“WebTest 接続モデル” の設定が関係してきます。この設定では、Web テストの実行を含むロード テストでの接続の使用方法を制御します。

ユーザーあたりの接続” モデルは、ブラウザーを使用しているユーザーの動作を近似したシミュレーションです。まず、Web パフォーマンス テストで最初の要求が発行されたときに最初の接続が確立されます。ページに複数の依存要求が含まれている場合は、さらに接続が追加されます。これらの要求は、追加された接続を使用して並列的に発行されます。ブラウザーの動作に近づけるために、最大で 6 つの接続が同時に確立されます。このモデルで負荷を生成すると、エージェントの接続数が増加し (ユーザー負荷数の最大 6 倍)、生成可能なユーザー負荷が制限されるという難点があります。また、接続に関係するメモリ使用量も増加し、1 つの Web テストが完了して次の Web テストが新たに開始されるときの接続の切断と再接続に要する処理時間が長くなります。ユーザー負荷を高める場合は、“接続プール” モデルを使用することをお勧めします。

接続プール” モデルでは、複数の仮想ユーザーで Web サーバーとの接続を共有するため、ロード テスト エージェントのリソース消費が抑えられます。ユーザー負荷が接続プール サイズを超過する場合、異なる仮想ユーザーで実行されている Web パフォーマンス間で接続が共有されます。このため、ある Web テストが接続を使用しているとき、別の Web テストは要求を発行する前に待機しなくてはならなくなる可能性があります。Web パフォーマンス テストで要求が送信されるまでの平均待機時間は、ロード テストの平均接続待機時間を示すパフォーマンス カウンターで追跡されます。この値は、ページの平均応答時間を下回る必要があります。要求の平均接続待機時間がページの平均応答時間を上回る場合は、接続プール サイズが小さすぎてページのスループットが限界に達していると考えられます。適切な接続プール サイズは次の式で求められます。

接続プール サイズ = 64,000 / (最大同時接続数 (テストで依存要求が発行される場合、この値は 6) * サーバー URI ホスト数)

要求に対して CDN からサービスが提供される場合、それに応じてサーバー URI ホスト数を調整する必要があります。

プール サイズを決定するには、ロード テストで使用する Web テストをローカルで実行し、その結果から依存要求の有無とサーバー URI ホスト数を確認します。これは、JavaScript、CSS、画像などの依存要求のほとんどがテスト作成時に記録されないためです。その代わりに応答の内容が解析され、その内容に応じて追加の要求がテスト実行時に発行されます。このため、作成されたテストに依存要求が記録されなくても実際には存在している可能性があり、実行結果を確認しなければ判断できません。ここからは、その例を見ていきます。

bingtestresult

 

このスクリーンショットは、bing.com に要求を発行する Web テストの結果を示したものです。結果からわかるように、追加の要求は生成されていません (bing.com への 2 つ目の要求は 302 リダイレクトによるもので、依存要求ではありません)。また、要求先のサーバー URI も bing.com のみとなっています。テストでは他の要求がまったく発行されておらず、調査が必要な依存要求がないことがわかるため、最大同時接続数 = 1 (依存要求は存在しない)、サーバー URI ホスト数 = 1 (bing.com) になります。これにより、プール サイズは最大接続数の 64,000 とします。

 

 

 

 

 

 

dependentreqresult

2 つ目の例でも、1 つのトップ レベル要求を Azure Web サイトに発行しています。その結果、複数の依存要求 (画像や CSS など) が確認されましたが、そのすべてが単一サーバー ホストから提供されています。このため、最大同時接続数 = 6、サーバー URI ホスト数 = 1、そしてプール サイズは 10,667 となります。

同様に、CDN からサービスを提供される依存要求が存在する場合は、サーバー URI ホスト数が増加し、それに応じてプール サイズも調整が必要となります。

以上のことから、大規模なロード テストを実施する場合、プール サイズの値が小さいほど、大規模な負荷を生成するために必要なエージェントの数は多くなります。上記のテストでは 8 コアのエージェントを 20 台、合計 160 個のコアを使用して必要な負荷を生成しました。既定では、すべての VSTS アカウントで最大 200 コアのテストを実行できます。ほとんどの場合、これでお客様のニーズに対応可能であることを確認しています。さらに大規模なロード テストを実行する必要があり、エージェントのコア数が不足する場合は、vsoloadtest@microsoft.com までお問い合わせください。

最後に、問題発生時のトラブルシューティングを考慮すると、ロード テスト実行時にアプリを監視することも非常に重要です。アプリの監視には Application Insights などのツールをご利用ください。

この記事が皆様のお役に立てば幸いです。CLT でお客様のアプリに成果が見られた場合はぜひお知らせください。CLT サービスのハイパースケール対応状況の検証は、Visual Studio ロード テスト製品チームと Microsoft Testing Services チームが共同で実施しました。この取り組みに協力してくれた Dindo Sabale、Shyamjith Pillai、Dennis Bass に感謝の意を表します。アプリケーションのテストに関するコンサルティング サービスをお求めの場合は、srginfo@microsoft.com までお問い合わせください。Testing Services チームの業務は Microsoft Enterprise Services (英語) の一部であり、機能、パフォーマンス、テスト戦略、知識の提供、一般的なコンサルティングなど、テストに関するあらゆる点についてお客様を支援することに主眼を置いています。

いつものお願いではありますが、ロード テストに関するフィードバックやご質問をお待ちしております。お気軽に vsoloadtest@microsoft.com までお寄せください。

マイクロソフトの開発者向けイベント Connect(); 2016 を 11 月に開催!

$
0
0

 

本記事は、マイクロソフト本社の The Visual Studio Blog の記事を抄訳したものです。
【元記事】 Join us this November for Connect(); 2016 2016/10/5

 

マイクロソフトが主催する開発者向けイベント Connect(); が今年は 11 月 16 日と 17 日にニューヨークで開催され、全世界に向けてライブ ストリーミング配信されることになりました。これまでを超える最高の Connect(); をお見逃しないよう、今からご予定に入れていただければ幸いです (英語)

 

Connect(); 2016 では、エグゼクティブ バイス プレジデントの Scott Guthrie とプリンシパル プログラム マネージャーの Scott Hanselman が、業界のリーディング イノベーターと共に、Visual Studio、.NET、Xamarin、Azure、SQL、Windows、Office などの最新技術について詳しく講演を行う予定です。この 2 日間は、皆様と直接コミュニケーションを行ったり、マイクロソフトのエンジニアリング チームとお客様とパートナー様との間で対話型の Q & A セッションを開いたり、Android、iOS、Linux、Windows といったすべてのプラットフォームで動く革新的なインテリジェント アプリの作成や管理が今いかに簡単になっているかをお伝えしたりと、盛りだくさんの内容を予定しています。

IDC の Al Hilwa 氏は先日、次のように話していました。「マイクロソフトの開発者向けイベントである Connect(); は、今や最新のクラウド アプリやモバイル アプリや、DevOps デプロイ シナリオを構築している開発者にとって重要な布石となっており、彼らのビジネスにとても良い影響を与えています」。

マイクロソフトは、開発者の皆様のアイデアにインスパイアされ、Connect(); イベントを作り上げていると言っても過言ではありません。ビジネスの変革の中心にいるのは、開発者の皆様です。皆様こそが、世界を変えるパワフルなアプリを開発し、業界全体をゼロから変革する力を持っています。この 2 年間にマイクロソフトは、Connect(); の場で画期的で革新的なテクノロジやソリューションの数々を発表してきました。これは、すべての開発者の皆様のアプリケーション構築やそれに利用するプラットフォームのニーズにお応えするために、マイクロソフトが絶えず取り組んできたことを表しています。Connect(); 2016 では、マイクロソフトが推し進めているクラウド ファースト、モバイル ファーストの世界に対する次の一手を披露いたします。

11 16 日と 17 (英語) に、会場でお会いできることを楽しみにしています。

 

Mitra-Azizirad-small Mitra Azizirad (クラウド アプリケーション開発兼データ マーケティング担当コーポレート バイス プレジデント)

技術、ビジネス、マーケティングといった広範なバックグラウンドを持つ Mitra Azizirad は、マイクロソフトで 20 年以上にわたりさまざまなビジネスを牽引してきました。現在は、SQL Server から Azure データ サービス、Visual Studio、.NET、Xamarin、関連する開発者サービスに至るまで、C+E 開発者やデータ プラットフォーム製品のプロダクト マーケティングのリーダーを努めています。

 

Visual Studio “15” Preview 5 を発表

$
0
0

 

本記事は、マイクロソフト本社の The Visual Studio Blog の記事を抄訳したものです。
【元記事】 Announcing Visual Studio “15” Preview 5 2016/10/5

 

このたび Visual Studio “15” Preview 5 をリリースしました。今回のプレビューでは、特にパフォーマンスの向上に焦点を当てて取り組みを行いました。向上した点については、今後の記事でも詳しくご紹介していく予定です。また、生産性の面でもいくつか改良を加えています。

では、こちらでインストーラーを起動させながら、残りの内容をお読みください。リリース ノートはこちらでご覧いただけます。

パフォーマンスとメモリ効率が大幅アップ

まず以下のビデオをご覧ください。以前のバージョンの画面と隣り合わせで表示しているので、パフォーマンスがどのように向上したかひと目でわかるようになっています。ここでは、Visual Studio を起動して .NET コンパイラ プラットフォームの “Roslyn” を使用するソリューション (英語) を読み込むときのパフォーマンスを比べています。Visual Studio 2015 では 60 秒かかりましたが、Visual Studio ‘15’ では 30 秒で終了しました。

この読み込みの高速化は、プロジェクトの読み込みの軽量化と拡張機能の読み込みのオンデマンド化という 2 つの点を改良したことによって実現しました。Preview 5 では主に以下の点でパフォーマンスが強化されています。

    • プロジェクトの読み込みを軽量化して、読み込み時間を短縮: 100 種類など多くのプロジェクトが含まれるようなソリューションでは、すべてのファイルやプロジェクトが同時に使用されることはありません。VS “15” では、すべてのプロジェクトが読み込まれるまで待たずに編集やデバッグを開始できます。この機能を使用するには、Preview 5 の管理対象プロジェクトで [Tools]、[Options]、[Projects and Solutions] の順に選択し、[Lightweight Solution Load] を [True] にします。
    • 拡張機能の読み込みをオンデマンド化して、起動時間を短縮: このアイデアはとてもシンプルで、単に拡張機能の読み込みを VS 起動時ではなく、必要なときに実行しようというものです。Preview 5 では、まず Python と Xamarin の拡張機能の読み込みをオンデマンド化しました。今後は Visual Studio に同梱されるマイクロソフト製とサードパーティ製のどちらの拡張機能もこのモデルに移行します。起動やソリューションの読み込み、キー入力のパフォーマンスに影響を与える拡張機能に関する情報は、[Help]、[Manage Visual Studio Performance] の順に選択してご確認ください。また、拡張機能の開発者の皆様向けに、読み込みのオンデマンド化に関するガイドを公開する予定です。
    • サブシステムを VS のメイン プロセスから分離: Git Source Control などのメモリ消費量が多いタスクや、JavaScript や TypeScript の言語サービスのプロセスを分離しました。32 ビットの処理ではメモリが 4 GB に制限されますが、プロセスの分離によりメイン プロセスがこの制限を回避できるようになるため、Visual Studio のメイン プロセスで実行されるコードの速度低下や Visual Studio の応答速度低下やクラッシュが防止されます。今後のリリースではさらにコンポーネントのプロセスの分離を進める予定です。
    • C++ のプロジェクト読み込み、コード編集、デバッグを高速化: C++ プロジェクトの読み込みが高速化されました。そのようすはこちらのビデオでご覧いただけます。この機能を有効化するには、[Tools]、[Options]、[Text Editor]、[C/C++]、[Experimental] の順に選択し、[Enable Faster Project Load] をオンにします。また、リンカーや PDB の読み込みライブラリが改良され、差分ビルドが作成されるようになりました。さらに、デバッガーの起動が高速化され、デバッグ作業中のメモリ消費量が大幅に減少しました。
    • Git 使用中や XAML コードのデバッグ/編集中の速度が向上: libgit2 から git.exe に切り替えたことにより、ソース管理操作が高速化しました。また、初期化コストや IntelliTrace および [Diagnostic Tools] ウィンドウ関連のその他のコストが最適化され、XAML ファイル編集時の遅延が発生しにくくなりました。

この取り組みはまだ始まったばかりで、今後もさらなるパフォーマンスの高速化、応答性の向上、メモリ使用量の削減を目指して改良を進めていきます。今回の改良の技術的な詳細については、近日中に Visual Studio ブログの記事でお伝えしますのでどうぞお楽しみに。

マイクロソフトでは、問題を予測しつつ最高のパフォーマンスを実現するためにこれらの変更を厳格にテストしていますが、実際に運用されているコードを完全に再現できるわけではありません。そのため、皆様のご協力が必要です! Preview 5 をインストールして、皆様の大規模なソリューションで実際に使用していただき、その感想やご意見を IDE の問題報告ツール (英語) を使ってお寄せください。

生産性の向上

Visual Studio “15” では、生産性の向上を目的とした機能も多数組み込まれました。

コードの編集

C#、VB、C++ の各言語で IntelliSense filtering を使用できるようになりました。これにより、複雑な API を探す場合、候補の型 (メソッド、プロパティ、イベントなど) のみに絞ることが可能です。C# と Visual Basic では、入力位置で求められる「ターゲットとなる型」が決定され、その型に適合するアイテムがリストから事前に選択されます。これにより入力フローが高速化され、また、特定の場所で必要とされる型を探すのに無駄な時間がかかることがなくなります。

C++ では IntelliSense の結果にフィルターを適用する Predictive IntelliSense という試験機能が実装されており、これにより候補リストが短くなるため、目的のアイテムを探すときにリストをスクロールする必要がなくなります。この機能を使うと、過去の使用履歴から型が予想され、その型のアイテムのみが表示されます。この機能を有効化するには、[Tools]、[Options]、[Text Editor]、[C/C++]、[Experimental] の順に選択し、該当する項目を選択します。

XAML では、プロパティやイベントをバインドする際に補完リストを表示する x:Bind に IntelliSense の補完機能が追加されました。名前空間の補完では、既存の名前空間を参照する場合にプレフィックスが自動補完されます。また、XAML の IntelliSense で、適合しない型とプロパティがフィルターにより除外されるようになりました。最も一致する項目が選択されるため、関連性がある結果のみが表示されるので型のリストが短くなり、目的のアイテムを探すときにリストをスクロールする必要がなくなります。

JavaScript では、IntelliSense が利用する言語サービスが完全に刷新されました。これまでは入力時に JavaScript エンジンが継続的にコードを実行し、ランタイムのように補完リストやシグネチャのヘルプを提示していました。これは動的な JavaScript コードの場合は効果的ですが、編集エクスペリエンスの一貫性が損なわれることもありました。新しい言語サービスでは TypeScript による静的分析が使用され、IntelliSense の内容が詳しくなっているほか、ES6 と ES7 が完全にサポートされ、編集エクスペリエンスの一貫性も向上しています。

修正とリファクタリングの迅速化

コードベースを読みやすい状態で維持して開発ワークフローを活性化できるように、C# と Visual Basic でクイック操作とリファクタリング機能が拡充されました。Move Type to Matching File では、型を同名の新規ファイルに移動します。また、Sync File and Type Name では、ファイル名に適合するように型名を変更したり、逆に型名に適合するようにファイル名を変更できます。最後に、Convert to Interpolated String では C# 6.0 や VB14 の機能を使用して `string.Format` 式を補間文字列に変換できます。

コードのナビゲーション

大規模なコードベースでの作業は困難がつきものです。これを緩和するために、新たに複数のナビゲーション機能を追加しました。Go To: (Ctrl + , または Ctrl + T) を使用すると、ファイルや型、メソッド、その他の種類のオブジェクトをコード内ですばやく検索できます。

また、Find All References (Shift+F12) を使用すると、複雑なコードベースでも簡単に目的のものを検索できます。この機能では、結果に対して詳細なグループ化やフィルターの適用、並び替え、検索が可能で、一部の言語ではテキストの色付けにも対応しており、参照を明確に把握できます。

デバッグ

Preview 5 では、Run to Click という試験機能が新たに実装されました。この機能を使用すると、実行をスキップ、停止する行に一時的なブレークポイントを設定する必要がなくなります。デバッガーでコード実行が停止された場合、マウスオーバーすると行の隣にアイコンが表示されます。これをクリックするだけで、該当する行でコードを実行、停止することができます。この機能を有効化するには、[Debug]、[Options] の順に選択し、[Enable Run to Click] をオンにします。

新しい例外ヘルパーでは、値が null になっている変数などの有用性が高い情報がモーダル ダイアログではないダイアログ ボックスでコンパクトに表示されるため、内部で発生した例外にすばやくアクセスできます。

ぜひお試しください

今回のリリースの新機能と既知の問題については、Visual Studio “15” Preview 5 のリリース ノートを参照してください。

次に、Preview 5 の注意点を 2 つお伝えします。まず、今回はプレビュー版でサポート対象外であるため、重要な業務に使用しているコンピューターにはインストールしないでください。また、Preview 5 は前バージョンの Visual Studio と共存インストールできますが、セットアップを開始する前に旧バージョンの Visual Studio “15” Preview をすべて削除することをお勧めします。その他の一般的な問題については、Preview 5 についてよく寄せられる質問を参照してください。

マイクロソフトでは皆様のフィードバックをお待ちしています。問題点がありましたら、インストーラーまたは Visual Studio IDE 本体の [Report a Problem] オプションからご報告をお願いいたします。また、開発者コミュニティ ポータル (英語) に寄せられたフィードバックもご覧ください。ご提案は UserVoice (英語) までお寄せください。

最後に、近日開催される開発者向けイベント Connect(); 2016 (英語) に関する記事を Mitra Azizirad が執筆していますので、こちら (英語) もご一読いただければ幸いです。

John Montgomery (Visual Studio 担当プログラム マネージメント ディレクター)
@JohnMont

John Montgomery は Visual Studio、C++、C#、VB、JavaScript、.NET の製品設計とユーザー サポートを担当しています。マイクロソフトには 17 年前に入社して以来、開発者向けテクノロジの開発に従事しています。

 

Visual Studio “15” Preview 5 におけるユニバーサル Windows アプリ開発者向けの新機能

$
0
0

 

本記事は、マイクロソフト本社の The Visual Studio Blog の記事を抄訳したものです。
【元記事】 What’s new in Visual Studio “15” Preview 5 for Universal Windows Developers 2016/10/6

 

Visual Studio 2015 Update 3 では、Windows Anniversary Update SDK をターゲットとするアプリの開発がサポート (英語) されました。Visual Studio “15” は Visual Studio 2015 の機能を引き継いだうえで、UWP 開発者向けの複数の新機能と機能強化を提供します。今回のリリースでは、以下の 3 つの主要な分野が重点的に強化されました。

  1. すばやく簡単な UWP アプリケーション開発の作業開始
  2. コードの作成やデバッグ時の生産性向上
  3. パフォーマンスと信頼性の強化

Visual Studio “15” は今後も機能が継続的に強化される予定ですが、今回のリリースで追加された新機能をぜひお試しいただき、フィードバックをお寄せください。

新しい Visual Studio “15” インストーラーの UWP ツール

UWP 開発用ツールはこれまで以上に簡単かつ迅速に利用開始できるようになりました。Visual Studio “15” では、開発者の皆様が可能な限り迅速に作業を始められるように、ユニバーサル Windows プラットフォームの開発ワークロードが最適化され、UWP アプリの作成、デバッグ、公開時の生産性を向上するために必要なツールのみがインストールされます。既定の状態で必要な機能が見当たらない場合は、後からワークロードを追加できるのでご安心ください。

ユニバーサル Windows プラットフォームの開発ワークロードの既定のエクスペリエンスでは、ディスク上の容量が Visual Studio 2015 と比べて 60% 以上削減されました。その結果、ダウンロードやインストールにかかる時間が短縮され、より迅速にコーディングに取りかかることができます。

アプリのビジュアル資産の作成が容易に

マニフェスト デザイナーのデザインが刷新され、UWP アプリのブランディング用のマニフェスト アセットを簡単に作成できるようになりました。Manifest Asset Generator を使用すると、アプリのすべてのビジュアル資産をマニフェスト デザイナーから直接作成できます。単一のソース画像から、アプリがターゲットとする各デバイスの種類に合わせて、あらゆるサイズのタイル、ロゴ、アイコン、スプラッシュ スクリーンを作成することが可能で、パディングや背景色など、Windows 10 アプリの推奨デザイン ガイドラインに準拠したビジュアル資産が自動的に作成されます。今回のリリースでは C# と VB がサポートされており、今後の Visual Studio では C++ と JS のサポートも予定されています。

新しい UI Analysis ツールでアクセシビリティやパフォーマンスの問題を検出

発見が困難なアクセシビリティやパフォーマンス関連の問題を検出しやすくするために、XAML 用 UI デバッグ ツールに新しい UI Analysis ツールが追加されました。このツールを UWP アプリで利用するには、[Diagnostics Tools] ウィンドウの [Select Tools] メニューでツールを有効にします。

UI Analysis ツールが有効化されると、アプリの各要素を検証し、一般的なパフォーマンスやアクセシビリティの問題を検出します。検出された問題は、MSDN へのリンクと共に [Events] ウィンドウに表示されます。たとえば、スクリーン リーダーに不可欠な Name プロパティが特定の要素に指定されていない場合、UI Analysis ツールはこの要素に問題があるというフラグを設定します。同様に、リスト ボックスのコンテンツが適切に仮想化されていない場合には、重大なパフォーマンスの問題が発生する可能性があります。UI Analysis ツールはこの問題を検出し、修正方法に関するドキュメントへのリンクを提示します。これらは、UI Analysis ツールで特定できる問題のごく一部です。検出可能なすべての問題の一覧は [Filter] メニューから確認できます。

XAML デザイナーの機能強化

ツールボックスから要素を作成するときに、タグの少ない簡潔な XAML を作成できるようになりました。たとえば、ツールボックスからアートボードに要素を直接ドラッグすると、幅と高さを明示的に設定しなくても要素が作成できます。このツールは、お客様からの多くのご要望にお応えし、無駄がなく読みやすい XAML を作成することを目標としています。

アートボードの新しいオプション メニューを使用すると、アートボードのテーマを簡単に変更することができます。オプション (歯車アイコン) をクリックすると、視覚テーマを切り替えたり、ハイコントラスト設定を変更したりできます。変更した設定はデザイン領域にすぐに反映されるため、開発マシンの設定を何度も変更することなく、さまざまな設定を瞬時に確認できます。

さらに、[Properties] ウィンドウの値エディターで基本的な計算がサポートされました (これは UserVoice にご提案をいただいたことで実現しました (英語))。値エディターは、数式を計算して対応する値に置き換え、その値を XAML に挿入します。たとえば、幅 36 px のボタンを 8 px 広げたい場合、値を暗算する代わりに「36 + 8」と入力します。値エディターは、その数式を計算して 44 という値に置き換えます。

XAML タブの切り替えと XAML 入力の高速化

今回のリリースでは、XAML ファイルをすばやく操作できるようになりました。この機能強化を特に実感できるのは、XAML ファイルから別の画面に移動したり、XAML ファイルを切り替えたりする場合です。マイクロソフトの調査によると、開発者の 4 人に 1 人は、1 日に少なくとも 1 回は XAML タブを切り替える際に 1 秒以上の遅延が発生すると回答しており、とりわけ XAML ファイルやリソース ディクショナリの数が多いプロジェクトでは遅延が延びる傾向にあります。Preview 5 では、ほとんどの場合にタブをほぼ瞬時に切り替えることができます。特に、遅延がひどかったプロジェクトの場合は大幅な改善が見込まれ、お客様のサンプル アプリではタブの切り替えにかかる時間が 10 分の 1 以下に短縮されました。

また、XAML エディターへの入力時の遅延に関するいくつかの問題も修正され、XAML エディターと XAML 用 IntelliSense の応答性が向上しました。この機能は特に、サード パーティ製のコントロールや大規模なコントロール ライブラリを利用するプロジェクトで XAML ファイルを編集する場合などに実感できます。

ご意見をお寄せください

マイクロソフトでは皆様からのフィードバックをお待ちしています。問題点がありましたら、Visual Studio の [Report a Problem] オプションからご報告をお願いいたします。お寄せいただいたフィードバックは開発者コミュニティ ポータル (英語) でステータスを確認できます。また、ユニバーサル Windows アプリ開発に関する Visual Studio の機能強化のご提案は UserVoice (英語) までお寄せください。

Karan Nandwani (Visual Studio 担当プログラム マネージャー)
@karann9Karan Nandwani は、Visual Studio の XAML ツール チームを担当しており、XAML エディターの機能を開発したほか、現在は次世代の生産性向上ツールの設計に情熱を注いでいます。趣味は、サイクリング、FPS ゲーム、EDM (エレクトロニック ダンス ミュージック) です。

 

Visual Studio “15” の起動を高速化

$
0
0

 

本記事は、マイクロソフト本社の The Visual Studio Blog の記事を抄訳したものです。
【元記事】 Faster Visual Studio “15” Startup 2016/10/10

 

John Montgomery の記事でもお伝えしたように、Visual Studio “15” Preview 5 ではパフォーマンスの強化に重点的に取り組みました。Visual Studio “15” のパフォーマンス強化について、この記事を含め 5 回のシリーズ記事としてお届けしたいと思います。

初回となるこの記事では、最新リリースに実装された起動エクスペリエンスの中でも特に以下の点についてご説明します。

  • 新しいパフォーマンス センターを使用して、使用中の拡張機能やツール ウィンドウが、起動、ソリューションの読み込み、コード編集の操作に影響を及ぼしていないかを確認する方法。また、その方法を最適化する方法
  • 拡張機能の読み込みのオンデマンド化や最適化、キャッシュの初期化を後回しにすることで起動時に読み込まれる拡張機能が減少し、起動時間が短縮することについて

Visual Studio のユーザー数は年々大きく増加し、Visual Studio で使用されるパートナー テクノロジの種類も多様化しています。機能や拡張機能は起動時に自動的に読み込まれるため、残念ながらそのうちの一部は Visual Studio の起動時間が大幅に長くなる原因となっています。

次に示すように、Visual Studio の起動時間は、起動時の拡張機能の読み込みによって 50% 以上遅くなることがあります。

Visual Studio の起動時に何が起きているのか

Visual Studio の起動方法には次の 3 つの種類があります。

  1. 初回起動: Visual Studio のセットアップが完了した後の最初の起動です。Visual Studio 環境ではさまざまなキャッシュや事前構築されたテーブルが使用されているため、初回起動時は通常の起動よりもかなり時間がかかります。
  2. 通常起動: 初回起動以降の Visual Studio の起動は「通常起動」と呼ばれます。通常起動では、デバッグ インスタンスやコマンド ラインの引数を使用したインスタンス、過去にインストールされた拡張機能や更新のインスタンスは起動されません。Visual Studio を起動する場合の 80% がこの通常起動です。
  3. 構成変更: 拡張機能や更新がインストールされた後の起動です。

起動の種類を分類することで、考えられる速度低下の根本的な原因を特定しやすくなり、最適化する方法の調査も容易になります。

初回起動の改善

Visual Studio 2015 では、インストールされているコンポーネントのスキャン、構成内容の収集、既定の設定の初期化、ユーザーのサインイン情報の取得、Managed Extensibility Framework (MEF) や拡張機能マネージャー、ツールボックス、フォントや色などのキャッシュの初期化を初回起動時に実行していました。

Visual Studio “15” では、各処理の中から後回しにできるものや最適化できるものを選別しました。

  • Visual Studio 2015 で試験的にツールボックスの初期化を後回しにしたところ、起動時間の短縮が見られたため、Visual Studio “15” ではこの変更がそのまま採用されました。
  • フォントや色など、一部のキャッシュの初期化が起動時に実行されなくなりました。また、キャッシュ構成を大幅に改良して一部のキャッシュの初期化を 2 回目以降の起動時に実行するようにして、初回起動時の起動時間を短縮しました。
  • MEF と拡張機能マネージャー サービスを非同期化して、サインイン実行時にこれらのキャッシュの初期化を並列実行できるようにしました。

このような変更が実装されたことにより、Visual Studio “15” の初回起動は Visual Studio 2015 と比べて 3 倍程度高速化されました。次の表は、テレメトリで得られたごく初期のデータです。

時間 Visual Studio 2015 Visual Studio “15”
初回起動時間 (80 パーセンタイル値) 215.5 秒 80.3 秒

通常起動の改善

Visual Studio の通常起動時には、コア サービスの初期化は不可欠です。このため、コア サービスの初期化に要する時間が長くならないようにこれらのサービスを常に監視しています。起動時間が長くなる原因は、コア サービスの初期化の他にも大きく 2 つあります。1 つは起動時に自動的に拡張機能が読み込まれること、もう 1 つは前回のインスタンスでウィンドウ レイアウトに存在していたツール ウィンドウが読み込まれることです。テレメトリ データを見ると、マイクロソフトの拡張機能とサードパーティの拡張機能の両方が自動的に読み込まれることで Visual Studio の起動時間が大幅に長くなっていることがわかります。

前述のように、Visual Studio “15” では起動時の拡張機能の自動読み込みを削減して後で読み込むように変更し、ユーザー エクスペリエンスへの影響を低減することに重点的に取り組みました。この作業の一環として、以下の機能を実装しました。

  • Visual Studio パッケージの非同期読み込みをサポート
  • パッケージの自動読み込みとコマンドの可視性を制御するメタデータ ルールを拡張
  • Visual Studio のコア サービスの非同期クエリをサポート

Visual Studio “15” では、まず Xamarin と Python のツールの読み込みをオンデマンド化しました。これらの拡張機能がインストールされている場合、起動時間が大幅に短縮されていることを体感していただけます。

起動時に IDE で表示されるツール ウィンドウも起動時間に影響を与えています。これらのツール ウィンドウは前回のインスタンスから引き継がれていて、初期化される機能のサイズによって起動時間が長くなる原因となっており、一部の機能は特に大きな影響を与えています。マイクロソフトでは、テレメトリ データを基にこのようなツール ウィンドウによる起動の低速化を改善することに取り組んでいます。また、[Manage Visual Studio Performance] ダイアログで、既定で表示されるツール ウィンドウの設定を変更できます。このダイアログについては、次のセクションで詳しく説明します。

拡張機能とツール ウィンドウのパフォーマンスの監視

Visual Studio “15” では、起動時に自動的に読み込まれる機能が最小限に抑えられると同時に、起動時、およびソリューションの読み込み時や編集時のパフォーマンスに影響を与えている拡張機能やツール ウィンドウを把握するための機能が追加されています。つまり、この機能では Visual Studio の起動時の自動読み込み処理を監視することができます。

Visual Studio の起動時には、読み込みに時間がかかる拡張機能とその拡張機能が起動時間に大きな影響を与えているというメッセージが 1 度だけ通知されます。

[Help] の [Manage Visual Studio Performance] ダイアログを開くと、いつでも Visual Studio の起動やソリューションの読み込み、入力時のパフォーマンスに影響を与えている拡張機能やツール ウィンドウを確認できます。この [Manage Visual Studio Performance] ダイアログでは拡張機能を無効化することができます。

拡張機能と同様にツール ウィンドウによる影響も同じダイアログで確認できます。ツール ウィンドウが Visual Studio の起動を大幅に低速化させる原因となっている場合にも通知が表示されます。既定で使用するツール ウィンドウの設定を変更する場合は、以下の 3 つのオプションから選択できます。

  • [Use default behavior]: 現在の設定から変更されません。つまり、このオプションを選択すると、起動時間は短縮されません。
  • [Do not show window at startup]: 現在のインスタンスのツール ウィンドウが次回に引き継がれなくなります。ツール ウィンドウは後でメニューから開くことができます。
  • [Auto hide window at startup]: 起動時にツール ウィンドウを表示する設定になっている場合、このオプションを選択するとグループが折りたたまれ、ツール ウィンドウが初期化されません。筆者はこのオプションを使用しています。

これらのオプションは、[Manage Visual Studio Performance] ダイアログで [Use default behavior] を選択するといつでも元に戻すことができます。

ご協力のお願い

今回の記事では起動時のパフォーマンスについてご説明しました。ソリューションの読み込みについても大きな投資を行ったため、次回の記事で Will Buik がご説明する予定です。これらの変更を実施した結果、Windows エクスプローラーからソリューションを選択したときの Visual Studio の起動時間が短縮されました。

Visual Studio の改良をさらに進めるために、以下の方法で皆様のご協力をお願いいたします。

  • マイクロソフトでは、プレリリース版を含むすべてのリリースで皆様の使用状況データをテレメトリで収集しています。ぜひ Visual Studio “15” Preview 5 をダウンロードしてご利用ください。
  • 拡張機能の開発者の方は、今後数週間かけて投稿する拡張機能の分析方法に関する記事をお待ちください。起動時やソリューションを開くときに自動的に拡張機能が読み込まれると、Visual Studio のパフォーマンスに悪影響が出る場合があります。記事では、起動時に自動的に読み込む必要をなくしたり、自動読み込みによる影響を抑える Visual Studio “15” の新機能について説明する予定です。また、自動読み込みが必要な拡張機能について、起動時にどの程度影響があるかを計測する方法も説明します。

今後とも Visual Studio をよろしくお願いいたします。

Selma Ikiz

Selma Ikiz (Visual Studio IDE 担当プログラム マネージャー)

Selma Ikiz は、2009 年にマイクロソフトに入社して以来、開発テクノロジを担当しています。主に開発者の皆様に高いパフォーマンスと安定性を備えた IDE をお届けすることに従事しており、現在はテレメトリ データに基づいて Visual Studio の新しいインストーラーを改良することに取り組んでいます。

 

Viewing all 182 articles
Browse latest View live