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

Visual Studio 2017 RC で JavaScript 開発がより生産的に

$
0
0

 

本記事は、マイクロソフト本社の The Visual Studio Blog の記事を抄訳したものです。
【元記事】 More Productive JavaScript in Visual Studio 2017 RC 2016/11/28

 

開発者に Visual Studio が選ばれているのは、JavaScript 編集の生産性を高める各種のツールが用意されているためです。これまで Visual Studio 2017 RC では、開発者がよく使用する機能を強化することに重点が置かれてきました。その結果、開発者はコーディングにより多くの時間を割り当てられるようになっています。この記事では、Visual Studio 2017 RC で現在提供されている IntelliSense とコード参照の機能強化の中でも特に便利なものをいくつかご紹介します。

機能が豊富になった IntelliSense

Visual Studio 2017 RC の JavaScript IntelliSense では、パラメーターやメンバー一覧に関する情報がさらに多く表示されるようになりました。この新しく追加された情報は TypeScript から補充され、バックグラウンドでのスタティック分析に基づいて開発者のコードを適切に理解します。TypeScript の複数のソースを基に情報が生成されます。

jQuery ajax() 関数に関するリッチな IntelliSense

JSDoc に基づいた IntelliSense

既定での型の推定で望ましい型の情報が提示されないときは、JSDoc アノテーションから明示的に型情報が提示される場合があります。たとえば、部分的に宣言されたオブジェクトに特定の型を持たせるには、下図のように @type タグを使用できます。

これはパラメーターの情報を指定する際にも非常に便利です。JSDoc の @param を使用すると、下図のように関数のパラメーターに型を追加できます。

現在サポートされている JSDoc アノテーションについては、GitHub のこちらのドキュメント (英語) をご覧ください。

TypeScript 宣言ファイルに基づいた IntelliSense

TypeScript では、特によく使用されている JavaScript ライブラリのそれぞれの API は .d.ts ファイルで宣言されています。また、それらの定義が集められている場所として最も知られているのが DefinitelyTyped (英語) です。Visual Studio はこれらの .d.ts ファイルをバックグラウンドで使用して IntelliSense を強化します。
使用されている JavaScript ライブラリを Visual Studio が検出し、対応する .d.ts ファイルを自動的にダウンロードして参照します。ダウンロードされたこれらのファイルは %LOCALAPPDATA%\Microsoft\TypeScript のユーザー フォルダーの下にキャッシュされます (注: tsconfig.json 構成ファイルを使用している場合は、この機能は既定で無効になります)。

現時点では、npm (package.json ファイルの読み取り)、Bower (bower.json ファイルの読み取り)、または広く使用されている JavaScript ライブラリ上位約 400 種類と一致するプロジェクト内の不正確なファイルからダウンロードされた依存関係に対して自動検出機能が働きます。たとえば、プロジェクト内に jquery-1.10.min.js がある場合、jquery.d.ts ファイルがフェッチされロードされます。この .d.ts ファイルはコードの完成度、シグネチャ、コンテキスト ヘルプを強化する以外にユーザーのプロジェクトに影響を及ぼすことはありません。

ES6 および JSX の構文サポート

JavaScript は常に進化しており、Visual Studio でも構文の更新を迅速にサポートすることで、開発者が言語の変更点に対応していけるように支援します。ECMAScript は毎年 TC39 において標準化が行われ、言語の変更を公式にリリースしています。これらの更新によって、クラス、アロー関数、テンプレート文字列といった構文が新しくなり、JavaScript を記述する別の生産性の高い方法が登場します。Visual Studio 2017 では、モジュール、クラス、アロー関数を含む ES7 (ECMAScript 2016) の構文を完全にサポートしています。

Visual Studio 2017 RC での ES6 の構文

公式の更新に加えて、JSX (英語) のような非公式の言語拡張もあります。JSX は React 開発でよく使用される XML 風の拡張構文であり、構文のより柔軟なサポートをうたっています。Visual Studio 2017 では、jsx と tsx の両方のファイル拡張子のほか、JS ファイルや TS ファイルに直接記述された JSX 構文をサポートしています。

Visual Studio 2017 RC での JSX 構文

一般的な機能強化

言語に関する機能強化のほかに、コード参照に関する一般的な機能強化も便利です。まったく新しいナビゲーション機能である [Go To] を使用すると、全体の検索をすばやく実行し、型、関数、ファイルなどを見つけることができます。結果はカテゴリごとに絞り込め、一元的なすばやいコード参照が可能です。

[Go To] での参照 (ctrl + t または ctrl + ,)

大規模なプロジェクトまたはライブラリで開発を行っていると、すべての検索結果が非常に大量になることがあります。そうした一覧のサイズをすばやく減らすために、関数、プロパティといったカテゴリごとに全体の一覧を絞り込めるようになりました。これらの絞り込みはすべて、論理的なホット キーですばやく切り替えられます。ホット キーは IntelliSense の絞り込みボタン アイコンをマウスでポイントすると表示されます。

IntelliSense での絞り込み (Alt + m)

上記の機能強化に関する詳細や、Visual Studio 2017 に実装されている一般的な機能強化の概要については、Mark Wilson-Thomas が執筆したブログ記事「Visual Studio 2017 RC での生産性向上 (英語)」をご覧ください。

フィードバックのお願い

Visual Studio 2017 RC の新たなレベルの生産性が皆様の JavaScript 開発にお役立ていただければ幸いです。上記の機能を詳しく紹介する短いビデオ (英語) もありますが、ぜひ Visual Studio 2017 RC をダウンロードして実際にご利用ください。何か問題がありましたら IDE またはインストーラーの右上隅にある問題の報告 (英語) ツールからお気軽にお寄せください。UserVoice (英語) からのご提案もお待ちしております。

それでは、Happy Hacking!

Bowden Kelly (VS クライアント、プログラム マネージャー)
@bowdenk7

Bowden Kelly は、Visual Studio における開発者の生産性向上を目指して JavaScript の編集エクスペリエンスの強化に取り組んでいます。趣味はサッカーをすることやプログラミングの基礎を教えることで、トライアスロンにも挑戦したいと思っています。


Visual Studio 2017 RC 皆さんの生産性を高める機能たち

$
0
0

 

本記事は、マイクロソフト本社の The Visual Studio Blog の記事を抄訳したものです。
【元記事】 Productivity in Visual Studio 2017 RC 2016/11/28

 

Visual Studio が多くの開発者に選ばれる理由は、強力ながら自然に使いこなせる生産性機能によって、「究極の集中力」を得られるからではないでしょうか。Visual Studio 2017 RC では、開発者の皆様がツールの使い勝手を気にすることなく、プログラムの中身に集中していただけるように、この機能の強化に力を入れています。今すぐダウンロードして、日々の開発作業を快適にする機能を実際にお確かめください。

Visual Studio 2017 RC では、ほとんどの開発者が時間を費やす、コード編集、ナビゲーション、デバッグの 3 つに重点を置いて機能強化を行いました。今回はその 3 つの点に関する各機能を詳しくご紹介します。

コード編集

IntelliSense フィルタリング

IntelliSense は、カテゴリごとに一連の値を絞り込むことで、新しい API をすばやく参照できるフィルタリング機能です。この機能を使用すると、必要な変数を多くの型の中から探し出す必要がなくなります。下のスクリーンショットは、フィルターを使用して、C++ コード ファイルの IntelliSense の結果に変数と定数のみを表示している例です。

すべてのフィルターには便利なキーボード ショートカットが用意されています。たとえば、C# コードの入力では、Alt + P キーでプロパティに絞り込んだ表示を、Alt + M キーで拡張メソッドの除外をすばやく行うことが可能です。フィルター バーの上にマウス ポインターを合わせるだけで、状況に応じたすべてのショートカットを確認できます。

一致箇所の強調表示

結果をすばやく得るためにキャメル ケース マッチング (一綴りにした複合語の各大文字を入力して補完) などを行う場合、アイテムがどの部分で一致しているのか判断しづらいことがあります。C#、VB、JavaScript、TypeScript の IntelliSense では、下図のように一致箇所を太字で表示することで、項目が一致する理由がわかるようになりました。一致箇所の強調表示は拡張ポイントであり、あらゆるで言語サポート可能なため、対応言語は今後さらに追加される予定です。

フィルタリングや一致箇所の強調表示の機能を使用したくない場合は、使用言語の IntelliSense 設定で簡単に無効化できます。[Tools]、[Options]、[Text Editor] から使用している言語を選択します。たとえば、[Tools]、[Options]、[Text Editor]、[C#]、[IntelliSense] の順に選択すると、C# 言語での機能を制御できます。

IntelliSense の動作の改良

IntelliSense の精度向上のため、今回のリリースでは各言語で大幅に機能が強化されています。その例をご紹介します。

  • C# と VB に追加された「スマート プリセレクション」機能では、予測されるターゲット型が判定され、IntelliSense のリストでその型に一致する項目が事前に選択されます。これにより、入力が速くなり、どんな型が必要かをユーザーが考える手間が省けます。この機能は特別なキーボード操作をしなくても適用されます。C# と VB の新しい生産性機能の概要は、こちらのビデオ (英語) をご覧ください。
  • XAML の IntelliSense では、名前空間の入力補完、不明な名前空間に関する電球マークのクイック修正、不要な名前空間の並べ替えや削除、名前空間プレフィックスの名前の変更のリファクタリングなどが可能になりました。さらに、XAML の IntelliSense が強化され、x:Bind でイベント、パス、関数をバインドする作業をすばやく正確に行えるようになりました。また、関連情報のみが表示されるようフィルタリング機能が向上し、キャメル ケース マッチング機能にも対応しました (例: 「RTB」と入力すると「RichTextBox」のように補完されます)。こちらのビデオ (英語) で実際の動作を確認できます。
  • C++ には、IntelliSense の結果にフィルターを適用したリストを表示する、予測 IntelliSense 機能 (英語) が実験的に追加されました。これにより、関係ない一致を含む長いリストをすべてスクロールする必要がなくなります。具体的には、必要性に基づく確立に応じて、予想される型の項目のみが一覧表示されます。この機能を有効化するには、[Tools]、[Options]、[Text Editor]、[C/C++]、[Experimental] の順に選択します。この機能の詳しいしくみは、Visual C++ Team Blog のこちらの記事 (英語) をご覧ください。
  • JavaScript 言語サービスは、IntelliSense の改良に併せて全体的に刷新されました。これまでは、入力時に JavaScript エンジンがコードを連続的に実行して、実行時のような入力候補一覧とシグネチャのヘルプを提供していました。これは動的な JavaScript コードには適していますが、編集エクスペリエンスの一貫性が損なわれる場合もあります。新しい言語サービスでは、TypeScript のスタティック分析によって、より詳細な IntelliSense、ES6/ES7 への完全対応、より一貫した編集エクスペリエンスなどが実現します。詳細については、Bowden Kelly によるブログ記事「Visual Studio 2017 RC で JavaScript 開発がより生産的に」をご覧ください。

.editorconfig によるコーディング規則のサポート

コードベースで一貫してコーディング基準を維持すれば、チームの生産性にとってプラスになる、ということは開発者の皆様ならご存知だと思います。これができれば、コードをチーム メンバーのだれが書いても読みやすくなりますが、コーディング基準を徹底するのはたいへんな作業です。マイクロソフトではプロジェクトで書式の統一を実現するために、オープン ソースの EditorConfig (英語) 規則ファイル形式を新たに組み込みでサポートします。これにより、コードベースをどこに移動しても同じ書式ルールを定義できるようになります。つまり、チェックインされるコードが、個々の開発者ではなくコードベースの規則や設定に従うことになります。また、書式が異なる一部の古いコードを変更したくない場合などには、コードベースの部分ごとに異なる規則を定義することも可能です。この形式は、他のさまざまなエディターや IDE でも標準として認められています。これを利用するには、エディター設定ファイル (.editorconfig) をプロジェクトに追加します。詳細については、こちらの (英語) ドキュメントを参照してください。

C# と Visual Basic のコード分析

C# と Visual Basic には、さらに一歩進んだコーディング規則のサポートが備わっています。マイクロソフトでは、ライブ コード分析の範囲をコーディング スタイルの適用まで拡大しました。これにより開発リポジトリまたはチーム全体でコーディング スタイルと命名規則の一貫性を保つことができます。さらに、新しいリファクタリング機能やコード修正機能によってコーディングの生産性向上に継続的に取り組んでいます。RC で追加された機能の中で特に優れているのは、一致するファイルへの型の移動、ファイル名と型名の同期、補間文字列への変換です。詳細については、Kasey Uhlenhuth による、C# と Visual Basic の生産性向上に関する記事 (英語) をご覧ください。

ライブ編集エクスペリエンス

開発作業のできるだけ早い段階でコード品質を高めることは非常に重要であり、問題の発見は早ければ早いほど良いとされます。Visual Studio 2017 RC では、テストを始める段階でなく、コードの編集時にテストに必要なデータを用意できるため、安心してコーディングを進めることができます。.NET Framework の C# および VB ユーザー向け新機能であるライブ ユニット テストを利用すれば、コードを作成している間に単体テストに成功しているかどうか即時判定できます。詳細については、Joe Morris によるライブ ユニット テストに関するブログ記事をご覧ください。

ナビゲーション

開発者にとって多くの時間を費やす作業の 1 つが、大量の既存コード本体の扱いです。コードをすばやく簡単にナビゲーションできる機能があれば、非常に便利で生産性も飛躍的にアップします。バグの調査でも、リファクタリングの影響確認でも、さらには単なる不慣れなコードベースの解読でも、すばやく確実なナビゲーション ツールでコード位置を把握できるだけで大幅に効率が上がります。今回追加された便利なナビゲーション機能をいくつかご紹介します。

GoTo

GoTo (Ctrl + , または Ctrl + T) は高速かつ包括的な検索機能で、コード内のファイル、型、メソッドなどのシンボルをすばやく見つけることができます。あらゆる種類の項目にワン ストップで移動できるため、特に大規模なコード ベースで開発を行っている場合に役立ちます。

新しい GoTo 機能では、候補の絞り込みが簡単で、1 種類の項目のみを探すこともできます。これを行うには、キーボード ショートカット (ショートカットについては [Edit] から [GoTo] メニューを参照してください)、[Go To] パネルでフィルター アイコンをクリック、さらには下の例のような簡潔なクエリ構文を使用するなどの方法があります。検索語句の前に「t」が付与されていますが、これは検索対象を型のみに絞り込むように指示するものです。項目の種類がわかれば、検索途中でも簡単にフィルターを変更することができます。

検索リスト内を移動していくと、選択した場所のプレビューが一時的なウィンドウに表示されます。下図のように、結果がすばやく切り替わるため、いくつものウィンドウを開くことなく必要な項目を探すことができます。

GoTo はカスタマイズも可能です。ツール バーの歯車アイコンをクリックして、プレビューの動作などを変更できます。

すべての参照の検索

すべての参照の検索 (Shift + F12) では、検索結果内での高度なグループ化、フィルタリング、並べ替え、検索機能が追加され、非常に複雑なコードベース内でもすばやく動くようになりました。C# などの一部の言語では、エディターで表示されるのと同じように結果に色が付けられます。C++ の場合、どの参照が読み取りで、どの参照が書き込みかがわかります。これらの機能によって、参照内容を明確に理解できるため、迷うことなく必要なコード行に移動できます。

下の例では、適切なコードをすばやく見つける方法を表示しています。ここでは、BaseViewModel クラスの参照元を調べています。パスを含むグループが選択されているため、この依存関係がある場所の詳しい構造を確認できます。つまり、ViewModel が 6 つ、そのクラスを参照しているヘルパー クラスが 1 つ存在することがすぐにわかり、マウス ポインターを合わせることで、正確にどのコードがそのヘルパーからの参照を行っているかがわかります。

[Group By] ドロップダウンからは便利なプリセットのグループ化を利用できますが、[すべての参照の検索] の結果内で右クリックして [Grouping] コンテキスト メニューを選択すれば、独自のグループ化を作成することも可能です。また、参照の検索結果セットを複数表示することも可能で、リファクタリング前に参照リストでのコード チェック中に、別の参照を調査する必要が出てきた場合などに最適です。[Keep Results] をクリックして結果を固定しておけば、次に見つけた参照は新しいウィンドウで開きます。

構造ビジュアライザー

コードを読むときに、コード構造内の位置を明確に把握することが重要です。そこで、Productivity Power Tools 拡張機能でも人気のある構造ビジュアライザーが Visual Studio に追加されることになりました。この機能を使用すると、コード上に構造を表すガイド ライン (別名インデント ガイド) が表示されるため、画面をスクロールしなくても作業中のコード ブロックをいつでも簡単に視覚化して把握できます。ガイド ラインにマウス ポインターを合わせるとヒントが表示され、ブロックの開始部分とその親を確認できます。特にブロックが画面に入りきらない長さの場合に便利です。また、このガイドはコードのインデント レベルが適切かどうかを確認する際にも役に立ちます。

Visual Studio 2017 RC の構造ビジュアライザーは、XAML、C#、VB の各ファイルと、下の Ruby ファイルのスクリーンショットのように、TextMate 文法でサポートされるすべての言語で機能します。今後さらにサポート言語が追加される予定です。一部の言語 (C# や VB など) では、該当のコードと同様、ヒントにも色が付けられます。

ガイド ラインを表示したくない場合は、[Tools]、[Options]、[Text Editor]、[General]、[Show structure guide lines] の順に選択して簡単に無効化できます。また、[Fonts and Colors] で [Text Editor] の表示アイテムから [Block Structure Adornments] を選択すると、ガイド ラインの色を変更できます。

デバッグ

Run to Click (クリックで実行)

今回から、ブレークポイントを設定しなくても、目的の行まで簡単にスキップできるようになりました。デバッガーで停止中にマウス ポインターが置かれているコード行の横のアイコンをクリックします。次にそのコード パスが実行されると該当する行でコードが停止します。

新しい例外ヘルパー

新しい例外ヘルパーでは、コンパクトな非モーダル ダイアログで以下のような例外情報を即座に確認し、重要な情報にすばやくアクセスできるようになりました。

  • null の項目: C# の NullReferenceException や C++ のアクセス違反を診断するときに、null の項目を例外ヘルパー内ですばやく確認できます。null 値が原因となってあるコードが中断した際に、例外ヘルパーのメッセージに太字で表示される変数を調べることで、実際に null となっている項目を確認します。
  • 内部例外: 中断の原因に内部例外がある場合は、例外ヘルパーでその詳細をすぐに確認し、矢印を使用して内部例外のツリー構造を確認できます。
  • 特定のモジュールからの例外を無視: 例外ヘルパーの [Exception Settings] セクションでは、チェック ボックスをオンにして、その種類の例外を現在のモジュールからスローされても無視できるようになりました。これを行うと、次にそのコード パスをデバッグしたときに、その例外で中断することはなくなります。なお、この状態は [Debug] から [Exception Settings] ウィンドウを開いてリセットできます。

[Attach to Process] フィルターと再アタッチ

[Attach to Process] ダイアログで検索することで、デバッガーをアタッチしたいプロセスをすばやく見つけることができます。一度プロセスにアタッチした後は、デバッグの停止またはデタッチを行っても、[Debug] メニューの新しい [Reattach to Process…] (Shift + Alt + P) コマンドを使用して再アタッチできます。この機能は、類似プロセスを繰り返しデバッグする際に時間を節約でき、毎回 [Attach to Process…] ダイアログを開く手間を省くことができます。

キーボード ショートカット

Visual Studio のパワー ユーザーの多くは、生産性を上げるため、キーボード ショートカットを使用しています。便利なショートカットをまとめたガイドは、こちら (英語) からダウンロードできます。今回ご紹介した多くの新機能にも対応しています。

フィードバックのお願い

Visual Studio 2017 を日々の開発作業の生産性向上に役立てていただけると幸いです。すべての新機能について詳しく知りたい場合は、visualstudio.com の概要ページリリース ノートをご覧ください。

また、Visual Studio 2017 Release Candidate を今すぐお試しいただき、新機能に関するフィードバックをお寄せください。問題などがありましたら、IDE またはインストーラーの右上隅にある [Report a Problem] (英語) ツールよりご報告ください。フィードバックへの対応は、開発者コミュニティのポータル (英語) でご確認いただけます。製品に関する提案は UserVoice (英語) までお寄せください。よろしくお願いいたします。

Mark Wilson-Thomas (Visual Studio IDE チーム、シニア プログラム マネージャー)
@MarkPavWT

Mark は Visual Studio IDE チームのプログラム マネージャーとして、およそ 10 年にわたって開発者向けツールを作成してきました。現在は、Visual Studio エディターを担当しています。それ以前は、Office、SQL、WPF、Silverlight 向けのツールに取り組んでいました。

新しいスタート ページの新機能をご紹介

$
0
0

 

本記事は、マイクロソフト本社の The Visual Studio Blog の記事を抄訳したものです。
【元記事】 Harness the Power of the Redesigned Start Page 2016/11/29

 

Visual Studio 2017 RC (英語) では、インストール時間が短縮され、パフォーマンスが向上したほか、新たな生産性機能の数々が導入されました。今回は、この生産性機能導入の一環として刷新されたスタート ページの新機能についてご紹介します。これにより、特にコードを取得してから作業を開始するまでの操作がスピーディに行えるようになりました。

最近使用した項目 (MRU) のリスト

ユーザーの皆様からのご意見をもとに、今回、スタート ページの中でも特に重要な構成要素である MRU について重点的に検討を行いました。まず、探している項目をすばやく見つけられるように、MRU の各アイテム (プロジェクト、ソリューション、フォルダー、ローカル アイテムのファイル パス、ローカル ディスクには存在しないリモート アイテムの URL など) のアイコンが種類別に表示されるようにしました。また、新たに追加したフォルダーを開く機能で、最近使用したフォルダーをサポートしました。さらに、項目を日付でグループ化できるようにし、履歴の長いアイテムやピン留めしたグループが MRU の上部に表示されるようにして、重要なアイテムにすばやくアクセスできるようにしました。

また、複数のマシンを利用している場合の生産性を向上するために、MRU でのローミングを可能にしました。Visual Studio Team Services や GitHub などのサービスでホストされているリポジトリのクローンを作成する際、Visual Studio で同一アカウントに関連付けられた Visual Studio インスタンスにローミングすることができます。そして、MRU からローミングされたアイテムを選択してクローンを作成し、そのコード ベースでの作業を継続できます。

ピン留めされたリモート リポジトリ、フォルダー、プロジェクトが表示されている MRU

プロジェクトの新規作成

Visual Studio の初心者でもベテラン ユーザーでも、プロジェクトを新規作成する機会は必ずあります。マイクロソフトの調査によると、スタート ページで最もよく使用されるのが [New Project…] コマンドですが、テストの際には同じプロジェクトを複数作成することが多いようです。この作業を効率化するために、作成するプロジェクトの種類をスタート ページで検索できるようにしました。これで、[New Project] ダイアログ ボックスで目的のアイテムを探す手間を省けます。また、最近作成されたアイテムがスタート ページで記憶されるようになりました。これにより、スタート ページからプロジェクトを直接作成できようになるため、[New Project] ダイアログからテンプレートを検索して選択するという作業をせずに済みます。このリストは、Visual Studio にサインインすると他のデバイスにもローミングされます。

最近使用したプロジェクト テンプレート

“web” という文字列を含むプロジェクト テンプレートを検索

特定の場所を開く

コードがローカルやオンプレミスの TFS サーバーに存在する、VSTS でホストされている、GitHub で共有されている、という場合でも、プロジェクトを簡単に検索してダウンロードしたり、開くことができれば便利です。

今回のリリースでは、従来の [Open Project/Solution] コマンドはそのまま、新たに [Open Folder] が追加されました。ソリューション ファイルの有無にかかわらず、VS から直接コード ベースを開くことができます。

TFS に存在するコードや VSTS でホストされているコードも、そのまま使用できるようになりました。[Checkout from] ヘッダーの [Visual Studio Team Services] をクリックするだけで、リポジトリのクローンを容易に作成できます。この領域はサードパーティの拡張も可能なため、サービス プロバイダーとして GitHub が既にこの場所に表示されるようになっています。最新の GitHub 拡張機能がインストールされている場合、VSTS で GitHub が表示されます。プロジェクトをホストするサービスの種類にかかわらず、皆様が簡単にコードに接続できるように、今後さらに多くのサービスに対応してまいります。

VSTS、GitHub、ローカル ディスクのいずれかから開く

開発者向けニュース

マイクロソフトでは、最新のニュースや関連性の高いニュースをタイムリーに配信することを心がけています。スタート ページでニュースを読むのを毎朝楽しみにされている方もいれば、そうでない方もいます。このため今回、このスペースに他のアイテムを表示したり、ニュースのセクションを折りたたんで、コードの作業に集中できるようにしました。なお、ニュースのセクションは折りたたんだ状態でも、新しいニュースが配信されると小さなバッジが表示されるため、最新情報を逃す心配はありません。

開発者向けニュースが折りたたまれ、アラート バッジが表示されている状態

スタート ページの表示

初期のフィードバックに、スタート ページを表示するコマンドがどこに移動したのかわかりづらいというご意見がありました。スタート ページがエクスペリエンスのスタート地点となることを想定し、このコマンドを [File] メニューに移動してアクセスしやすくしました。

最後に

新しいスタート ページでは、ユーザーの皆様が、より生産的に機能的にパーソナライズされた環境で必要な機能にすばやくアクセスしたり、リポジトリやプロジェクト テンプレートといった重要なアイテムをローミングしたり、コーディングに集中することができる新しいインターフェイスを実現しました。

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

Allison Buchholtz-Au (Visual Studio プラットフォーム担当プログラム マネージャー)

Allison Buchholtz-Au は Visual Studio プラットフォーム チームのプログラム マネージャーで、ソース制御ワークフローの合理化と、マイクロソフト製およびサードパーティ製の両方のソース制御プロバイダーのサポートを担当しています。

Visual Studio 2017 Release Candidate の更新版を発表

$
0
0

 

本記事は、マイクロソフト本社の The Visual Studio Blog の記事を抄訳したものです。
【元記事】 Updating Visual Studio 2017 Release Candidate 2016/12/12

 

マイクロソフトは先日の Connect(); 2016 において、Visual Studio 2017 Release Candidate を発表しました。既にこちらをご利用いただいているユーザーの皆様に感謝を申し上げます。皆様からは問題点やご要望をはじめとするさまざまなご意見をいただいており、マイクロソフトではこれらのフィードバックやテレメトリ データを基に製品をさらに改良させていきたいと考えております。

最新版の Visual Studio 2017 RC はこちらからダウンロードしていただけます。RC 版を既にインストールしている場合は、Visual Studio ウィンドウの右上に通知が表示されます。Visual Studio の更新を要求する通知が表示される場合は、そこから最新版 RC をインストールできます。

私たち開発チームはバグの修正に誠意取り組んでおり、その成果が今回の RC 版の更新となります。バグの多くは皆様からご報告いただいたものです (英語)。今回修正された問題と更新内容の完全な一覧は、Visual Studio 2017 のリリース ノートと既知の問題に記載されています。

ここでは、特に重要な変更内容をご紹介します。

  • まず、今回は多数の修正を行いました。チーム エクスプローラーの Git の同期で Current Branch を読み込めない問題、大規模なプロジェクトの読み込み時にクラッシュやフリーズが発生する問題、[Go To All] で発生する不具合などを修正しました。
  • オフライン ヘルプを使用できるようにしました。Visual Studio インストーラーでヘルプ ビューアー コンポーネントがインストールされます。
  • 複数のユーザー インターフェイスの言語を追加/削除できるようにしました。[Language Pack] タブで Visual Studio インストーラーを使用し、[Tools]、[Options]、[International Settings] の順に選択すると、インストール済みの言語の中から使用したいユーザー インターフェイス言語を選択できます。
  • .NET Core と Docker のワークロードを改良しました。csproj ファイルを読みやすくし、.NET Core のコマンド ライン ツール (CLI) に新しいコマンドを追加し、多数の不具合を修正しました。なお、これらは現在プレビュー期間中です。詳細については .NET ブログ (英語) を参照してください。
  • Developer Analytics Tools を改良し、ローカルで Application Insights SDK を使用してプロジェクトのデバッグ セッションを実行している際に、CodeLens で例外の有無、およびその例外によってユーザーにどのような影響があるかが表示されるようにしました。

今後も RC 版を継続的にリリースしていく予定です。更新内容は随時ブログにてお伝えしますので、ぜひご利用いただきフィードバックをお寄せください。問題点がありましたら、VS のタイトル バーの右上角にある [Report a Problem (英語)] オプションからご報告をお願いいたします。また、開発者コミュニティ ポータル (英語) もご利用ください。ご提案は UserVoice (英語) までお寄せください。

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

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

ローカル用 Azure DocumentDB エミュレーターを使った NoSQL .NET Core の開発作業

$
0
0

 

本記事は、マイクロソフト本社の SCOTT HANSELMAN の記事を抄訳したものです。
【元記事】 NoSQL .NET Core development using an local Azure DocumentDB Emulator 2016/12/4

 

数週間前、Miguel de Icaza とニューヨークの街を歩いていると、彼が今とても気に入っている NoSQL データベース Azure DocumentDB について話をしてくれました。私も昨年あたりからなかなかよさそうな製品だとは感じていたのですが、次の理由から使うまでには至っていませんでした。

  • ローカルで開発作業ができない – 私は低帯域幅の環境や飛行機の中でよく作業をするので向いていない。
  • MongoDB がサポートされていない – Mongo を使用する Node で書かれたアプリを扱うことがあるので向いていない。
  • .NET Core がサポートされていない – 私が行う作業のほとんどはクロス プラットフォームの .NET Core アプリなので向いていない。

しかし Miguel からは、この製品のことをもっとよく知るべきだとアドバイスされました。以前とは状況が変わり、今の DocumentDB は次のようになったそうです。

  • ローカル用 DocumentDB エミュレーターが無料に (英語) – Miguel に「Azure で実行されるコードから、永続化されているローカル ファイル システムを使用するよう変更するだけで他はまったく変更しなくてよいのか」と質問したところ、「これは『エミュレーター』だが原則的に同じコア エンジン コードだ」という答えをもらいました。このローカル用 DocumentDB エミュレーターは無料で、サインインする必要もありません。
  • MongoDB プロトコルをサポート – これには驚きました。既存の Node アプリを取り込み、MongoChef をダウンロードし、標準の MongoDB 接続文字列を使用してアプリ群を Azure にコピーし、アプリを DocumentDB で指定したところ、正常に動作しました。このケースでは DocumentDB をストレージとして使用しています。これには次のようなメリットがあります。
    • レイテンシの短縮
    • 世界規模の geo レプリケーションをそのまま使用できる (数クリックで実行可能)
    • SLA (サービス レベル アグリーメント) で、読み込み 10 ミリ秒未満、書き込み 15 ミリ秒未満のパフォーマンスを保証
    • 他の Azure サービスと同様にメトリックやリソース管理が可能
  • .NET Framework SDK と同等の機能を持つ DocumentDB の .NET Core Preview SDK (英語)

また、DocumentDB 用 SDK が Node、.NET、Python、Java、C++ の各言語で用意されているため、Unity でのゲーム開発、Web アプリ、iOS 用や Android 用の Xamarin モバイル アプリなどあらゆる .NET アプリでの使用に適しています。Miguel は特にこの点を気に入っています。

AZURE DOCUMENTDB をローカルで使用するためのクイック スタート ガイド

ここでは、Azure DocumentDB をすぐに使用開始するための方法を説明したいと思います。私は先日 Azure Friday でこのプロジェクトの PM に話を聞き (英語)、さっそくローカル用エミュレーターのダウンロードとインストールを行いました。彼の話によると、現時点では Windows 用ですが将来的にはクロス プラットフォーム ソリューションへの発展を予定しているとのことでした。エミュレーターをインストールすると、Web ブラウザーが開いてローカル Web ページが表示されました。他の開発ツールもこのように手軽にスタートできるとよいものです。他にも、ASP.NET MVC で DocumentDB の使用を開始するためのクイック スタート ガイドもあるのでチェックしてみてください。

: 今回のリリースはバージョン 0.1.0 で、アルファ版です。このため、同梱のサンプルではパッケージ名が異なっている場所があるなど、一貫していません。”Microsoft.Azure.Documents.Client”: “0.1.0” は “Microsoft.Azure.DocumentDB.Core”: “0.1.0-preview” に変更する必要がありました。このようにちょっとした問題に注意する必要があります。これで正常に動作するようになるはずです。

Nice DocumentDB Quick Start

このサンプル アプリは、一般的な “ToDo” アプリです。

ASP.NET MVC ToDo App using Azure Document DB local emulator

ローカル用エミュレーターには Web ベースのローカル データ エクスプローラーも含まれています。

image

ToDo の項目は、下記のような単純な POCO (Plain Old CLR Object) です。

namespace todo.Models
{
using Newtonsoft.Json;

public class Item
{
[JsonProperty(PropertyName = "id")]
public string Id { get; set; }

[JsonProperty(PropertyName = "name")]
public string Name { get; set; }

[JsonProperty(PropertyName = "description")]
public string Description { get; set; }

[JsonProperty(PropertyName = "isComplete")]
public bool Completed { get; set; }
}
}

サンプル内の MVC コントローラーでは基盤となるリポジトリ パターンが使用されているため、この階層では下記のようにコードがとてもシンプルです。

[ActionName("Index")]
public async Task<IActionResult> Index()
{
var items = await DocumentDBRepository<Item>.GetItemsAsync(d => !d.Completed);
return View(items);
}
 
[HttpPost]
[ActionName("Create")]
[ValidateAntiForgeryToken]
public async Task<ActionResult> CreateAsync([Bind("Id,Name,Description,Completed")] Item item)
{
if (ModelState.IsValid)
{
await DocumentDBRepository<Item>.CreateItemAsync(item);
return RedirectToAction("Index");
}
 
return View(item);
}

リポジトリ自体は抽象化されていて、複雑なことはありません。コードの長さは 120 行ほどで、空行や中括弧だけの行を除けば実質 60 行程度で、そのうちの約半分は初期化とセットアップです。DocumentDBRepository<T> も含まれているため汎用的で、必要に応じて自由に変更して使用することができます。

このサンプルで唯一目立つところは GetItemsAsync のループで、ページングやチャンクに利用できる可能性があります。述語で渡すことができるのはよいですが、大規模なコレクション向けに何らかのページング ロジックを実装したいと思います。

public static async Task<T> GetItemAsync(string id)
{
try
{
Document document = await client.ReadDocumentAsync(UriFactory.CreateDocumentUri(DatabaseId, CollectionId, id));
return (T)(dynamic)document;
}
catch (DocumentClientException e)
{
if (e.StatusCode == System.Net.HttpStatusCode.NotFound){
return null;
}
else {
throw;
}
}
}
 
public static async Task<IEnumerable<T>> GetItemsAsync(Expression<Func<T, bool>> predicate)
{
IDocumentQuery<T> query = client.CreateDocumentQuery<T>(
UriFactory.CreateDocumentCollectionUri(DatabaseId, CollectionId),
new FeedOptions { MaxItemCount = -1 })
.Where(predicate)
.AsDocumentQuery();
 
List<T> results = new List<T>();
while (query.HasMoreResults){
results.AddRange(await query.ExecuteNextAsync<T>());
}
 
return results;
}
 
public static async Task<Document> CreateItemAsync(T item)
{
return await client.CreateDocumentAsync(UriFactory.CreateDocumentCollectionUri(DatabaseId, CollectionId), item);
}
 
public static async Task<Document> UpdateItemAsync(string id, T item)
{
return await client.ReplaceDocumentAsync(UriFactory.CreateDocumentUri(DatabaseId, CollectionId, id), item);
}
 
public static async Task DeleteItemAsync(string id)
{
await client.DeleteDocumentAsync(UriFactory.CreateDocumentUri(DatabaseId, CollectionId, id));
}

今後もしばらくこの機能を試してみようと思っていますが、飛行機でも使用できるので今のところそれで十分ハッピーです。ただオブジェクトを渡して保存するだけなのでとても簡単です (最近は SQL よりも NoSQL がお気に入りですが)。

今後は、.NET Core で動く優秀なオープン ソース NoSQL ドキュメント データベース RavenDB に関する記事 (英語) も公開予定ですので、どうぞご期待ください。


筆者紹介

Scott Hanselman は、大学教授と金融会社のチーフ アーキテクトという職歴を経て、現在はマイクロソフトに勤務する傍ら、講演やコンサルティング活動を行っています。父親であり、糖尿病と戦っているほか、漫才師のなり損ない、コーンロウ ヘアーのスタイリスト、著者という肩書きも持っています。

Project Springfield: クラウド サービスのすべてを F# で構築

$
0
0

 

本記事は、マイクロソフト本社の .NET Blog の記事を抄訳したものです。
【元記事】 Project Springfield: a Cloud Service Built Entirely in F# 2016/12/13

 

今回の記事の執筆者は William Blum (Microsoft Research の Springfield チーム、プリンシパル ソフトウェア エンジニアリング マネージャー) です。

マイクロソフトは今年の始めに、ソフトウェアの潜在的なセキュリティ脆弱性を根絶する最も洗練されたツール Project Springfield のプレビューを発表しました。Project Springfield (英語) はコードのセキュリティ クリティカルなバグを発見するファズ テスト サービスです。

Springfield の素晴らしい点の 1 つは、マイクロソフトの開発プラットフォームである F#、.NET、Azure を基盤としている点です。今回の記事では、Project Springfield、F#、.NET、Azure に関する疑問点や使用方法について取り上げます。

Project Springfield とは

Project Springfield はソフトウェアのセキュリティ クリティカルなバグを発見するために開発したマイクロソフトならではのファズ テスト サービスであり、マイクロソフトのプラクティスやテクノロジをすばやく導入するのに役立ちます。Azure クラウドの能力を活かしながら、マイクロソフトのセキュリティ テスト ツール スイートを通じてセキュリティ テストをスケーリングします。このツールは現在プレビュー段階で提供されています。お試しになる場合は Project Springfield (英語) からぜひサインアップしてください。

Microsoft's Springfield group. (Photography by Scott Eklund/Red Box Pictures)

Springfield のアーキテクチャについて議論する William Blum () Cheick Omar Keita ()

なぜ F# を採用したのか

私たちはこのプロジェクトでなぜ F# を選択したのか。一言で言うと、リリースまでのスピードの速さです。

2015 年、Project Springfield は Microsoft Research NExT (英語) によってスタートされました。当時のエンジニアリング チームはわずか 3 名でしたが、3 か月以内にゼロからサービスを構築し、外部のお客様に提供する、という大きな使命が与えられていました。

開発サイクルがスピードアップし、リリースまでの時間が短縮されたのは、F# の簡潔性、正確性、.NET エコシステム全体との相互運用性のおかげだったと考えています。私たちが感じた F# の大きなメリットは、スクリプト機能と動作するコードのプロトタイプをすばやく作成できるインタラクティブな REPL、代数的データ型、既定で変更不可、パターン マッチ、高階関数、強力な非同期プログラミング モデル、型プロバイダーなどです。

どのように構築したか

F# スクリプトを使用したことで、外部 .NET API をすばやく発見して操作できました。たとえば次のように、F# Interactive を使用して Azure SDK の使い方を学習しました。

上記の F# Interactive のスクリプトでは、指定の Azure サブスクリプションの Azure Virtual Machines がすべて列挙されます。

後の開発プロセスで、修正なしにコンパイルされた最終的なコードに、まったく同じスクリプト コードを簡単に組み込むことができます。

関数型プログラミング

F# は関数型プログラミング言語であるため、コードを関数のスタイルで記述しました。こうすることで多くのテンプレート コードを省くことができました。

たとえば、リストや配列などのコレクションを使用する場合は、Seq モジュールの F# シーケンス (英語) を使用してデータを処理します。F# は関数の引数の部分適用 (英語) に対応しており、関数を第一級引数 (英語) として使用できるため、シンプルで信頼が高くコンポーザブルなコードでデータのシーケンスを処理できます。

C のようなループを使用する場合など、イテレーションや何らかの状態を一時的な変数に保存する必要がないのでシンプルになります。イテレーションが不要なため、配列の範囲外のインデックスにアクセスした場合の例外などイテレーションでよくある問題を回避でき、信頼性が向上します。また、F# のパイプライン演算子 (|>) によって処理を簡潔に作成できます。

F# のパイピング演算子と Sequence モジュールを使用したヒストグラムのソート

上記のスニペットでは、ラムダ関数、関数合成、純粋関数など、F# に既定で実装されている多数の関数型プログラミング機能を使用しています。これらの言語構造は強力であるため、C# などの非関数型言語にも一部組み込まれています。

特に純粋関数はコードベースにおいて最も大きなメリットの 1 つとなっています。純粋関数 (英語) では、関数の出力は入力値によって決まるという決定論の 1 つの形態です。つまり、入力に対して純粋関数は常に同じ出力を返します。さらに、純粋関数は環境に影響しません (グローバル変数やデスク上のファイルなど)。

関数の純粋性という特性をコードベースで維持することで、コードが論理的に明確になりテストがしやすくなりました。純粋関数は互いに影響しないため、並列化も簡単にできます。

F# では、let 束縛の値をすべて既定で変更不可にすることで純粋な関数のコードを簡単に書くことができます。別の言い方をすれば、純粋ではない関数を書くには、あえてそう選択しなければなりません。それが本当に必要な場合 (環境を何らかの形で変更しなければならない場合など)、let mutable キーワードで変更可能なことを明示的に指示するだけで簡単にできます。Springfield では、変更可能な変数は F# のコードベース全体で 5 つしかありません。

簡潔性

上の例は、「プログラムが簡潔になる」という関数型言語のもう 1 つの側面を示しています。上記のプログラムの 4 行のコードは、命令型で記述した場合さらに量が増えます。不自然な例に見えるかもしれませんが、Springfield の規模では、維持がしやすいコードベースが生成されます。

実際、一部のコンポーネントを別の言語から F# に移植すると、この現象を定量化できました。たとえば従来の依存関係を解消するために、Perl スクリプトを 37% 小さい F# プログラムに移植しました。またこれとは別に、1,338 行の PowerShell スクリプトを 489 行の F# (2.7 倍縮小) に移植しました。両方ともコードの量が減ったにもかかわらず、完成した F# プログラムでは、ログ、読みやすさ、信頼性が向上しました (静的な型チェックにもよる)。

正確性

F# が迅速なリリースにつながったもう 1 つの理由は、F# が採用する関数パラダイムがコードの正確性向上に貢献したからです。言語構造が正確性を向上させることを裏付ける例の 1 つが、代数的データ型とパターン マッチの使用です。

その本質を示す例は、データが見つからない場合に F# でそのデータをどのように表現し、処理するかです。主流の言語のほとんどでは、一般的にデータが見つからない場合、特別な null 値で表されます。これには大きな欠点があります。null はほとんどの型で暗黙であり、データを利用するときに null である可能性をチェックするのを忘れやすいからです。このため実行時の NullReferenceException エラーなど、信頼性に関する問題やバグが出やすくなります。C# など多くの言語は、オブジェクト値が既定で null 許容型なので、コードベース全体で null をチェックする必要があります。

F# では定義したデータ型は既定で非 null 許容型です。データが見つからないことが想定される場合は、既存の型 'T を代数的データ型 'T option (または Option) にラップします。F# Options (英語) は 2 種類の値があります。none 値はデータがないことを示し、Some v v は有効な型 'T です。

Option 型自体でデータがない場合を把握することにより、コードで Optional を利用する場合は、コンパイラは Some vNone の両方のケースに対応できます。一般的にはパターン マッチと match ... with 構文で行います。次に Springfield のコードベースから例をお見せします。

パターン マッチと型システムを併用すれば、NoneSome などあらゆるケースを処理できます。

この言語機能だけで、問題となる null をコードベースからほぼ完全に解消し、貴重な時間を節約できました。

明示的な型システム

Option 型は代数的データ型 (英語) の力を示す一例にすぎません。もっと一般に使用される場合、代数的データ型ではシステム内のすべてのデータ構造を簡潔に定義し、正確かつ効率的なコードを作成してそれらのデータ構造を操作できます。たとえば次のように、シンプルな判別された共用体を使用して、Azure でのテスト用にプロビジョニングされている仮想マシンのサイズを定義できます。

また、さらに複雑な構造体を使用して、システムのさまざまなコンポーネント間でやり取りするイベントやメッセージをエンコードできます。

Springfield に送信する各テスト ワークロードでは数千件のメッセージが作成され、サービスのさまざまなコンポーネント間でやり取りされます。強力な F# の型システムのおかげで、こうした複雑な情報も F# Records (英語)判別された共用体 (英語) で簡単に表すことができます。

受信したメッセージを型システムを通じて表現すると、その受信したメッセージに対してパターン マッチ (英語) ディスパッチを使用できます。

上記のよいところは、コンパイラがすべてのケースに対応するよう強制する点です。F# の判別された共用体 EventType に逆シリアル化されたキュー メッセージは、ディスパッチ関数によって処理されることが保証されます。正確性が保証されているので、デバッグに時間をかけずに済みます。F# 型のような機能とパターン マッチの併用は、動作するコードを短時間で完成させるのに大いに役立ちました。

別の例として、信頼性のために、サービス リクエストは有限状態マシンを使用してバックエンドに実装されました。マシンの状態は Azure Queue に保存されるので、障害が発生した場合はそこから再開できます。繰り返しになりますが、F# は次のように状態マシンをきわめて簡潔に定義できます。

Springfield バックエンドで使用している有限状態マシン

JSON によるシリアル化とオープン ソース提供

Springfield では、Json.NET (英語) を利用して JSON メッセージのシリアル化と逆シリアル化を行いました。ところが、F# のデータ型をシリアル化する際の既定の出力は詳細すぎて、私たちのニーズを満たさないことがわかりました。F# データ型をシリアル化する際に Json.NET をラップして拡張する小さなライブラリの FSharpLu.Json (英語) を構築して、Options、代数的データ型、判別された共用体などの F# データ型をさらに簡潔にシリアル化できるようにしました。

たとえば、単純な値の Some [ None; Some 2; Some 3; None; Some 5 ]FSharpLu.Json (英語) により [null, 2, 3, null, 5] にシリアル化されます。FSharpLu.Json なしの場合は、次のようにシリアル化されます。

複雑なデータ型については、先に紹介した Event 型のように、違いはもっと明確になります。たとえば次のイベントを見てみましょう。

これは FSharpLu.Json で次のようにシリアル化されます。

こちらの方が F# の構文を反映しており、既定の Json.NET の書式よりも 47% コンパクトです。

私たちはこのような JSON ユーティリティは F# コミュニティにとって有益だと考え、FSharpLu.Json を GitHub (英語) でオープンソース提供し、NuGet (英語) でリリースしました。

F# の型プロバイダーと Azure

Springfield は完全に Azure を基盤としています。テスト ワークロードを実行するために使用するコンピューティングとネットワークのリソースはすべて、Azure Resource Manager (ARM) を通じて動的にプロビジョニングされます。ARM でリソースを作成するには、2 つの JSON ファイルを作成する必要があります。1 つは作成するすべてのリソース (仮想マシンなど) を定義したテンプレート JSON ファイル、もう 1 つはデプロイメントのカスタマイズ (マシン名など) に使用する値が格納されたパラメーター JSON ファイルです。

Springfield はコンピューティング リソースを動的に配分するため、実行時に JSON パラメーター ファイルを生成する必要があります。これはエラーが頻出するタスクです。F# の型プロバイダー (英語) を使用すれば、生成されたテンプレート パラメーターが有効であることをコンパイル時に静的に検証できます。ARM テンプレートは常に進化しているため、開発やデバッグが大幅にスピードアップします。

FSharp.Data (英語)JSON 型プロバイダー (英語) を使用すれば、3 行の F# コードで、デプロイメントを Azure に送信するために必要なすべての型をテンプレート パラメーター ファイル (下のスクリーンショットを参照) から自動的に推測できます。

JSON Type Providers for Azure Templates

F# Intellisense がテンプレート パラメーター () と対応する ARM テンプレート () から存在しないフィールドをキャッチ

厳密に型指定されたログ、非同期プログラミング、アクティブ パターン

Springfield の構築に F# が便利なもう 1 つの例を示すために、コードベースの別のスニペットを見ていきましょう。次は Azure のリソース グループを削除するために使用する関数です。

厳密に型指定されたログ

上記のコード スニペットを見ると、C/C++ プログラマーは、ログ関数 Trace.infoTrace.error の呼び出しが %s を使用した printf のような書式であることに気付くはずです。ゲーム プログラマーの John Carmack (英語) は、「Printf の書式文字列エラーは、(ビデオ ゲーム Rage の C/C++) コードベースにおいて null の安全問題に次ぐ大きな問題でした」と言っています。このようなエラーは、printf 関数に渡すパラメーターの数が間違っていたり、入力パラメーターの型が %d%s などの書式指定子とマッチしなかったりすると発生します。

Springfield ではトレース ログを頼りにバグや問題の診断を行うため、ログ関数自体に信頼性の問題が生じることは許されません。F# の強力な型システムのおかげで、書式仕様とパラメーターの不一致はコンパイラにより静的に発見されるため、こうした問題はすべて解決されます。このメリットを活かすために、私たちは厳密に型指定された書式設定モジュール Printf (英語) を使用した独自のトレース ログ ヘルパーを定義しました。ログのロジックは .NET Frameworks の System.Diagnostics.TraceInformationAzure SDK の AppInsights など他のログ API にオフロードされます。.

System.Diagnostics.TraceInformation の厳密に型指定されたラッパーを FSharpLu (英語) ライブラリでオープンソース提供しています。また、AppInsights ラッパーを将来オープン ソース提供することを計画しています。

Microsoft.FSharpLu.TraceLogging System.Diagnostics 向けに厳密に型指定されたログを実行

非同期プログラミング

Springfield のようなオンライン サービスが高い拡張性を実現するには、非同期コードを利用してハードウェア リソースをさらに活用しなければなりません。このタスクはプログラマーにとって骨の折れる作業ですが、これをより容易にする非同期プログラミングのための言語レベルの抽象化が、主流の言語で最近登場し始めています。

F# は既に 2007 年に、言語レベルの非同期プログラミング モデルを .NET プラットフォーム向けに提供しています。具体的には、非同期ワークフロー (英語) という最先端の非同期サポートが標準で用意されています。

Springfield では IO 束縛コードのほとんどが async{..} ブロック内にラップされており、let! 演算子を利用して IO 処理が完了するまで非同期で待機します。

たとえば、上記の delete スニペットでは、let! を使用して Azure SDK の delete API を非同期的に待機しています。非同期ワークフローは私たちのサービスのいたるところで使用されています。バックエンド イベント処理と REST API はすべて非同期です。

非同期 REST API Springfield ジョブを送信

F# 非同期プログラミング モデルは F# コア ライブラリでコンピュテーション式 (英語) を使用して実装されています。これはしっかりとした理論的基礎 (英語) に基づいた言語構造で、言語構文をきわめて汎用的に拡張するために使用されます。

F# 非同期プログラミング モデルを使用すれば、非同期コードを記述する C# プログラマーが陥りやすい落とし穴 (英語) の多くは問題になりません。詳細については、C# モデルの非同期と F# モデルの非同期の違い (英語) に関する Tomas Petricek のブログ記事をご覧ください。

アクティブ パターンで非同期例外を処理

.NET の非同期および並列プログラミングの重要な動作の 1 つとして、例外が System.AggregateException 型の例外の下に入れ子になる、またはグループ化されることがある、というのがあります。C# などの .NET 言語では例外処理は例外の型にのみ基づいて決まります。F# の場合、パターン マッチ構造では、複雑な条件で処理したい例外をフィルタリングできます。たとえば、上記スニペットの delete 関数では、パターン マッチとアクティブ パターン (英語) を組み合わせて、収集した例外のフィルタリングを簡潔に行っています。

収集された例外に対してアクティブ パターンを使用

パターン マッチで Azure SDK exception Hyak.Common.CloudException をフィルタリング

スクリプト言語としての F#

F# には REPL (英語) 環境が用意されており、代替言語として PowerShell など他のスクリプト言語とは別の優れた点を持っています。F# スクリプトは .NET プラットフォーム上で実行されるので既存の Core アセンブリのコードを利用できます。Springfield では、F# スクリプトを使って使用状況の監視やクリーンアップといったメンテナンス作業を行っています。F# スクリプトのもう 1 つの利点は、スクリプト言語としてはレアですが、静的型チェックが行われる点です。このため、実際にデバッグにかかる時間が大幅に短くなります。変数名の打ち間違いなどのケアレス ミスはすぐに F# 向け IDE (Visual Studio、Xamarin Studio、Ionide のプラグイン スイートを搭載した Visual Studio Code) の IntelliSense が拾ってくれます。コードのリファクタリングも簡単に行えます。これは私たちが体験した PowerShell スクリプトの脆弱性とはきわめて対照的です。

F# スクリプトのこれらの機能が、PowerShell に代わり、サービスを構成するいくつかのコンポーネントのスクリプト関連のニーズを満たしてくれたのは大きなメリットでした。

PowerShell は今でもデプロイメントやリソース管理に使用しています。その大きな理由は Azure を基盤としているからであり、また Service Fabric など一部のツールの特定の機能が PowerShell からしか利用できないためです。しかし、可能な場合はできるだけ F# スクリプトを使用しています。

Azure のすべてのリソース グループのリストを作成する Springfield .FSX スクリプト

.NET と Azure でスケーリング

F# は .NET 言語であるため、.NET のエコシステム全体を利用できます。たとえば、私たちは Azure .NET SDK を使用して Resource Manager、Compute、Network、Files Storage、Queues、KeyVault、AppInsights など多くの Azure サービスを利用しています。また、Service Fabric を利用してバックエンド サービスも構築しました。

Springfield で Azure がどのように利用されているかについて、詳細は https://azure.microsoft.com/blog/scaling-up-project-springfield-using-azure (英語) をご覧ください。

コミュニティ ライブラリ

F# のもう 1 つの素晴らしい点として、活発なコミュニティがあります。Springfield では Paket (英語) などで NuGet 依存関係管理を簡易化し、FsCheck (英語) でテストの生成を自動化しているほか、FSharp.Data (英語) の型プロバイダーや Visual Studio Code のクロス プラットフォーム F# エディター Ionide (英語) など多数のオープンソース プロジェクトを活用しています。また、他のプロジェクトにも注目しており、Suave (英語) を将来 Web 関連コンポーネントとして導入することなども検討しています。

また、先述のとおり、FSharpLu (英語)FSharpLu.Json (英語) いう 2 つの F# ライブラリの提供によってコミュニティに恩返ししています。

Project Springfield の今後

この記事では、Springfield の構築に役立った F# のメリットを大まかに説明しました。私たちがのプロジェクトに F# を選択したのは、これよりも小さな規模のプロジェクトでよい手応えを得たからでした。Springfield の開発を通じてわかったのは、フル機能のオンライン サービスの構築にも F# が使えるということでした。

関数型のパラダイムは業界の主流となっており、それは F#、Scala、Swift、Elixir、Rust といった言語の人気が高まっていることや、C# や Java といった言語にも関数型プログラミング コンストラクトが導入されていることからもわかります。C++ でさえも独自のラムダ関数が導入されています。この人気の理由は、常に変化するユーザーのニーズに対応するためにコードをすばやく進化させなければならない中、F# が関数型パラダイムが保証された正確性と高い表現性という他にはないメリットを持っているからでしょう。.NET の開発者にとって F# は打ってつけの言語です。

最後になりますが、F# は求人にも役立ったことをお伝えしておきます。F# のようにそれほど人気のない言語でコードベースを作成する場合の一番の懸念は、エンジニアリング チームを編成するためのエンジニアの頭数がそろわないことです。しかし、意外にもそうはなりませんでした。理由としてはまず、F# のような関数型プログラミング言語を使用するという点に、多くの優秀なエンジニアが興味を示してくれたことでした。その動機としては、この言語が純粋に好きだという人もいれば、チームの反対にあって今の仕事ではこの言語を使用できないという人もいました。また、新しいプログラミング パラダイムを学ぶことに興味があり、これまでとは違ったやり方に挑戦したいという人もいました。エンジニアの数に悩まされずに済んだもう 1 つの理由は、採用したエンジニアが F# だけでなく、どの言語においても腕の立つ開発者だったことです。私たちはこうして Project Springfield のエンジニア募集を問題なく終えることができました。またそれだけでなく、コードベースで F# を採用すれば、このような才能ある人たち (英語) が集まってくれることも発見できました。

Microsoft's Springfield group photographed on November 1, 2016. (Photography by Scott Eklund/Red Box Pictures)

Springfield チームのメンバー: 左から順に Lena Hall 氏、Patrice Godefroid 氏、Stas Tishkin 氏、David Molnar 氏、Marc Greisen 氏、William Blum 氏、Marina Polishchuk

Springfield については、パイプラインの仕事がたくさんあります。その中でもバックエンドを .NET Core (英語) に移植することを検討しており、F# が次の 4.1 リリース (英語) でサポートする予定です。

参照情報

Connect(); // 2016 の BikeSharing360 デモのコードを GitHub で公開

$
0
0

 

本記事は、マイクロソフト本社の The Visual Studio Blog の記事を抄訳したものです。
【元記事】 Connect(“demos”); // 2016: BikeSharing360 on GitHub 2016/12/14

 

マイクロソフトにとって開発者の皆様は非常に大切な存在です。今後もクラウド ファースト、モバイル ファーストのソリューション開発に力を入れて取り組み、開発者の皆様、あらゆるアプリケーション、あらゆるプラットフォームのために役立ててまいります。

今年の Connect(); イベントでは、Scott Guthrie と Scott Hanselman の基調講演で 15 のデモが披露されました。基調講演をまだご覧いただいていない方は、Channel 9 のビデオ (英語) をぜひご覧ください。

このイベントで発表された (英語) 新しい製品、サービス、ツールは、アプリのイノベーションに活用いただけるものが揃っています。マイクロソフトでは、これらのテクノロジの可能性を皆様に体感していただけることを想像しながら、基調講演のデモの作成や実際に使用されるアプリケーションの開発を行っています。このたび、Connect(); //2016 で披露された完全にインテリジェント化された自転車シェア サービスのデモ プロジェクトについて、すべてのソース コードが公開されることになりました。

clip_image002

BikeSharing360 (英語) は架空のスマート バイク シェア システム (英語) で、ニューヨークとシアトルの 650 か所のステーションに 10,000 台の自転車が配置されている設定です。このプロジェクトは、ユーザーへの最新のパーソナライズされたエクスペリエンスの提供と、インテリジェンスを活用したビジネス運用を目標としています。

このデモでは、企業とユーザー (自転車の利用者) 向けにアプリが作成されました。

BikeSharing360 (企業向け)

ニューヨーク、シアトル、続々と進出予定

  • ビジネス管理にインテリジェンスを活用
  • 自社のスマート バイクを IoT デバイスで追跡
  • モバイルで自転車のメンテナンス レポートを取得
  • 顔認識と音声認識を備えたインテリジェントなキオスクで
    ユーザーへの貸出手続きを容易に
  • インテリジェントなカスタマー サービス: ボットによる
    AI 支援型のカスタマー サービス
Bike Riders (ユーザー向け)
  • モバイルでエコなサービスを利用して、時間とコストを節約しながら楽しめる
  • 1 つのアプリで自転車の検索、手続き、管理まで
  • 利用ログ: 経路の検索と追跡
  • パーソナライズされたお勧めイベントを取得
  • トラブル時は、カスタマー サービス パーソナル アシスタントの BikeSharing360 ボットとのチャットで解決

BikeSharing360 アプリケーション スイート

マイクロソフトでは、開発者の皆様が生産性を格段に向上させ、ビジネス改革を促進し、エンド ユーザー様のためのアプリを構築するお手伝いをしたいと考えています。そのために、ツール、製品、アプリケーション プラットフォーム機能に関するヒントや活用方法などの情報発信に力を入れています。

マイクロソフトはこのデモ プロジェクトのために、企業とユーザー向けの BikeSharing360 アプリケーション スイートを作成しました。次の図はアプリの概要です。

デモの視聴とコードのダウンロード

今回、複数のデモ プロジェクトを 7 つのリポジトリに分割して GitHub で公開しました。

Web サイト

BikeSharing360: Web サイトの GitHub リポジトリ (英語)

  • 自転車のレンタルとユーザーの統合に特化した Web アプリ
  • BikeSharing360 のパブリック Web サイト (MVC)
  • BikeSharing360 のパブリック Web サイト (ASP.NET Core)
  • BikeSharing360 のパブリック Web サイト (ASP.NET Core 1.1)


モバイル アプリ

BikeSharing360: Mobile アプリの GitHub リポジトリ (英語)

  • BikeRider アプリ: Xamarin を使用した iOS 用、Android 用、および UWP 用のネイティブ モバイル アプリ
  • Maintenance アプリ: Cordova を使用したクロス プラットフォーム モバイル アプリ

実際のデモを見る

バックエンド サービス

BikeSharing360: バックエンド サービスの GitHub リポジトリ (英語)

  • バックエンドのマイクロサービス: Connect(); のさまざまなデモ (主に Xamarin アプリ) で使用
  • Azure Functions

実際のデモを見る

単一コンテナー アプリ

BikeSharing360: 単一コンテナー アプリの GitHub リポジトリ (英語)

  • 単一コンテナー アプリ: 既存のマーケティング サイトと Linux Docker コンテナーで実行されている Azure App Service への発行

実際のデモを見る

複数コンテナー アプリ

BikeSharing360: 複数コンテナー アプリの GitHub リポジトリ (英語)

· 複数コンテナー アプリ: より複雑なアプリによる Visual Studio 2017 RC を使用した継続的配信のセットアップのデモ。その後、プロジェクトは Azure Container Registry により Azure Container Services にデプロイされます。

実際のデモを見る

· Donovan Brown による複数コンテナー アプリのデモ (英語)

Cognitive Services のキオスク アプリ

BikeSharing360: Cognitive Services のキオスク アプリの GitHub リポジトリ (英語)

  • Cognitive Services (顔認識 API、音声認識) を使用した UWP のインテリジェントなキオスク

実際のデモを見る

ボット アプリ

BikeSharing360: ボット アプリの GitHub リポジトリ (英語)

  • BikeSharing360 インテリジェント ボット: Language Understanding Intelligent Service (LUIS) と統合されたカスタマー サービス

実際のデモを見る

以下の Visual Studio Toolbox のエピソードで BikeSharing360 デモ アプリ全体の概要を紹介していますので、ぜひご覧ください。

Connect(); その他のデモ

下記のページでは、Visual Studio 製品ファミリ (英語) の最新の機能強化を紹介するツールのデモをご覧いただけます。

開発者の皆様にとって、今こそ顧客満足とビジネス成長のための画期的なアプリやサービスを開発する大きなチャンスです。マイクロソフトのインテリジェントな Azure クラウド、強力なデータ プラットフォーム、柔軟な開発者ツールを活用することで、多様なプラットフォームやデバイスに対応できる便利なアプリをかつてないほど簡単に設計、構築、管理することができます。

デモ チームが作成した BikeSharing360 にぜひご注目ください。

Erika Ehrli Cabral (クラウド アプリ開発およびデータ担当シニア プロダクト マーケティング マネージャー)
@erikaehrli1
Erika Ehrli Cabral はマイクロソフトに 12 年以上勤務し、Microsoft Consulting Services をはじめ、さまざまな役職を経ながら開発者向けのコンテンツやコード サンプルを作成した実績を持ちます。現在は基調講演で使用するデモ、Visual Studio や Azure の製品マーケティングを主に担当しています。

2017 年に .NET 開発者が知っておくべきこと

$
0
0

 

本記事は、マイクロソフト本社の Scott Hanselman Blog の記事を抄訳したものです。
【元記事】 What .NET Developers ought to know to start in 2017 2017/1/11

 

.NET Componentsずいぶん前にも、「.NET 開発者が知っておくべきこと」というタイトルでブログ記事 (英語) を書いたことがあります。このときは質問集のように掲載したのが悪かったのか、リクルーターなどにリトマス試験紙のように使われてしまいました。

.NET については情報量が膨大なので、便利なリストを作成して学習ガイドや用語集として使ってもらおうと思い立ち、Jon Galloway と協力して用語とリソースをリストにまとめました。

始めてみて最初に思うのは、「やることが多すぎるじゃないか。だから .NET は嫌なんだ」ということかもしれませんが、参入時にはどのプラットフォームでも同じような壁 (用語集の作成) にぶつかるものです。3 文字略語のない言語やコンピューター エコシステムはありません。あまり深く考えずに、知っておくべきことを知ることからゆっくり始めていきましょう。どこまでやるかはご自身で判断すればよいのです。すべてを知らなくても大丈夫です。その代わり、どのレイヤーでもラベルでも、今どんなプログラムに向き合っているにせよ、その奥にはまだ知らない事実が隠れている可能性があるということだけは知っていてください。

あなたにとって知っておかなければならない項目には線を引いておいてください。その部分を理解したら、他も見てみるようにしてください。詳しい内容を知りたい人もいれば、そうでない人もいます。根本から学ぶべきか、ユーザー視点で学ぶべきかを考え (英語)、自分のスタイルで楽んでください。

まず、.NET と C# ですが、オンライン (https://dot.net英語) で学ぶことができます。また、F# は http://www.tryfsharp.org (英語) で学習できます。どちらのサイトでもダウンロードなしでコードを作成し、ブラウザー上で作業できます。

https://dot.net (英語) で .NET Core と Visual Studio Code を入手したら、さっそく読み始めてみましょう!

知っておくべきこと (必須)

  • .NET はいくつかの主要なコンポーネントからなります。ランタイムと言語から見ていきましょう。
  • 主要なランタイムは、以下の 3 つです。
    • .NET Framework – Windows PC、デバイス、サーバー上で稼働するモバイル アプリケーション、デスクトップ アプリケーション、Web アプリケーションを作成できます。
    • .NET Core WindowsLinuxMac 上で稼働するサーバー アプリケーションを作成するための高速なモジュール型プラットフォームを提供します。
    • Mono for Xamarin – Xamarin により .NET を iOS Android で使用できます。スキルやコードを再利用しながらネイティブの API やパフォーマンスを利用できます。Mono (英語) はマイクロソフトが Xamarin を買収する前に作成されたオープン ソースの .NET です。Mono は、オープン ソースで柔軟なもう 1 つの .NET ランタイムである .NET Standard をサポートします。また、Mono は Unity ゲーム開発環境でも使用されています。
  • 主要なプログラミング言語は以下のとおりです。
    • C# – C スタイルの言語の表現性と美しさを備えた、シンプルで強力でタイプセーフなオブジェクト指向のプログラミング言語です。C やそれと似た言語を使い慣れている方なら、難なく使いこなせるはずです。C# の詳細については、「C# ガイド (英語)」を参照してください。ブラウザーで実際に試してみることもできます (https://dot.net、英語)。
    • F# – 従来のオブジェクト指向の命令型プログラミングもサポートする、クロス プラットフォームで関数ファーストなプログラミング言語です。F# の詳細については、「F# ガイド (英語)」を参照してください。ブラウザーで実際に試してみることもできます (http://www.tryfsharp.org、英語)。
    • Visual Basic – .NET 上で稼働するさまざまなアプリケーションを構築できる言語で、学ぶのも簡単です。何年も前になりますが、私も VB から始めました。
  • 入手場所
  • ランタイムと言語の次は、プラットフォームフレームワークです。
    • フレームワーク – 使用可能な API を定義するものです。.NET 4.6 Framework、.NET Standard などがあり、名前で参照することもありますが、コードや構成ファイルでは TFM (下で説明) で参照します。
    • (.NET の) プラットフォーム – Windows、Linux、Mac、Android、iOS などがあり、ビット数も含めると、x86 Windows と x64 Windows の違いもあります。今では、各 Linux ディストリビューションにも独自のプラットフォームがあります。
  • TFM (英語) – ターゲット フレームワーク モニカー (Target Framework Moniker) のことで、目的のフレームワークとバージョンを指すモニカー名 (文字列) です。たとえば、net462 (.NET 4.6.2)、net35 (.NET 3.5)、uap (Universal Windows Platform) などがあります。詳細については、こちらのブログ記事 (英語) を参照してください。TFM を選択すると、使用可能な API と、コードを実行するフレームワークが決まります。
  • NuGet (英語) – NuGet は .NET をはじめとするマイクロソフト開発プラットフォーム向けのパッケージ マネージャーです。NuGet クライアント ツールを使用して、パッケージを生成したり利用したりすることができます。NuGet Gallery はパッケージの中央リポジトリで、すべてのパッケージの作者とユーザーが使用できます。
  • アセンブリ (英語) – 一般にコンパイルされたコードが格納された DLL または EXE のことです。アセンブリは .NET Full Framework アプリケーションの構成要素で、デプロイメント、バージョン管理、再利用、アクティベーションのスコープ指定、セキュリティ許可の基本単位となります。.NET Core では、アセンブリとさらにメタデータが格納された NuGet パッケージが基本単位となります。
  • .NET Standard (“netstandard”) (英語).NET Standard (英語) はバイナリ互換フレームワーク間の参照を簡素化します。1 つのフレームワークから他の複数のフレームワークを参照できます。.NET Standard Library はすべての .NET ランタイムで使用可能な .NET API の正式仕様です。
  • .NET Framework .NET Core の違い (英語) – .NET Framework は Windows アプリと Windows システム向けである一方、.NET Core はサーバー アプリ、コンソール アプリ、Web アプリ向けのより小さなクロス プラットフォーム フレームワークで、他のシステムを構築するコア ランタイムです。

知っておくべきこと (任意)

  • CLR – 共通言語ランタイム (Common Language Runtime) のことで、マイクロソフトの .NET Framework の仮想マシン コンポーネントで、.NET プログラムの実行を管理します。実行時コンパイルはコンパイルされたコードをマシンに対する命令に変換し、コンピューターの CPU がこれを実行します。
  • CoreCLR (英語) – .NET ランタイムです。.NET Core が使用します。
  • Mono (英語) – .NET ランタイムです。Xamarin などが使用します。
  • CoreFX (英語) – .NET クラス ライブラリです。.NET Core が使用します。Mono もソース共有に使用します。
  • Roslyn (英語) – C# と Visual Basic のコンパイラです。ほとんどの .NET プラットフォームやツールが使用します。ソース コードの読み取り、作成、分析用の API を提供します。
  • GC – ガベージ コレクション (Garbage Collection) のことです。.NET は GC によってプログラムの自動メモリ管理を提供します。GC はメモリ管理に対して緩いアプローチを取っており、メモリの即時回収よりもアプリケーションのスループットに重点を置いています。.NET GC の詳細については、「ガベージ コレクションの基礎」を参照してください。
  • “マネージ コード” – マネージ コードは、実行が CLR のようなランタイムによって管理されているコードのことです。
  • IL – 中間言語 (Intermediate Language) のことで、高水準の .NET 言語で書かれたコードのコンパイルにより生成されます。たとえば、C# が「りんご」だとすると、IL は「りんごソース」で、JIT と CLR は「りんごジュース」と考えることができます。 😉
  • JIT – 実行時コンパイラ (Just in Time Compiler) のことです。IL をコンパイルしてネイティブ コードとして実行する準備をします。
  • .NET がある場所ですが、.NET Framework は C:\Windows\Microsoft.NET に、.NET Core は C:\Program Files\dotnet にあります。Mac では通常 /usr/local/share にあります。.NET Core はアプリケーションとバンドル可能で、アプリケーションのディレクトリに自己完結型アプリケーション (英語) として格納されます。
  • 共有フレームワークと自己完結型アプリの違い – .NET Core は共有フレームワーク (同じマシンの複数のアプリが共有) を使用できますが、アプリケーションはそれ自体で自己完結型にすることができます。「xcopy でデプロイ可能、bin でデプロイ可能」という言葉を耳にすることがあるかもしれませんが、これはそのアプリが完全に自己完結しているという意味です。
  • async await (英語) – キーワードの async と await は、長時間実行 (待機) する関数呼び出し (データベースのクエリや Web サービスの呼び出し) のスレッドを解放する IL を生成します。これによりシステム リソースが解放されるので、待機中もメモリやスレッドなどを大量に消費せずに済みます。
  • Portable Class Libraries – 「最小公倍数」的なライブラリで、プラットフォーム間でコードを共有できます。PCL はサポートされていますが、パッケージ作成者は代わりに netstandard をサポートする必要があります。.NET Platform Standard は PCL の進化系で、プラットフォーム間でのバイナリの移植性を実現します。
  • .NET Core は以下の部分からなります。
    • .NET ランタイム (英語) – 型システム、アセンブリの読み込み、ガベージ コレクター、ネイティブの相互運用性、その他の基本的なサービスを提供します。
    • フレームワーク ライブラリ群 (英語) – プリミティブ データ型、アプリケーションの構成タイプ、基本的なユーティリティを提供します。
    • SDK ツール群 (英語)言語コンパイラ (英語) – 基本的な開発作業を可能にします。.NET Core SDK に含まれています。
    • ‘dotnet’ アプリ ホスト – .NET Core アプリの起動に使用されます。ランタイムを選択し、ホストし、アセンブリ読み込みポリシーを提供し、アプリを起動します。同じホストを使用してほぼ同じ方法で SDK ツールを起動することもできます。

知っておくとよいこと

  • GAC – グローバル アセンブリ キャッシュ (Global Assembly Cache) のことで、Windows 上の .NET Framework が共有ライブラリを保管する場所です。”gacutil /l” で内容を一覧表示できます。
  • アセンブリの読み込みとバインド – 複雑なアプリでは、アセンブリを面白い方法でディスクから読み込むことができます。
  • プロファイリング (メモリ消費量、GC など) (英語) – C# や .NET のコードを評価 (プロファイリング) できる優れたツールがたくさんあります。このようなツールが Visual Studio には多数用意されています。
  • LINQ – 統合言語クエリ (Language Integrated Query) のことで、オブジェクトやデータベースを宣言的にクエリする高度な手段です。
  • CTS と CLS 共通型システム (Common Type System) と共通言語仕様 (Common Language Specification) のことで、オブジェクトがどのように使用され、渡されるかを .NET が機能するあらゆる場所で機能するよう相互運用可能な形で定義します。CLS は CTS のサブセットです。
  • .NET Native (英語) – いつの日か中間言語ではなく、ネイティブ コードにコンパイルできるようになるでしょう。
  • .NET のロードマップ (英語) – 2017 年の .NET の展望です。
  • モダン” C# 7 (英語) – C# には毎年新機能が実装されます。最新版は C# 7 で、優れた機能が多数揃っているのでぜひご覧ください。
  • Reactive Extensions (英語)– Reactive Extensions (Rx) は、監視可能なシーケンスと LINQ スタイルのクエリ演算子を使用して非同期かつイベント ベースのプログラムを作成するためのライブラリです。LINQ スタイルの演算子をデータ ストリームに適用して、クリーンかつ非同期に実行する洗練されたイベント ベースのプログラムを作成できます。

注: 一部の文章は、そのトピックに関する Wikipedia の記事から引用し簡潔にまとめたものです。Creative Commons 表示 – 継承 3.0 非移植。一部の文章は、こちらの .NET ドキュメントから引用しています。この記事は、ブログへのリンクやテキストをまとめたものです。一部の内容は筆者独自の考えですが、多くは異なります。


謝辞: この場を借りて、Raygun に感謝したいと思います。既に 40,000 人を超える開発者が Raygun でアプリを監視しています。ぜひ皆様もお使いください。ソフトウェア アプリケーションのエラー、クラッシュ、パフォーマンスに関する問題の根本原因を知ることができます。インストールはわずか数分で済みます。さっそくお試しください (英語) !

寄稿者について

719c91f5c3013e43ee46ed2bdc67f883 Scott Hanselman は、大学教授やファイナンスのチーフ アーキテクトを務めた経験を持ち、現在は講演者やコンサルタントとして活動しています。また、父親、糖尿病患者でもあるマイクロソフト社員です。コメディアンとしては失敗しましたが、コーンロウ ヘアーのスタイリスト、著者としての肩書も持っています。

 


Visual Studio 2017 リリース & 20 周年記念イベントのご案内

$
0
0

本記事は、マイクロソフト本社の The Visual Studio Blog の記事を抄訳したものです。
【元記事】 Join Us: Visual Studio 2017 Launch Event and 20th Anniversary 2017/2/9

 

私がマイクロソフトに入社したのは 25 年前にもなります。Access チームの開発者としてキャリアをスタートし、その後、Visual InterDev という新製品の開発に携わりました。数あるマイクロソフト製品の中でも「Visual」の部分が強調されていたのが印象的で、これが現在の Visual Studio にまで長きにわたって続いています。

そして本日、Visual Studio がついに 20 周年を迎えました。20 歳を祝うときです! この大きな節目に発表させていただくのが、最新バージョンの Visual Studio 2017 で、リリースは 3 月 7 日を予定しています。

私は Visual Studio の初版の開発に携わっていましたが、その当時大きな目標として掲げていたのは、クライアント、サーバー、Web 用のアプリケーションの構築に開発者が必要としていたすべての機能をまとめて提供することでした。そして 20 年前の 1997 年 1 月 28 日、Visual Studio 97 をリリースすることが発表されました。あらゆる開発者を想定して開発された、最高レベルの生産性ツールをまとめた単一の製品です。これは簡単な仕事ではありませんでした。Visual Basic、Visual C++、Visual J++, Visual FoxPro、Visual InterDev を 1 つの製品にまとめて提供することは困難をきわめました。しかしながら、当時のチームがリリースしたこの製品は、その後 20 年にもわたって世界中の開発者に愛される素晴らしい生産性ソリューションとして、最初の一歩を踏み出したのです。

Visual Studio はその後年月を経て、IDE から、Visual Studio Team Services や Visual Studio Code といった多様な製品やサービスを含むスイート製品へと成長しました。Visual Studio 製品ファミリはプラットフォームの壁を越えて成長し、Android、iOS、Linux、MacOS、Windows にまたがるモバイル ファースト、クラウド ファーストのアプリの開発に貢献しています。また、Azure クラウドとの緊密な統合により、多種多様なプロジェクトで業界最先端の DevOps の手法を実現しています。

3 月 7 日に最新バージョンの Visual Studio 2017 がリリースされますが、これと同時に 2 日間のローンチ イベントがライブ ストリーム (https://launch.visualstudio.com、英語) で開催されます。このイベントでは、私のほかに、Brian Harry、Miguel de Icaza、Scott Hanselman が登壇し、Visual Studio、.NET、Xamarin、Azure、その他の製品の最新技術についてお伝えする予定です。皆様には、この製品の重要な改良点にフォーカスしたデモ セッションにご参加いただくチャンスがあります。また、3 月 8 日には、新たなユーザー向けにライブ トレーニングを終日配信する予定です。さまざまなトピックの中からセッションをお選びいただけます。こちらでスケジュールをチェックしておいてください (英語)

Visual Studio を初めてお使いの方も、これまでずっとご利用いただいていた方も、この機会にぜひ声をお聞かせください。電話や動画などで Visual Studio に関するご意見をお寄せください。

  • Visual Studio をこれまでどのくらい使用していますか?
  • あなたがこれまでに作成した中で最高のソフトウェアはどのようなものですか?
  • Visual Studio についてお気に入りの点を教えてください。
  • お祝いメッセージをいただけますか? また、「Happy Birthday, Visual Studio」を皆様の国や地域の言語で教えてください。

以下の動画を参考にしていただければ幸いです (Sara Ford の例)。

ステッカー、T シャツ、マグカップ、ポスター、ボタンなど、心に残る記念品をお持ちですか? #MyVSstory というハッシュタグをつけて、InstagramTwitter、Facebook にあなたのストーリーをショート ビデオやコメントで投稿してください。

たくさんのストーリーをお待ちしています!

Julia Liuson (Visual Studio 担当コーポレート バイス プレジデント)

Julia Liuson は開発者向けのツールやサービスを担当しています。幅広いソフトウェア開発者向けのプログラム言語やランタイム、Visual Studio や Visual Studio Code、.NET Framework 系列の製品やサービスの設計を行っています。マイクロソフトには 1992 年に入社し、Visual Studio Business Applications 担当ゼネラル マネージャー、上海のサーバーおよびツール部門担当ゼネラル マネージャー、Visual Basic 担当開発マネージャーなどのさまざまな技術職や管理職の経歴を持ちます。

 

業界の先進企業が実施するモバイル アプリ変革

$
0
0

本記事は、マイクロソフト本社の The Visual Studio Blog の記事を抄訳したものです。
【元記事】 How do industry leaders set their mobile apps apart? 2017/2/16

 

技術革新とユーザー レベルの向上により、アプリ品質に要求される水準はこの数年間で大幅に上昇しています。各業界の先進企業では、ユーザーのハイレベルな要望に対応し企業間競争で優位に立つために、(1) ありふれたアプリから優れたモバイル エクスペリエンスへの転換、(2) 単純なデータ対応型機能から学習や改良ができるインテリジェントなデータ駆動型アプリへの進化、(3) 一体型アプリから機能に特化したアプリのモバイル ポートフォリオへの移行という 3 つの大きな変革に投資しています。ぜひ今回ご紹介するアイデアを、お客様のモバイル エクスペリエンス刷新やビジネスの成長にお役立てください。

今回ご紹介する戦略の詳細にご興味がある方は、電子ブック『モバイルで競争を優位に: モバイル DevOps とクラウドでアプリを差別化する方法 (英語)』をお読みください。

変革 1: ありふれたアプリからすばらしいエクスペリエンスへ

ユーザーがまた利用したくなるアプリ

標準的な機能型アプリはもはや時代遅れです。一般、企業を問わず今日のモバイル ユーザーは、使いやすいユーザー インターフェイス、地理情報、その他の「普通の」アプリ機能では満足できません。ユーザーは、高速で関連性が高くパーソナライズされた機能を持ち、どんなデバイスでも使用できる、完全にネイティブなモバイル アプリを求めています。

Bloomin’Brands, Inc. では、モバイル アプリを活用してファミリー レストランでのエクスペリエンスを刷新し、顧客ロイヤリティを高めてリピート顧客を獲得しています。同社の Outback Steakhouse ブランドが提供する Outback Steakhouse アプリでは、最寄りの店舗検索、予約、自動チェックイン、席の確保、会計、割引の適用など、一連のアクションを顧客がすばやく簡単に行うことができます。

次のビデオでは、ユーザーから高評価を得ている Outback Steakhouse のアプリをご覧いただけます。

すべてのユーザーに同じレベルを提供

もはや、アプリに「企業向け」「一般向け」の差はありません。社員は、個人用アプリと同様のシームレスで便利なエクスペリエンスを業務用アプリに求めています。IT 担当者がそれに応えられなければアプリは使われなくなり、企業の努力や投資は無駄になってしまいます。

Alaska Airlines では、従業員にも顧客と同じレベルを提供するという基準を定め、顧客のユーザー エクスペリエンスを反映した従業員向けアプリ ポートフォリオを採用しています。たとえば、社内アプリの Hopper では、従業員がどこからでも旅費手当にアクセスしたり、自動的にチェックインしたり、運航状況を確認したり、モバイル搭乗券を受け取ったりできます。

次のビデオでは、顧客のエクスペリエンスを従業員向けアプリに採用した Alaska Airlines の例をご覧いただけます。

変革 2: データ対応型アプリからデータ駆動型インテリジェンスへ

あらゆるデータの活用

高品質なアプリでは、単純にデータの入力や編集を行うだけではなく、データから得たインテリジェンスを活用することができます。たとえば、ユーザーの特定、アプリの操作内容の追跡、顧客の購入内容の把握などの多様な機能を備えています。企業はこの情報を利用してトレンドを掴み、顧客ロイヤリティや従業員の満足度の向上、ビジネス上の意思決定などに活用できます。

Nuvem Tecnologia では、モバイルとクラウドを組み合わせて、各地の農家におけるビッグ データ機能の活用を実現しました。同社の AgroSIG アプリでは、ブラジル全土の農家の複雑な農作業プロセスを近代化し、農業データの集約とミスが発生しやすい紙媒体レポートの排除を実施しました。デバイスで撮影した写真と GPS を利用した履歴データの分析結果から害虫被害を把握することで、農家は情報を元にリアルタイムで意思決定し、収穫量を増加させることができます。

次のビデオでは、Nuvem Tecnologia のデータ活用による農作業プロセスの改善をご覧いただけます。

変革 3: 単一アプリから複数アプリのポートフォリオへ

イノベーション ハブの構築

3 つ目は、モバイル アプリのエクスペリエンスではなく、ビジネスの構築とアプリの更新方法の変革です。企業のビジネス戦略の中心要素としてモバイル戦略は不可欠です。その変革のステップとして、従来の一体型アプリから役割ごとまたは機能ごとに特化したアプリのポートフォリオに移行することが重要となります。

先進企業では、反復的に自動化されたプロセスを確立することで、フィードバック収集とリリースのサイクルを迅速化し、新規プロジェクトの提供や既存アプリの継続的な改良を行っています。

Dutch Railways は、「すべてをこなせる」重い一体型アプリから単機能の軽量なアプリに移行するというモバイル エクスペリエンスの再構築のトレンドを取り入れています。同社では、以前使用していた時代遅れの Rail Pocket という通信システムを新規デバイス向けに再設計する代わりに、タイム シート、時刻表、ログの保守などの各機能に特化した 8 種類のアプリを開発しました。これにより、Dutch Railways ではアプリの改良や新機能の追加を迅速かつ容易にできるようになりました。

次のビデオでは、7,000 人以上が利用する情報量豊富な Dutch Railways の社内アプリの構築のようすをご覧いただけます。

まとめ

モバイル ファーストの世界では、ユーザーの要望やビジネス ニーズは常に変化しています。成功を収めている業界の先進企業は、このような変化を受け止めてビジネスに応用しています。競争力を維持し新しいモバイル エクスペリエンスを提供する方法については、電子ブック『モバイルで競争を優位に: モバイル DevOps とクラウドでアプリを差別化する方法 (英語)』をお読みください。

Cormac Foster (シニア製品マーケティング マネージャー)

Cormac Foster はモバイル製品マーケティングを担当しています。マイクロソフトに移籍する前は Xamarin に勤務し、アナリスト関係管理およびソート リーダーシップを担当していました。また、Xamarin で勤務する以前はソフトウェアのテスト、研究、マーケティングなどさまざまな業務を担当していました。

 

Productivity Power Tools for Visual Studio 2017 のリリースを発表

$
0
0

本記事は、マイクロソフト本社の The Visual Studio Blog の記事を抄訳したものです。
【元記事】 Productivity Power Tools for Visual Studio 2017 2017/3/6

 

明日に迫った Visual Studio 2017 のリリース (英語) に先立ち、Productivity Power Tools for Visual Studio 2017 がリリースされました。このため Visual Studio 2017 のリリース初日から皆様のお気に入りの生産性機能をすべてご利用いただくことができます。

Productivity Power Tools は、Visual Studio IDE の開発者エクスペリエンス向上を目的とした複数の拡張機能をまとめたもので、公式にはサポートされていないもののマイクロソフトがテストしている最中の新機能をお試しいただける便利なツールです。Productivity Power Tools が作成された経緯については、こちらのページ (英語) をご覧ください。

新たに追加された機能

今回のリリースの主な目的は、Productivity Power Tools の各機能を個別の拡張機能に分割することでした。これにより、使用するコンポーネントのみを手動で選んでインストールできるようになるため、ツールの入手方法と管理方法をより柔軟に選択して、個々の拡張機能を好きなペースで更新、配信できるようになります。また、これには、マイクロソフトが各拡張機能の人気度を監視できるというメリットもあります。特に人気が高い機能については、Visual Studio の今後のバージョンに含めることが検討されます。

以下は、Visual Studio 2017 用の拡張機能として個別にリリースされた機能の一覧です。

  1. Align Assignments (英語): 代入ステートメントの表示を揃えるコマンドを追加します。既定のショートカットは Ctrl + Alt + ] です。
  2. Copy as HTML (英語): 選択したエディターのテキストをクリップボードに HTML 形式でコピーする機能を追加します。
  3. Ctrl+Click Go To Definition (英語): Ctrl キーを押しながらクリックすると、カーソルが置かれている識別子の「定義へ移動」します。
  4. Custom Document Well (英語): Visual Studio のドキュメント タブの動作を設定できるようにします。
  5. Double-Click Maximize (英語): ウィンドウのヘッダーをダブルクリックすると、ウィンドウを最大化またはドッキングできます。
  6. Editor Guidelines (英語): エディターに垂直グリッド ガイドを追加します。
  7. Fix Mixed Tabs (英語): タブとスペースが混在する場合に検出し、自動的に修正するように提案します。
  8. Match Margin (英語): キャレットが置かれている単語に一致するテキストについて、スクロール バーにマーカーを表示し、エディター内のテキストを強調表示します。
  9. Middle Click Scroll (英語): エディター ウィンドウでマウスの中央クリック ボタンによるスクロールを有効にします。
  10. Peek Help (英語): F1 ヘルプをエディターにインラインで表示するコマンドを追加します。既定のショートカットは Alt + F1 です。
  11. Power Commands for Visual Studio (英語): Visual Studio IDE 用の便利な拡張機能セットです。Remove and Sort Usings (Using の削除と並べ替え)、Copy Path (パスのコピー)、Open Command Prompt (コマンド プロンプトの表示) などが含まれます。
  12. Quick Launch Tasks (英語): クイック起動ツールのアクセス性を向上させ、タスクを設定する機能を追加します。
  13. Shrink Empty Lines (英語): エディターにより多くの行を表示できるように、テキストや数字を含まない行を縮小します。
  14. Solution Error Visualizer (英語): ソリューション エクスプローラーでエラーと警告を強調表示します。また、エラーの種類によってソリューション エクスプローラーの表示をフィルタリングすることもできます。
  15. Time Stamp Margin (英語): デバッグ出力ウィンドウにタイム スタンプを表示する余白を追加します。

上記の拡張機能は、Visual Studio Marketplace (英語) または IDE の [拡張機能と更新プログラム] ダイアログからダウンロードしてインストールできます。

すべての拡張機能を一括でインストールする場合は、Productivity Power Tools 2017 インストーラー (英語) をご利用ください。このバンドル インストーラーは、Mad Kristensen による Web Extension (英語) へのアプローチをヒントにしたもので、Productivity Power Tools for Visual Studio 2017 スイートに含まれるすべての拡張機能をインストールします。

動作方法: この拡張機能は、Visual Studio の起動時に毎回バックグラウンドで実行され、インストールされていない Productivity Power Tools の拡張機能がないかどうかを確認します。インストールされていない拡張機能がある場合は、自動的にダウンロードとインストールが開始され、その進捗状況を示すダイアログ ボックスが表示されます。

一括インストールされた拡張機能のうち、使用しないものについては、[ツール]、[拡張機能と更新プログラム] の順に選択して、個別に無効化またはアンインストールできます。

削除された機能

Productivity Power Tools 2017 には、Structure Visualizer は含まれていません。Structure Visualizer の一部の機能は非常に人気が高かったため、製品に実装されました。Visual Studio 2017 には、Structure Guidelines という新機能が追加され、複数の言語について既定で有効になっています。この機能では、コード ブロックの構造に合わせてエディターに縦線が表示されます。これらの縦線にカーソルを合わせると、そのブロックのすべての先祖ブロックを示すヒントがポップアップ表示されます。

この機能は、[ツール]、[オプション] の順に選択して、有効/無効を切り替えることができます。[オプション] ページで [テキスト エディター] を選択し、[表示] から [構成ガイドラインを表示する] のチェック ボックスをクリックします。

変更された機能

Custom Document Well の更新により、ドキュメント タブの位置を指定することで、開いているドキュメントに直接移動するコマンドがすべて表示されるようになりました。既定では、Window.GoToPinnedTab[X] のコマンドには Ctrl + [テンキーの X]、Window.GoToUnpinnedTab[X] のコマンドには Ctrl + Alt + [テンキーの X] のショートカットが割り当てられています。これらのコマンドが表示されたことで、それらのコマンドに任意のショートカットを割り当て直すことができます ([ツール]、[オプション]、[キーボード] の順に選択)。

ヒント: テンキーを搭載していないノート PCを使用している場合は、Window.GoToUnpinnedTab[X] コマンドに Ctrl + 1 ~ 0 を割り当てることができます (これらは、大半の Web ブラウザーで、タブの位置を指定して直接移動するために使用されるショートカットです)。
ただし、次の点に注意してください。Ctrl + 1 を割り当てた場合、Visual Studio 2017 の既定のショートカットである「ファイル/型/メンバー/シンボルへ移動」が削除され、Ctrl + 0 を割り当てた場合、Team Explorer のショートカットの多くが削除されるため、それらのコマンドにも併せてショートカットを割り当て直すことをお勧めします。

サポートとご協力のお願い

Visual Studio 2017 の Productivity Power Tools をぜひご活用ください。コードの大部分はオープン ソースです。皆様のご協力 (英語) をお待ちしてします。例として、先日 Francesco Buldo 氏から寄せられた Ctrl+Click Go To Definition のバグ修正 (英語) のフィードバックは、その日のうちに承認され、リリースされました。

ご提案がある場合やサポートが必要な場合には、GitHub の Productivity Power Tools リポジトリでイシューを作成 (英語) してお知らせください。

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

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

 

Visual Studio 2017 の一般提供開始、その他リリース情報を発表

$
0
0

本記事は、マイクロソフト本社の The Visual Studio Blog の記事を抄訳したものです。
【元記事】 Announcing Visual Studio 2017 General Availability… and more 2017/3/7

 

今、画期的な開発ツールが新たにリリースされようとしています。Visual Studio の月間アクティブ ユーザー数 25% 増、Visual Studio Code の月間アクティブ ユーザー数 130 万人、Mac IDE のアクティブ ユーザー数 2 倍という数字を見て思うのは、ユーザーの皆様も私と同じく今回のリリースにたいへん期待を寄せられているのではないかということです。

Visual Studio 2017 Release Candidate はリリース以降、約 700,000 ダウンロードを記録しており、開発チームはお客様からのフィードバックを参考にしながらユーザー エクスペリエンスを強化し、これまでで最も強力で生産性の高い Visual Studio をお届けしようと取り組んできました。また、Visual Studio ファミリのツールにも改良を加えています。11 月には、Visual Studio for Mac と Visual Studio Mobile Center のプレビューもリリースし、Visual Studio Team Foundation Server 2017 の一般提供も開始しました。

そしてついに、これまでの取り組みの成果を披露する日がやってきました。Visual Studio 2017 の一般提供が本日より開始されることを発表します。本日からどなたでも Visual Studio 2017 ダウンロードしていただけます! なお、今回 Visual Studio 製品ファミリ全体でも更新を行い、Visual Studio サブスクライバーと Visual Studio Dev Essentials メンバーの皆様には新たな機能が提供されます。

Visual Studio 2017: これまでで最も高い生産性を実現

Visual Studio 2017 では、重要な部分、主に基本要素の改良を重視して投資を行いました。

クラウド開発およびモバイル開発は、Visual Studio 2017 を設計する中で最も重要なテーマでした。クラウド開発を合理化するために、組み込みのツールに .NET Core、Azure アプリケーション、マイクロサービス、Docker コンテナーといったあらゆる機能を統合させ、アプリケーションやサービスの開発とデプロイを IDE から直接行いやすくしました。また、Xamarin に対応し、高度なデバッグ ツールやプロファイリング ツールで Android 用、iOS 用、Windows 用のモバイル アプリを迅速に開発できるようにしました。

さらに、アプリケーションやプロジェクトの規模が大きくなるにつれ Visual Studio の高速化と軽量化という要望が強くなってきたことから、モジュール式の軽量なインストール エクスペリエンスを新たに導入しました。機能強化もいくつも行い、Visual Studio 全体にわたってパフォーマンスを向上させました。また、開発チームが最新の DevOps プラクティスを簡単に導入できる新機能を搭載し、市場の変化にすばやく継続的に対応できるようにしました。さらに、開発者の能力を活かす幅を広げるために、Visual Studio Enterprise 2017 に Redgate Data ツールを導入し、DevOps に自身のデータベースを組み込み、リリース サイクルを短縮できるようにしました。

ぜひ Visual Studio 2017 をダウンロード (英語) のうえお試しください。皆様からのフィードバックをお待ちしています。Visual Studio 2017 の詳細情報については、John Montgomery のブログ記事 (英語) をご覧ください。

Visual Studio for Mac、Visual Studio Team Foundation Server、Visual Studio Mobile Center の更新

Visual Studio Team Services の登録ユーザー数は 500 万人を数え、Mac IDE はこの 6 年間でダウンロード数が 2 倍に増加しました。このことから、私たちは Visual Studio ファミリの可能性を多くのお客様に認識していただくことができたと自負しております。そして本日、マイクロソフトは次の段階として、Team Foundation Server 2017 Update 1、Visual Studio for Mac Preview 4、Visual Studio Mobile Center Preview の更新版をリリースしました。

  • Visual Studio for Mac Preview 4: Visual Studio for Mac は、モバイル用、クラウド用、macOS 用の開発に使用できる Mac 用の IDE です。11 月中旬に開催した Connect(); での発表後、開発チームでは新たな .NET Core プロジェクトのサポートの追加、NuGet およびモバイル ツールの改良、不具合の修正やパフォーマンス最適化に積極的に取り組んできました。Visual Studio for Mac の変更内容の詳細については、Miguel のブログ記事 (英語) を参照してください。また、製品をお試し (英語) いただき、ぜひフィードバックをお寄せください。
  • Visual Studio Team Foundation Server 2017 Update 1: 本日、すべての開発者にご利用いただける共同作業プラットフォーム Team Foundation Server 2017 Update 1 をリリースしました。Team Foundation Server 2017 Update 1 では、新しいプロセス テンプレート管理エクスペリエンス、パッケージ管理での npm のサポート、高度なリポジトリのアクセス許可管理、プル リクエストの改良、テスト影響分析、ブランチ ポリシーの改良、ホーム ページのパーソナライズなどの新機能が追加されました。Team Foundation Server 2017 の新機能のさらに詳しい情報については、Brian Harry のブログ記事 (英語) をご覧ください。
  • Visual Studio Mobile Center Preview の更新: Mobile Center の更新版では、Swift、ObjectiveC、Java 以外にもモバイル アプリのサポートが拡張され、Xamarin や React Native でのモバイル アプリ開発が可能になり、分析機能も強化されました。Visual Studio Mobile Center Preview は本日よりこちら (英語) から無料でダウンロードできます。

Visual Studio Enterprise サブスクライバーおよび Visual Studio Dev Essentials メンバー向けの新機能

Visual Studio 2017 では、Visual Studio Enterprise サブスクライバーと Dev Essentials メンバー向けに新たな価値が提供されます。Enterprise DevOps Accelerator には、DevOps を大規模に実装し、ツールチェーンを進化させるために必要なあらゆるものが提供されます。Visual Studio Enterprise、継続的インテグレーション (CI) やクラウド ベースの負荷テストを含む継続的なデプロイメント サービス、HockeyApp によるベータ版配信、Azure コンピューティング リソースの割引、エキスパートによるオンサイトでの DevOps の指導などさまざまです。詳細についてはこちら (英語) を参照してください。さらに、Visual Studio サブスクライバー (英語) および Dev Essentials (英語) メンバーの皆様は、それぞれのポータルでマイクロソフトやパートナーが提供する高度なトレーニングやサポートを受けられます。

Visual Studio 2017 にぜひご期待ください。ダウンロードはこちらから可能です。お試しのうえ、ご意見をお聞かせください。

julia-liuson-2 Julia Liuson (Visual Studio 担当コーポレート バイス プレジデント)

Julia Liuson は開発者向けのツールやサービスを担当しています。幅広いソフトウェア開発者向けのプログラム言語やランタイム、Visual Studio や Visual Studio Code、.NET Framework 系列の製品やサービスの設計を行っています。マイクロソフトには 1992 年に入社し、Visual Studio Business Applications 担当ゼネラル マネージャー、上海のサーバーおよびツール部門担当ゼネラル マネージャー、Visual Basic 担当開発マネージャーなどのさまざまな技術職や管理職の経歴を持っています。

 

Visual Studio 2017 をリリース: 生産性、パフォーマンス、パートナー エコシステムの強化

$
0
0

本記事は、マイクロソフト本社の The Visual Studio Blog の記事を抄訳したものです。
【元記事】 Visual Studio 2017: Productivity, Performance, and Partners 2017/3/7

 

このたびマイクロソフトは、Visual Studio 2017 をリリースしました。こちらからダウンロードを開始 (英語) のうえ、この記事で今回提供される主要機能の情報をご確認ください。今回のリリースによる変更点の完全な一覧については、Visual Studio 2017 のリリース ノートをご覧ください。この記事では、以下の点についてご紹介します。

基本機能: 生産性とパフォーマンス

起動時間とプロジェクト読み込み時間の短縮: 複数の基本機能を強化した結果、Visual Studio 2017 では起動時間が Visual Studio 2015 の 3 分の 1 に短縮されました。また、ソリューションの読み込み時間が 2 分の 1 から 4 分の 1 に短縮されたほか、VC++ ブログ (Ankit Asthana 執筆、英語) で触れたとおり、特に C++ プロジェクトでビルド パフォーマンスが高速化されました。これらの強化点の詳細については、Dan Taylor の記事「Visual Studio の全体的な応答性向上」をご覧ください。

ナビゲーションの強化: Visual Studio 2017 では、[Go to All]、[Find All References]、インデント ガイドなど、コード内のナビゲーション機能が大幅に強化されました。たとえば、これまで [Find All References] の検索結果は [Results] ウィンドウにフラット リストとして表示されていましたが、Visual Studio 2017 では検索結果が色分けされるほか、カスタムのグループ化、並べ替え、フィルタリング、検索機能を使って目的の参照をすばやく見つけることができるようになりました。中でも強力なのは、完全に刷新された [Go to All] (Ctrl + T または Ctrl + ,) 機能です。[Go to All] では、ソリューション内のファイル、型、メンバー、シンボルのすべての宣言をすばやく検索できます。検索バーの下部にあるアイコンを使用すると、検索結果をグループでフィルタリングしたり、検索範囲を調整したりすることができます。また、右下にある歯車アイコンをクリックすると、検索バーの配置、強調表示された結果を含むファイルのリアルタイムのプレビュー、各結果のファイルの詳細情報などの設定をカスタマイズできます。

go-to-all

Go To 関連のキーボード ショートカット

Go to All
(すべてに移動)
Go To Line
(行に移動)
Go To File
(ファイルに移動)
Go To Type
(型に移動)
Go To Member
(メンバーに移動)
Go To Symbol
(シンボルに移動)
ショートカット Ctrl + T
または Ctrl + ,
Ctrl + G Ctrl + 1、F Ctrl + 1、T Ctrl + 1、M Ctrl + 1、S
クエリの
プレフィックス
プレフィックスなし : f t m #

ソリューションを必要としないファイルの読み込み: お客様から寄せられたフィードバックに、プロジェクトやソリューションを開かずにファイルを編集できるようにしてほしいというご要望がありました。これにお応えして、Visual Studio 2017 では、C#、C++、Ruby、Go の各言語について、任意のファイルを開いて作業できるようになりました。利用可能なすべての機能の一覧については、Visual Studio で任意のフォルダーを開く方法 (英語) に関するブログ記事をご覧ください。

load-files

IntelliSense フィルタリング: IntelliSense に、目的のメンバーを簡単に絞り込むことができるフィルターが追加されました。このフィルタリング機能によって、相当な数の型の中からこれまでよりも簡単に必要なメンバーを見つけ出せるようになります。

intellisense

言語関連の機能強化 (リファクタリング、スタイル アナライザーなど): 多くの機能が追加されたため、ここでは各機能をごく簡単にご紹介したいと思います。新しい C# 言語のリファクタリング コマンドが追加され、最新の標準に合わせてコードを修正できるようになりました。新しいスタイル アナライザーと EditorConfig のサポートにより、チーム全体でコーディング標準を統一できるようになりました。WPF または UWP アプリケーションを実行しながら XAML を編集し、変更をリアルタイムで確認できるようになりました。C++ コンパイラと標準ライブラリが更新され、C++ 11 と C++ 14 の機能のサポートが強化されました。TypeScript と JavaScript の新しい言語サービスにより、両方の言語で標準的な最新の JavaScript 機能がサポートされ、高度な型推論が実装されました。

CMake での C++ のサポート: Visual Studio 2017 では、新たに CMake がサポートされました。Visual Studio で CMake プロジェクトを直接読み込んでコーディングを開始できます。CMake の構成は簡単に切り替えることができるほか、CMakeLists.txt ファイルと同じフォルダーにある CMakeSettings.json ファイルを使用して、さらに詳細な構成を行うこともできます。CMake のサポートの概要については、Visual C++ チームのブログ記事 (英語) や CMake に関する 10 分間の動画 (英語) をご覧ください。

Linux での C++ のサポート: 人気の高い拡張機能 Visual C++ for Linux Development が、Visual Studio 2017 の一部として実装されました。Linux での C++ 開発の詳細については、Visual C++ チームのブログ記事 (英語)こちらの動画 (英語) をご覧ください。

ライブ ユニット テスト: ライブ ユニット テストとは名前のとおり、直前のコード編集のユニット テスト結果をリアルタイムで表示できる機能です。ユニット テストはコード エディターを表示したまま実行できます。Visual Studio 2017 のライブ ユニット テストの詳細については、こちらのブログ記事をご覧ください。

live-unit-testing

Run to Click (クリックで実行): 通常、デバッグ時には一時的なブレークポイントを使用する方法が一般的ですが、Run to Click を使うとはるかに便利です。デバッガーがブレーク状態で停止している間、コード行にマウス ポインターを合わせると、Run to Click グリフ (アイコン) が表示されます。そのグリフをクリックすると、コードの実行が継続され、その行で停止します。

run-to-click

例外ヘルパー: 例外ヘルパーが追加されました。これにより、例外の根本原因を瞬時に確認できるほか、コンパクトなモードレス ダイアログから内部例外にすぐにアクセスできます。さらに、その種類の例外がスローされた場合に中断するように設定したうえで、特定のモジュールを除外できるようになりました。スローされた例外によって停止している間に、チェック ボックスをオンにして条件を追加できます。

exception

インストールのサイズ縮小と軽量化: 新しいインストーラーが採用され、Visual Studio 2017 を簡単にセットアップして利用を開始できるようになりました。最小インストールは、以前のバージョンのわずか 10 分の 1 のサイズで、1 ~ 2 分でインストールできます。すぐに利用を開始できるように、必要なフレームワークとツールのみを簡単にインストールできます。

優れたモバイル アプリケーション開発エクスペリエンス

Xamarin Forms Previewer: 開発において特に時間がかかるのは、コード行の記述 (ビルド) と動作の確認 (実行) を繰り返す作業です。リアルタイムでフィードバックを確認できれば、開発作業はより迅速になり、簡単で楽しいものになります。Xamarin Forms Previewer では、ページのライブ プレビューが XAML マークアップと並べて表示されるため、コードの入力に合わせて Visual Studio で実際のユーザー インターフェイスを確認することができます。

Xamarin Forms XAML IntelliSense の機能強化: Visual Studio 2017 では、Xamarin Forms の XAML ドキュメントに使用される IntelliSense が大幅に強化されました。新しい IntelliSense では、バインド、カスタム プロパティ、カスタム コントロール、コンバーターなどがサポートされます。

接続済みサービス: Visual Studio 2017 の新しい接続済みサービス エクスペリエンスでは、モバイル アプリケーションを Azure Mobile Apps のデータ ストレージや認証などのクラウド サービスに非常に簡単に接続することができます。プロジェクトにサービスを追加すると、必要なすべての依存関係と初期化コードがモバイル ターゲットに追加されます。

モバイル開発者向けに提供された最初の接続済みサービスでは、Azure App Service バックエンドにアプリを接続し、認証、プッシュ通知、オンライン/オフライン同期に対応したデータ ストレージなどのサービスを簡単に利用することができます。また、この機能を使用すると、Azure ポータルにアクセスしなくても、Visual Studio から直接新しい App Service を作成してプロビジョニングできます。

クラウドでの開発

.NET Core: Visual Studio 2017 では、新たに .NET Core 1.0 と 1.1 のアプリケーションの開発がサポートされました。ASP.NET Core と Entity Framework Core を含む .NET Core は、マイクロソフトのオープン ソース フレームワークで、Windows、MacOS、Linux 用のクラウドおよびサーバー アプリケーションやマイクロサービスを開発できます。ASP.NET Core は高速かつ軽量で、Tech Empower の Web ベンチマーク (英語) では、Java サーブレット、Node.js、Ruby、PHP を抑えて、最も高速な Web フレームワークのトップ 10 にランクインするスコアを記録しました。

dotnet-core

コンテナーのサポートの簡略化: コンテナー開発では、開発環境のセットアップと構成という反復作業を自動化できます。開発者は運用環境のマシンを複製する場合に、自分のマシンに複雑なソフトウェアをインストールしなくても、パッケージ化されたコンテナーとして依存関係を取り込む単純なファイルを利用できるようになりました。Visual Studio 2017 では、Windows と Linux の両方におけるコンテナー型アプリケーション開発がサポートされました。.NET Core および .NET アプリケーションは、作成中または作成後に単純な右クリック操作でコンテナー化できるほか、ローカルでの開発中にコンテナー内で実行、デバッグすることができます。

container-support

Azure App Service のサポート: Azure App Service は ASP.NET や ASP.NET Core でのホスティングを提供するもので、Visual Studio では App Service でのアプリケーションの発行とデバッグが強力にサポートされています。Visual Studio 2017 では、そのサポートが App Service の .NET Core コンテナー型アプリケーションのホスティングにも拡張されました。.NET と Visual Studio 2017 により、コンテナー開発がさらに容易になります。

azure-app-service

詳細については、.NET Blog の最新の記事 (英語) をご覧ください。

DevOps

Visual Studio 2017 では、バージョン管理や開発者分析ツールが改良され、Visual Studio から直接 CI/CD パイプラインを構成 (英語) できるようになるなど、DevOps 環境での作業におけるさまざまな点が改善されました。中でも特に注目なのが、Visual Studio での Git のサポートが改善されたことです。Visual Studio に新しい Git 機能が追加され、IDE を離れることなくエンドツーエンドでより幅広くワークフローを行えるようになりました。送信コミットの差分を表示したり、リベースを force push で完全に実行したり、修正したコミットをプッシュしたり、上流のブランチを削除したり、連続的にパッチを適用してリベースを実行するなどの作業を、Visual Studio からより簡単に実行できます。さらに git.exe に移行したことで、SSH がサポートされたほか、ユーザーの構成オプションを優先したり、コマンド ラインで表示される内容をチーム エクスプローラーで正確に表示するなど、最新機能を提供できるようになりました。

他にも、Visual Studio に Redgate Data ツールが組み込まれ、DevOps をソース コードだけでなくデータベース構成にも適用できるようになった点も注目です。Visual Studio 2017 の DevOps 機能を SQL Server のデータベースに拡張するには、データの格納と処理を行うワークロードをインストールする必要があります。

  • Redgate SQL Search (英語): Redgate SQL Search は複数のデータベースに存在する SQL の断片化やオブジェクトをすばやく発見するための機能で、Visual Studio 2017 のすべてのエディションで使用できます。
  • Redgate ReadyRoll Core (英語): Redgate ReadyRoll Core は Visual Studio Enterprise 2017 に含まれる機能で、移行スクリプトを開発したり、ソース管理を利用してデータベースの変更を管理したり、アプリケーションや SQL Server のデータベースの変更のデプロイを安全に自動化できます。
  • Redgate SQL Prompt Core (英語): Redgate SQL Prompt Core は Visual Studio Enterprise 2017 に含まれる機能で、SQL コードの作成、書式設定、リファクタリングをサポートします。高度なコード補完機能によって、SQL のコードをすばやく正確に作成できます。SQL Prompt は、データベースやシステムのオブジェクト、およびキーワードを自動的に補完したり、入力時に列の候補を示してくれます。このため、開発者はすべての列の名前やエイリアスを覚えておく必要がなくなり、コードが洗練されてエラーも減少します。

さらに、Visual Studio Enterprise サブスクリプションでは、オープン ソースの脆弱性管理およびライセンス確認ソリューションである WhiteSource Bolt と、サービス仮想化ソリューションである Parasoft を 6 か月にわたって使用できます。詳細については、新規サブスクライバー向けの特典に関する記事を参照してください。

Visual Studio のエコシステム

今日では多くのお客様が Visual Studio Marketplace (英語) で提供されているソリューションを利用して Visual Studio を拡張しています。本日の発表に合わせて、100 社以上のパートナーが新たな拡張機能を公開しました。これにより、Visual Studio 2017 では 700 以上の拡張機能をご利用いただけるようになっています (英語)

中でも特に人気なのが、マイクロソフトが提供している Productivity Power Tools という拡張機能です。昨年、Power Tools を再構成して個別の拡張機能のセットとして提供するための作業を行い、本日からその多くが Visual Studio 2017 でご利用いただけるようになりました。

vs-marketplace

また、Python Tools のプレビューも本日公開されました。ローカライズ作業を完了させ、すべての Visual Studio 2017 ユーザーに今後のマイナー アップデートを発行するために、ユーザーが確実に Python 用のツールを使用できるようにしました。

Visual Studio 2017 のご利用とフィードバックのお願い

Visual Studio 2017 は既にインストールしていただいたでしょうか? そうであればとても嬉しいです。インストールに関連して、お客様から次の 2 つの質問をよくいただくので、ここではそれについてお答えします。

  • Visual Studio 2017 Visual Studio 2015 と共存インストールできますか。はい。Visual Studio 2017 は、過去のバージョンの Visual Studio (2012/2013/2015) と共存させることができます。ただし、Visual Studio 2017 の RC 版 (Visual Studio “15”) やプレビュー版と共存させることはできません。
  • Visual Studio 2017 Visual Studio “15” Preview Visual Studio 2017 RC に上書きインストールできますか。Visual Studio 2017 RC や Visual Studio “15” Preview が既にインストールされているコンピューターでは、新しいインストーラーに [Update] ボタンが表示されます。このボタンをクリックするとインストールが開始されます。

Visual Studio 2017 のプレビュー版や RC 版のデータ サイエンス用ワークロードが必要な場合は、今後のバージョンで R のサポートが追加されるまでお待ちいただくこともご検討ください。

ご不明な点がありましたら、Visual Studio 2017 のよく寄せられる質問 (英語) に一般的な質問とその回答が掲載されていますのでご確認ください。互換性の詳細については、Visual Studio 2017 の互換性に関するドキュメントVisual Studio 2017 のシステム要件に関するドキュメントを参照してください。また、オフライン インストールの詳細については、こちらのドキュメント (英語) を参照してください。

Visual Studio 2017 には、数多くの新機能や機能強化が実装されました。このリリースに含まれる機能の完全な一覧と既知の問題については、Visual Studio 2017 のリリース ノートを参照してください。

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

最後に、Visual Studio 2017 ローンチ イベント (英語) のご案内です。このイベントではエンジニアリング チームによる製品デモが行われます。また、3 月 8 日にはライブ トレーニングを終日配信します。皆様のご参加をお待ちしています。

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

 

 

Mobile Center: Xamarin のサポート、詳細なアプリ分析、その他の情報

$
0
0

本記事は、マイクロソフト本社の The Visual Studio Blog の記事を抄訳したものです。
【元記事】 Mobile Center: Xamarin support, detailed app analytics, and more 2017/3/7

 

Connect(); で Visual Studio Mobile Center のプレビューを発表して以来、開発者コミュニティの皆様から寄せられた反響はすばらしいものでした。アカウントを作成し、このサービスを試し、フィードバックをお寄せくださった何千という開発者の皆様に感謝申し上げます。皆様のおかげで、ビルド、テスト、展開、監視というモバイル アプリ開発のあらゆる作業を簡単かつ効果的に行えるサービスを構築することができました。

現在は一般提供開始に向けて準備を進めています。ここに至るまでの間に、皆様からのフィードバックをロードマップに反映し、新しいサービスを追加すると共に、既存のサービスへの投資を強化し、エンジニアリング チームの規模を拡大してまいりました。この記事では、現時点の最新情報と今後の予定をご紹介します。

すべての開発者、すべてのアプリ、すべてのプラットフォームに対応

Mobile Center は、皆様がどんなツールセットを使用していても、どこにいてもご利用いただけます。iOS または Android アプリの開発を Objective-C、Swift、Java、React Native、Xamarin で行っている場合は、継続的インテグレーション (CI)、テスト、リリース管理、分析など、提供されるすべての機能を活用することができます。

mobile-center

完全なモバイル ライフサイクル管理

Mobile Center は、運用ではなくアプリ開発に集中できるように設計されており、モバイル アプリに必要な管理機能がすべて提供されます。具体的には、以下のビーコン サービスを使用します。

  • Build では、コードをコミットすると、クラウド ベースで自動的にビルドが行われます。Mac を使用せずに iOS アプリを自動的にビルドすることも可能です。
  • Test では、すべてのビルドについて、実際に使用されている数千ものデバイスとすべてのオペレーティング システムを対象とする UI テストが自動的に実行されます。サポート対象のフレームワークは、Appium、UITest、Calabash、Espresso など、多岐にわたります。これらのテストは CI パイプラインに直接統合されているため、コード変更の結果をほぼ瞬時に確認できます。
  • Distribute では、テストに合格したビルドをベータ テスターやアプリ ストアに自動的に移動できます。
  • Crashes と Analytics では、ユーザーが実際に使用しているアプリに関する詳細なリアルタイム データが提供されます。新しいトレンドを特定し、問題が発生する前にバグやパフォーマンスの問題を修正することができます。
  • Tables と Identity では、スケーラブルなバックエンド認証、同期、ストレージ ソリューションが提供されるため、関連するインフラストラクチャではなく、アプリの開発に集中することができます。

今後の予定

現在、製品ロードマップ (英語) に記載されたすべての機能を提供するべく作業を進めています。Mobile Center の今後のバージョンでは、ユニバーサル Windows プラットフォームおよび Cordova フレームワークへのサポートの拡大と、プッシュ通知の追加が予定されています。

Mobile Center は、プレビュー期間中は無料でご利用いただけます。まだお試しになっていない場合は、今すぐ無料でサインアップしてください。

keith Keith Ballinger (モバイル開発者向けクラウド サービス、プログラム マネジメント ディレクター)

Keith は以前、マイクロソフトが 2016 年 3 月に買収した Xamarin の製品担当バイス プレジデントを務めていました。当初の .NET チームの PM 時代を発端に、製品管理、起業、エンジニアリングの分野で優れた経歴を持っています。Xamarin に入社する前は、Y Combinator の投資を受けたスタートアップ企業の Standard Treasury でチーフ アーキテクトを務め、API ファーストのバンキング サービスを構築していました。著作に、『.NET Web Service: Architecture and Implementation (.NET Web サービス: アーキテクチャと実装)』、『Special Edition: Using ASP (特別版: ASP の使用、共著)』というプログラミングに関する 2 冊の書籍があります。

 

Visual Studio 2017 に Redgate Data Tools を同梱

$
0
0

本記事は、マイクロソフト本社の The Visual Studio Blog の記事を抄訳したものです。
【元記事】 Redgate Data Tools in Visual Studio 2017 2017/3/7

 

本日の Visual Studio 2017 リリース イベント (英語) において、Visual Studio 2017 に Redgate Data Tools が組み込まれたことが発表されました。これは、Redgate (英語) とのパートナーシップによって実現しました。Redgate Data Tools には、DevOps の手法を SQL Server や Azure SQL データベースに拡張し、データベース開発の生産性を向上させる 3 つのコンポーネントが含まれています。

各コンポーネントの概要は以下のとおりです。

  • ReadyRoll Core: 開発やソース管理を行ったり、データベースやアプリケーションの変更のデプロイを安全に自動化できます。ReadyRoll Core は、Visual Studio 2017 Enterprise Edition でご利用いただけます。
  • SQL Prompt Core: SQL の高度なコード補完機能を提供します。SQL Prompt Core は、Visual Studio 2017 Enterprise Edition でご利用いただけます。
  • SQL Search: 複数のデータベース間で SQL オブジェクトを迅速かつ簡単に検索できます。SQL Search は、Visual Studio 2017 のすべてのエディションでご利用いただけます。

Redgate Data Tools は、Visual Studio Installer を使用して、[Data storage and processing] ワークロードまたは [Individual components] タブからインストールできます。

01_redgatedatatools

今回の記事では、Redgate Data Tools の各コンポーネントを使用して SQL データベース開発を効率化する方法についてご説明します。

ReadyRoll Core でデータベースの変更を安全にデプロイ

データベースの変更を管理し、DevOps のパイプラインに組み込むのは手間のかかることです。実行の必要があるスクリプトを把握し、データベースの状態を管理する作業は、面倒でミスが起こりやすくもあります。ReadyRoll Core では、データベース スキーマの変更をデータベース移行スクリプトに変換することで、このプロセスを簡略化します。これらの移行スクリプトは、ソース管理にチェックインして、他のデータベースにデプロイすることができます。

ReadyRoll プロジェクトで作業している場合、Visual Studio、SQL Server Management Studio、その他の任意のツールを使用して開発データベースを変更すると、ReadyRoll Core によって変更の一覧と差分が表示されます。

02_redgatereadyrollcompare

その後、これらの変更に基づいて移行スクリプトを生成し、プロジェクトに新しい移行スクリプトを追加することができます。必要に応じて、生成された移行スクリプトを手動で変更することもできます。

03_readyrollmigrationscript

変更が完了したら、これらの移行スクリプトとアプリケーションのその他の更新をソース管理にチェックインして、作業結果をチームと共有することができます。

また、Redgate が提供する ReadyRoll Visual Studio Team Services プラグイン (英語) には、VSTS のビルドおよびリリース タスクが含まれており、これらの移行スクリプトを他のデータベースに安全にデプロイすることができます。これにより、複数のインスタンス間でデータベースのデプロイの整合性を保つことができます。これらのデータベースのデプロイを自動化するように VSTS をセットアップすることで、データベース開発の生産性をさらに向上させ、潜在的な問題について早期に把握することができます。

04_readyrollvsts

ReadyRoll Core をデータベース開発に使用する方法の概要については、Redgate のテクニカル リーダーを務める David Simner 氏の Channel 9 ビデオ (英語) をご覧ください。

SQL Prompt Core で SQL コードの記述を簡略化

SQL Prompt Core は、SQL コードを効率的に記述するうえで役立つ SQL コード編集の生産性向上スイートで、最も重要な機能として、入力時に SQL コマンド、列名などを自動的に提案する高度なコード補完機能を備えています。

しかし、SQL Prompt Core は単なるオートコンプリート機能ではありません。他にも多数の高品質な機能強化により、SQL コードの記述を簡略化します。以下に、私のお気に入りの機能を 2 つご紹介します。

  • ワイルドカードの展開: SELECT * FROM ステートメントの * の後にカーソルを置いてタブ ボタンを押すと、ワイルドカードが展開されます。

05_sqlpromptwildcard

SQL Prompt Core によって、* がそのテーブルで使用可能なすべての列に置き換えられます。

06_sqlpromptwildcardexpanded

すべての列を必要としない場合は、代わりに * を強調表示して入力を開始すると、必要な列のサブセットを選択することができます。

07_sqlpromptwildcardselect

  • 結合の提案: SQL Prompt Core は JOIN ステートメントを自動的に補完し、外部キーの関係や列の類似性に基づいて、入力時に結合の候補を提案します。

08_sqlpromptjoin

SQL Search で複数の SQL データベース間を迅速に検索

複雑なデータベースや使い慣れないデータベースで作業する場合、SQL オブジェクトを見つけることは困難で、時間がかかります。SQL Search を使用すると、テーブル、ビュー、ストアド プロシージャなどに含まれる SQL の断片をすばやく検索し、時間を節約することができます。

09_sqlsearch

データベース開発者の皆様は、列とその列を参照するすべてのストアド プロシージャを変更しなければならなくなった経験があるかもしれません。SQL Search を使用すれば、そのような場合も迅速に対応できます。列名を検索するだけで、SQL Search がすべての参照を表示してくれるため、検索結果をダブルクリックすれば、SQL Server オブジェクト エクスプローラー内のその参照に移動して、適切な変更を加えることができます。

今すぐ Visual Studio 2017 で Redgate Data Tools をご利用ください

Visual Studio 2017 に Redgate Data Tools が組み込まれたことにより、データベース開発をより簡単に効率的に行っていただけるようになりました。ぜひ Visual Studio 2017 をダウンロードしてお試しいただき、Redgate にフィードバック (英語) をお寄せください。また、ご興味がある方は、Redgate の SQL Toolbelt (英語) も併せてご確認ください。

jeff-gao Jeff Gao (Visual Studio プラットフォーム担当プログラム マネージャー)

Jeff は、Visual Studio プラットフォーム チームのプログラム マネージャーとして製品導入エクスペリエンスの向上に重点的に取り組んでいます。

 


ローカル用 Azure DocumentDB エミュレーターを使った NoSQL .NET Core の開発作業

$
0
0

 

本記事は、マイクロソフト本社の SCOTT HANSELMAN の記事を抄訳したものです。
【元記事】 NoSQL .NET Core development using an local Azure DocumentDB Emulator 2016/12/4

 

数週間前、Miguel de Icaza とニューヨークの街を歩いていると、彼が今とても気に入っている NoSQL データベース Azure DocumentDB について話をしてくれました。私も昨年あたりからなかなかよさそうな製品だとは感じていたのですが、次の理由から使うまでには至っていませんでした。

  • ローカルで開発作業ができない – 私は低帯域幅の環境や飛行機の中でよく作業をするので向いていない。
  • MongoDB がサポートされていない – Mongo を使用する Node で書かれたアプリを扱うことがあるので向いていない。
  • .NET Core がサポートされていない – 私が行う作業のほとんどはクロス プラットフォームの .NET Core アプリなので向いていない。

しかし Miguel からは、この製品のことをもっとよく知るべきだとアドバイスされました。以前とは状況が変わり、今の DocumentDB は次のようになったそうです。

  • ローカル用 DocumentDB エミュレーターが無料に (英語) – Miguel に「Azure で実行されるコードから、永続化されているローカル ファイル システムを使用するよう変更するだけで他はまったく変更しなくてよいのか」と質問したところ、「これは『エミュレーター』だが原則的に同じコア エンジン コードだ」という答えをもらいました。このローカル用 DocumentDB エミュレーターは無料で、サインインする必要もありません。
  • MongoDB プロトコルをサポート – これには驚きました。既存の Node アプリを取り込み、MongoChef をダウンロードし、標準の MongoDB 接続文字列を使用してアプリ群を Azure にコピーし、アプリを DocumentDB で指定したところ、正常に動作しました。このケースでは DocumentDB をストレージとして使用しています。これには次のようなメリットがあります。
    • レイテンシの短縮
    • 世界規模の geo レプリケーションをそのまま使用できる (数クリックで実行可能)
    • SLA (サービス レベル アグリーメント) で、読み込み 10 ミリ秒未満、書き込み 15 ミリ秒未満のパフォーマンスを保証
    • 他の Azure サービスと同様にメトリックやリソース管理が可能
  • .NET Framework SDK と同等の機能を持つ DocumentDB の .NET Core Preview SDK (英語)

また、DocumentDB 用 SDK が Node、.NET、Python、Java、C++ の各言語で用意されているため、Unity でのゲーム開発、Web アプリ、iOS 用や Android 用の Xamarin モバイル アプリなどあらゆる .NET アプリでの使用に適しています。Miguel は特にこの点を気に入っています。

AZURE DOCUMENTDB をローカルで使用するためのクイック スタート ガイド

ここでは、Azure DocumentDB をすぐに使用開始するための方法を説明したいと思います。私は先日 Azure Friday でこのプロジェクトの PM に話を聞き (英語)、さっそくローカル用エミュレーターのダウンロードとインストールを行いました。彼の話によると、現時点では Windows 用ですが将来的にはクロス プラットフォーム ソリューションへの発展を予定しているとのことでした。エミュレーターをインストールすると、Web ブラウザーが開いてローカル Web ページが表示されました。他の開発ツールもこのように手軽にスタートできるとよいものです。他にも、ASP.NET MVC で DocumentDB の使用を開始するためのクイック スタート ガイドもあるのでチェックしてみてください。

: 今回のリリースはバージョン 0.1.0 で、アルファ版です。このため、同梱のサンプルではパッケージ名が異なっている場所があるなど、一貫していません。”Microsoft.Azure.Documents.Client”: “0.1.0” は “Microsoft.Azure.DocumentDB.Core”: “0.1.0-preview” に変更する必要がありました。このようにちょっとした問題に注意する必要があります。これで正常に動作するようになるはずです。

Nice DocumentDB Quick Start

このサンプル アプリは、一般的な “ToDo” アプリです。

ASP.NET MVC ToDo App using Azure Document DB local emulator

ローカル用エミュレーターには Web ベースのローカル データ エクスプローラーも含まれています。

image

ToDo の項目は、下記のような単純な POCO (Plain Old CLR Object) です。

namespace todo.Models
{
using Newtonsoft.Json;

public class Item
{
[JsonProperty(PropertyName = "id")]
public string Id { get; set; }

[JsonProperty(PropertyName = "name")]
public string Name { get; set; }

[JsonProperty(PropertyName = "description")]
public string Description { get; set; }

[JsonProperty(PropertyName = "isComplete")]
public bool Completed { get; set; }
}
}

サンプル内の MVC コントローラーでは基盤となるリポジトリ パターンが使用されているため、この階層では下記のようにコードがとてもシンプルです。

[ActionName("Index")]
public async Task<IActionResult> Index()
{
var items = await DocumentDBRepository<Item>.GetItemsAsync(d => !d.Completed);
return View(items);
}
 
[HttpPost]
[ActionName("Create")]
[ValidateAntiForgeryToken]
public async Task<ActionResult> CreateAsync([Bind("Id,Name,Description,Completed")] Item item)
{
if (ModelState.IsValid)
{
await DocumentDBRepository<Item>.CreateItemAsync(item);
return RedirectToAction("Index");
}
 
return View(item);
}

リポジトリ自体は抽象化されていて、複雑なことはありません。コードの長さは 120 行ほどで、空行や中括弧だけの行を除けば実質 60 行程度で、そのうちの約半分は初期化とセットアップです。DocumentDBRepository<T> も含まれているため汎用的で、必要に応じて自由に変更して使用することができます。

このサンプルで唯一目立つところは GetItemsAsync のループで、ページングやチャンクに利用できる可能性があります。述語で渡すことができるのはよいですが、大規模なコレクション向けに何らかのページング ロジックを実装したいと思います。

public static async Task<T> GetItemAsync(string id)
{
try
{
Document document = await client.ReadDocumentAsync(UriFactory.CreateDocumentUri(DatabaseId, CollectionId, id));
return (T)(dynamic)document;
}
catch (DocumentClientException e)
{
if (e.StatusCode == System.Net.HttpStatusCode.NotFound){
return null;
}
else {
throw;
}
}
}
 
public static async Task<IEnumerable<T>> GetItemsAsync(Expression<Func<T, bool>> predicate)
{
IDocumentQuery<T> query = client.CreateDocumentQuery<T>(
UriFactory.CreateDocumentCollectionUri(DatabaseId, CollectionId),
new FeedOptions { MaxItemCount = -1 })
.Where(predicate)
.AsDocumentQuery();
 
List<T> results = new List<T>();
while (query.HasMoreResults){
results.AddRange(await query.ExecuteNextAsync<T>());
}
 
return results;
}
 
public static async Task<Document> CreateItemAsync(T item)
{
return await client.CreateDocumentAsync(UriFactory.CreateDocumentCollectionUri(DatabaseId, CollectionId), item);
}
 
public static async Task<Document> UpdateItemAsync(string id, T item)
{
return await client.ReplaceDocumentAsync(UriFactory.CreateDocumentUri(DatabaseId, CollectionId, id), item);
}
 
public static async Task DeleteItemAsync(string id)
{
await client.DeleteDocumentAsync(UriFactory.CreateDocumentUri(DatabaseId, CollectionId, id));
}

今後もしばらくこの機能を試してみようと思っていますが、飛行機でも使用できるので今のところそれで十分ハッピーです。ただオブジェクトを渡して保存するだけなのでとても簡単です (最近は SQL よりも NoSQL がお気に入りですが)。

今後は、.NET Core で動く優秀なオープン ソース NoSQL ドキュメント データベース RavenDB に関する記事 (英語) も公開予定ですので、どうぞご期待ください。


筆者紹介

Scott Hanselman は、大学教授と金融会社のチーフ アーキテクトという職歴を経て、現在はマイクロソフトに勤務する傍ら、講演やコンサルティング活動を行っています。父親であり、糖尿病と戦っているほか、漫才師のなり損ない、コーンロウ ヘアーのスタイリスト、著者という肩書きも持っています。

Visual Studio サブスクライバーおよび Dev Essentials メンバー向けの新しい特典

$
0
0

本記事は、マイクロソフト本社の The Visual Studio Blog の記事を抄訳したものです。
【元記事】 New benefits for Visual Studio subscribers and Dev Essentials members 2017/3/7

 

本日、Visual Studio 2017 のリリース イベント (英語) において、サブスクライバー向けの新しい特典と更新された特典が発表されました。イベントを見逃した方や、オンデマンドのトレーニングを視聴したい方は、リリース イベントのページ (英語) をご確認ください。Visual Studio サブスクライバーまたは Dev Essentials プログラム メンバーの皆様は、新しい特典を有効化してすぐにご利用を開始していただけます。開発者向けサブスクリプションおよびプログラムの詳細については、Visual Studio のサイトをご覧ください。

今回発表された新たな特典と更新された特典は、以下のとおりです。

Office 365 Developer アカウント

Visual Studio Enterprise サブスクライバーを対象に、Office 365 Developer アカウントが 25 シート提供され、複数ユーザーによるアクセスが可能になります。このアカウントは、Office 365 向けアプリケーションの作成とテストにご利用いただけます。

Opsgility のオンデマンド トレーニング

Visual Studio Dev Essentials メンバーを対象に、現時点で最も包括的な Microsoft Azure カリキュラムのビデオ ライブラリのサブスクリプションが 3 か月分提供されます。3 か月のサブスクリプション期間の終了後は、25% 割引で、完全なラボ ガイドを含む Opsgility のフル メンバーシップ プランにアップグレードできます。詳細については、Opsgility のブログ (英語) をご覧ください。

Parasoft Virtualize/SOAtest Professional Desktop

Visual Studio Enterprise サブスクライバーを対象に、Parasoft Virtualize/SOAtest Professional Desktop にフル アクセス可能なサブスクリプションが 6 か月分提供されます。これらのツールは、最新のビジネス システム間のトランザクションのセキュリティ、信頼性、パフォーマンスを確保するためのテストを自動化するもので、現時点では入手できない、進化を続けるアプリケーションやシステムの動作のシミュレーションとテストを行うことができます。6 か月のサブスクリプション期間の終了後は、年間契約を通常料金の 25% 割引でご利用いただけます。詳細については、Parasoft の特典ページ (英語) をご覧ください。

Pluralsight のオンデマンド トレーニング

皆様からのご要望にお応えして、今年の Pluralsight の特典を見直しました!

Visual Studio Enterprise サブスクライバーの皆様は、12 か月間、Pluralsight のすべてのコース カタログとテクノロジ学習プラットフォームへのフル アクセスが可能です。この間、モバイル、Web、DevOps に関するコース、ラーニング パス、評価を自由にご利用いただけます。12 か月が経過した後は、厳選された 40 種類のコースをご利用いただけるほか、Pluralsight の完全なサブスクリプションを 25% 割引でご購入いただけます。

Visual Studio Professional、Visual Studio MSDN Platforms、Visual Studio Test Pro サブスクライバーの皆様は、Pluralsight の新しい学習プラットフォームの厳選された 40 種類のコースをご利用いただけます。これまでと同様に、常に新しいテクノロジの最新スキルを習得していただけるように、これらのトレーニングは年間を通して定期的に更新されます。Pluralsight の完全なサブスクリプションの購入を希望される場合は、25% 割引の特典をご利用いただけます。

Visual Studio 20 周年を記念して、更新された Pluralsight の特典にサインアップし、かつ 1 つのコースを修了した Visual Studio Enterprise サブスクライバー先着 1,000 名様に、限定版の Visual Studio 20 周年記念 T シャツと Pluralsight の多目的ツールをプレゼントします*。

Redgate Data Tools

Visual Studio Enterprise サブスクライバーを対象に、サブスクリプションに Redgate Data Tools が追加されました。これにより、DevOps プロセスを SQL Server や Azure SQL データベースに拡張し、SQL を使用した作業の生産性を向上できます。ReadyRoll Core、SQL Prompt Core、SQL Search などのツールを使用して、開発やソース管理を行い、データベースやアプリケーションの変更のデプロイを安全に自動化できます。詳細については、Visual Studio 2017 の Redgate Data Tools に関する記事 (英語) をご覧ください。

WhiteSource Bolt

Visual Studio Enterprise サブスクライバーを対象に、Microsoft Visual Studio Team Services および Team Foundation Server プラットフォームに統合されたオープンソースの管理ツール、WhiteSource Bolt にフル アクセス可能なサブスクリプションが 6 か月分提供されます。WhiteSource Bolt は、問題があるオープン ソース コンポーネントを開発プロセスの初期段階で特定し、アプリケーションの全体的なセキュリティと品質を向上させるために役立つ軽量なソリューションです。6 か月のサブスクリプション期間の終了後は、この拡張機能の年間契約を通常料金の 25% 割引でご利用いただけます。詳細については、WhiteSource のブログ (英語) をご覧ください。

ぜひこちらのページ (英語) からリリース イベントをはじめとするオンデマンド ビデオをご覧ください。また、Visual Studio 2017 はこちらのページからダウンロードしていただけます。

今すぐ Visual Studio サブスクリプション ポータルにログインして、新しい特典をご利用ください。

また、追加を希望される特典に関するフィードバック、ご提案、ご意見、アイデアがございましたら、ページ下部のコメント欄までお寄せください。

nandi Shawn Nandi (パートナーシップおよびプランニング担当シニア ディレクター)

Shawn は、マイクロソフトの開発者向けビジネスのパートナーシップとビジネス プランニング、開発者向けプログラムおよび Visual Studio サブスクリプションや Dev Essentials といった開発者向けサブスクリプションの製品マーケティングを担当しています。

*サブスクライバー 1 名様につき、T シャツとツールはそれぞれ 1 つ限りとさせていただきます。このキャンペーンは 2017 年 5 月 1 日または在庫がなくなりしだい終了となります。また、現金でのキャッシュバックは行っておりません。税金が発生する場合は、お客様がお支払いの責任を負うものとします。配達不可で返送されたプレゼントは再送いたしかねます。プレゼントのお届けには 6 ~ 8 週間かかります。マイクロソフトは、いつでも予告なしにこのキャンペーンを中止、変更、延期する権利を留保します。

Visual Studio 2017 に Redgate Data Tools を同梱

$
0
0

本記事は、マイクロソフト本社の The Visual Studio Blog の記事を抄訳したものです。
【元記事】 Redgate Data Tools in Visual Studio 2017 2017/3/7

 

本日の Visual Studio 2017 リリース イベント (英語) において、Visual Studio 2017 に Redgate Data Tools が組み込まれたことが発表されました。これは、Redgate (英語) とのパートナーシップによって実現しました。Redgate Data Tools には、DevOps の手法を SQL Server や Azure SQL データベースに拡張し、データベース開発の生産性を向上させる 3 つのコンポーネントが含まれています。

各コンポーネントの概要は以下のとおりです。

  • ReadyRoll Core: 開発やソース管理を行ったり、データベースやアプリケーションの変更のデプロイを安全に自動化できます。ReadyRoll Core は、Visual Studio 2017 Enterprise Edition でご利用いただけます。
  • SQL Prompt Core: SQL の高度なコード補完機能を提供します。SQL Prompt Core は、Visual Studio 2017 Enterprise Edition でご利用いただけます。
  • SQL Search: 複数のデータベース間で SQL オブジェクトを迅速かつ簡単に検索できます。SQL Search は、Visual Studio 2017 のすべてのエディションでご利用いただけます。

Redgate Data Tools は、Visual Studio Installer を使用して、[Data storage and processing] ワークロードまたは [Individual components] タブからインストールできます。

01_redgatedatatools

今回の記事では、Redgate Data Tools の各コンポーネントを使用して SQL データベース開発を効率化する方法についてご説明します。

ReadyRoll Core でデータベースの変更を安全にデプロイ

データベースの変更を管理し、DevOps のパイプラインに組み込むのは手間のかかることです。実行の必要があるスクリプトを把握し、データベースの状態を管理する作業は、面倒でミスが起こりやすくもあります。ReadyRoll Core では、データベース スキーマの変更をデータベース移行スクリプトに変換することで、このプロセスを簡略化します。これらの移行スクリプトは、ソース管理にチェックインして、他のデータベースにデプロイすることができます。

ReadyRoll プロジェクトで作業している場合、Visual Studio、SQL Server Management Studio、その他の任意のツールを使用して開発データベースを変更すると、ReadyRoll Core によって変更の一覧と差分が表示されます。

02_redgatereadyrollcompare

その後、これらの変更に基づいて移行スクリプトを生成し、プロジェクトに新しい移行スクリプトを追加することができます。必要に応じて、生成された移行スクリプトを手動で変更することもできます。

03_readyrollmigrationscript

変更が完了したら、これらの移行スクリプトとアプリケーションのその他の更新をソース管理にチェックインして、作業結果をチームと共有することができます。

また、Redgate が提供する ReadyRoll Visual Studio Team Services プラグイン (英語) には、VSTS のビルドおよびリリース タスクが含まれており、これらの移行スクリプトを他のデータベースに安全にデプロイすることができます。これにより、複数のインスタンス間でデータベースのデプロイの整合性を保つことができます。これらのデータベースのデプロイを自動化するように VSTS をセットアップすることで、データベース開発の生産性をさらに向上させ、潜在的な問題について早期に把握することができます。

04_readyrollvsts

ReadyRoll Core をデータベース開発に使用する方法の概要については、Redgate のテクニカル リーダーを務める David Simner 氏の Channel 9 ビデオ (英語) をご覧ください。

SQL Prompt Core で SQL コードの記述を簡略化

SQL Prompt Core は、SQL コードを効率的に記述するうえで役立つ SQL コード編集の生産性向上スイートで、最も重要な機能として、入力時に SQL コマンド、列名などを自動的に提案する高度なコード補完機能を備えています。

しかし、SQL Prompt Core は単なるオートコンプリート機能ではありません。他にも多数の高品質な機能強化により、SQL コードの記述を簡略化します。以下に、私のお気に入りの機能を 2 つご紹介します。

  • ワイルドカードの展開: SELECT * FROM ステートメントの * の後にカーソルを置いてタブ ボタンを押すと、ワイルドカードが展開されます。

05_sqlpromptwildcard

SQL Prompt Core によって、* がそのテーブルで使用可能なすべての列に置き換えられます。

06_sqlpromptwildcardexpanded

すべての列を必要としない場合は、代わりに * を強調表示して入力を開始すると、必要な列のサブセットを選択することができます。

07_sqlpromptwildcardselect

  • 結合の提案: SQL Prompt Core は JOIN ステートメントを自動的に補完し、外部キーの関係や列の類似性に基づいて、入力時に結合の候補を提案します。

08_sqlpromptjoin

SQL Search で複数の SQL データベース間を迅速に検索

複雑なデータベースや使い慣れないデータベースで作業する場合、SQL オブジェクトを見つけることは困難で、時間がかかります。SQL Search を使用すると、テーブル、ビュー、ストアド プロシージャなどに含まれる SQL の断片をすばやく検索し、時間を節約することができます。

09_sqlsearch

データベース開発者の皆様は、列とその列を参照するすべてのストアド プロシージャを変更しなければならなくなった経験があるかもしれません。SQL Search を使用すれば、そのような場合も迅速に対応できます。列名を検索するだけで、SQL Search がすべての参照を表示してくれるため、検索結果をダブルクリックすれば、SQL Server オブジェクト エクスプローラー内のその参照に移動して、適切な変更を加えることができます。

今すぐ Visual Studio 2017 で Redgate Data Tools をご利用ください

Visual Studio 2017 に Redgate Data Tools が組み込まれたことにより、データベース開発をより簡単に効率的に行っていただけるようになりました。ぜひ Visual Studio 2017 をダウンロードしてお試しいただき、Redgate にフィードバック (英語) をお寄せください。また、ご興味がある方は、Redgate の SQL Toolbelt (英語) も併せてご確認ください。

jeff-gao Jeff Gao (Visual Studio プラットフォーム担当プログラム マネージャー)

Jeff は、Visual Studio プラットフォーム チームのプログラム マネージャーとして製品導入エクスペリエンスの向上に重点的に取り組んでいます。

 

モバイル開発で陥りがちな 6 つの落とし穴にはまらないために

$
0
0

本記事は、マイクロソフト本社の The Visual Studio Blog の記事を抄訳したものです。
【元記事】 Avoid these six mobile development pitfalls 2017/3/3

 

このシリーズの前回の記事では、モバイル アプリの活用に必要な 3 つの変革についてご紹介しました。今日のモバイル アプリ競争を勝ち抜くためには、ニーズへの対応やリリース後の修正などでありがちな課題に戦略的に取り組む必要があります。ここでは、よくある 6 つの課題についてご紹介します。

なお、これらの課題に対する業界リーダーの取り組みについては、電子ブック『モバイルで競争を優位に: モバイル DevOps とクラウドでアプリを差別化する方法 (英語)』をご覧ください。

課題 1: アプリに対するニーズが増加

爆発的なモバイルの普及により、企業では、ビジネス関係者、顧客、従業員に優れたモバイル エクスペリエンスを提供しなければならなくなりました。International Data Corporation (IDC) によると、2018 年までに、企業のモバイル アプリの数は 2 倍に膨らみ、IT 予算にモバイル関連が占める割合は 50% にもなるとされています1

モバイル アプリに対するユーザーのニーズがさらに増え、自社で提供できる範囲を超えた場合、企業はどのように対応すればよいでしょうか?

まずやるべきことは、現状のインフラストラクチャで、多様なデバイス、シナリオ、ユーザーに対応した高品質アプリを迅速かつ継続的に構築できるのかどうかを判断することです。チーム編成、テクノロジへの投資など、既存のリソースや社内プロセスを見直す必要があります。

課題 2: 人手不足

Forrester が 2014 年に行った調査によると、調査対象の半分の企業では、社内開発者が 5 人もおらず、独立したモバイル開発チームを維持することもできないという結果が出ました2。2017 年の今、主なプラットフォームごとに開発、テスト、保守を行う開発者が足りているのか、もっと人材を増やす必要があるのか、そして、その人材が新しい言語、ツール、プラットフォームに対応するために何らかのトレーニングが必要なのかを把握する必要があります。

課題 3: デバイスが多様化

ユーザーが使用するデバイスを開発側が指定することはできません。そのため、開発側としてはできるだけ多くの種類のフォーム ファクター、オペレーティング システム、ハードウェア構成で問題なく動作するアプリを開発する必要があります。しかし、さまざまな種類のオペレーティング システムを更新したり、多様化するデバイスを管理するのにはコストがかかります。Android デバイスの種類だけでも、2013 年から 2015 年までに 2 倍に増加しました3。それに加え、ユーザーはシームレスなエクスペリエンスが提供されることを期待するようになっています。

課題 4: 適切なテストと品質管理

モバイル アプリの品質管理は導入やエンゲージメントにとって重要な要素ですが、リリース サイクルが複雑化する要因ともなっています。手作業でのテストは、コストも手間もかかるため、リリース サイクルに合わせて短縮することができません。また、対応できるデバイスも限られてしまうため、長期的な解決策とは言えません。シミュレーターを使用すれば、対応可能なデバイスが増え、一見コストを削減できるように見えますが、シミュレーターでは実際のハードウェア運用構成を忠実に再現できないため、セキュリティ ホールに気付けないおそれが出てきます。

ユーザーのニーズに応え、期待以上のアプリをリリースするためには、UI テストの自動化とベータ版の配布が不可欠です。アプリが期待どおり動作することをすばやく検証し、問題が見つかれば優先順位を付け、社内外のテスト担当者に拡散しフィードバックや意見を収集する必要があります。開発チームがリリース プロセスの早い段階で問題を認識できれば、不具合のあるコードに新機能を追加してしまうような事態を防ぎ、品質保証チームは優先度の高い問題から修正に着手できます。

課題 5: セキュリティに関する技術革新

最高のアプリ エクスペリエンスとは、ユーザー エクスペリエンスが良ければいいというものではありません。優れたアプリには、ユーザーのニーズ、操作、環境に応じてプロアクティブな提案やパーソナライズされた通知などを行う便利な機能が必要です。また、従来のアプリと同様にローカルやクラウドのファイル、サービス、システムにアクセスできるよう、信頼性と安全性を確保する必要があります。これらの要件をクリアしたうえで、コンテキストに応じたプッシュ通知やオフライン データ同期などの独自の機能が求められます。また、アプリのリリース時には、このインフラストラクチャが膨大なユーザー数に合わせてスケーリングできることが重要です。

クラウドやハイブリッド クラウドのテクノロジは、組織のシステムを安全に接続できると同時に、ユーザーが外出先からいつでも生産的にアクセス可能です。また、クラウド プラットフォームならオフライン アクセスやプッシュ機能を使用して大規模な更新が可能なうえ、アクセス許可の管理やユーザー認証などの重要なセキュリティ サービスも利用できます。

課題 6: リリース後の改善

アプリをリリースすることだけに集中してしまい、リリース後の保守や分析がおろそかになるのはよくあることです。これでは、品質の高い保守に不可欠なフィードバック ループの継続が損なわれる原因となります。アプリが (更新されないことで) 利用されなくなると、それまでの投資が無駄になってしまいます。

先々の改善点にしっかり対応するためには、リリース後の分析が重要です。アプリの使用状況を監視することで、ユーザーが求める主要サービスの範囲を明確に把握でき、デバイスのデータやユーザーのフィードバックを基に新機能や不具合の特定と優先順位付けを行うことができます。その結果、継続的にユーザーやビジネスに価値を提供できるようになります。

モバイル DevOps とクラウドでこれらの課題を克服

マイクロソフトのモバイル DevOps テクノロジとクラウド プラットフォームは、このような一般的な落とし穴にはまらないようにするだけでなく、ユーザーが満足するアプリを継続的に提供し、ビジネスを前進させるのに効果的なソリューションです。モバイル DevOps テクノロジを採用することで、計画から継続的な改良までのモバイル ライフサイクルのあらゆる段階が自動化され、クラウド サービスへの安全な接続、ユーザーが求める機能の迅速な提供、さらには、あらゆるシナリオに合わせたスケーリングを実現できます。

企業の競争力強化に対するマイクロソフトの取り組みについては、電子ブック『モバイルで競争を優位に: モバイル DevOps とクラウドでアプリを差別化する方法 (英語)』をご覧ください。

Cormac Foster (シニア製品マーケティング マネージャー)

Cormac Foster はモバイル製品マーケティングを担当しています。マイクロソフトに移籍する前は Xamarin に勤務し、アナリスト関係管理およびソート リーダーシップを担当していました。また、Xamarin で勤務する以前はソフトウェアのテスト、研究、マーケティングなどさまざまな業務を担当していました。


参考資料

  1. IDC、「IDC FutureScape: Worldwide Mobility 2017 Predictions」2016 年 11 月 (http://www.idc.com/getdoc.jsp?containerId=US41334316、英語)
  2. Forrester レポート、「The State of Mobile App Development: Few eBusiness Teams Keep Pace With Customer App Expectations」2015 年 3 月 23 日 (https://www.forrester.com/report/The+State+Of+Mobile+App+Development/-/E-RES120267、英語)
  3. OpenSignal、「Android Fragmentation Visualized」レポート、2015 年 8 月 (https://opensignal.com/reports/2015/08/android-fragmentation/、英語)

Visual Studio 2017 で .NET の生産性を最大限に向上

$
0
0

本記事は、マイクロソフト本社の The Visual Studio Blog の記事を抄訳したものです。
【元記事】 Optimize your productivity with .NET in Visual Studio 2017 2017/3/8

 

Visual Studio 2017 では、生産性の向上を目的として、コードにすばやくアクセスするための機能とコードを迅速に作成するための機能の強化が進められました。パフォーマンス、ナビゲーション、デバッグ機能が改良されたほか、新しいリファクタリング機能、コード スタイルの構成や適用、ライブ ユニット テストが追加されるなど、今回のリリースには高度な機能が満載です。この記事では、これらの機能の活用方法についてご紹介します。

利用の開始

Visual Studio 2017 では、Visual Studio をインストールして起動し、ソリューションのコード作成を開始するまでの所要時間が大幅に短縮されました。新しい Visual Studio インストーラーにより、必要な機能のみを自由に選択してインストールすることができます。

Visual Studio のインストールが完了すると、Visual Studio の起動時間やソリューションの読み込み時間が大幅に短縮されたことを実感できます。

  • Visual Studio の起動時間の短縮については、過去のブログ記事をご覧ください。この記事では、新旧バージョンを隣り合わせで比較した動画をご紹介しています。
  • [Lightweight Solution Load] を有効化すると、プロジェクトの遅延読み込みを行うことができます。この機能は、ソリューションには数百ものプロジェクトが含まれるものの、作業に使用するプロジェクトはそのうちのごく少数であるような場合に特に便利です。[Lightweight Solution Load] を有効化する場合は、[Tools]、[Options]、[Projects and Solutions]、[Lightweight solution load for all solutions] の順に選択します。: [Lightweight Solution Load] は F# プロジェクトでは機能しません。

コードベースのナビゲーション

Visual Studio 2017 では、コード内の別の場所に少ない操作で移動できるように、ナビゲーション エクスペリエンスが更新されました。

  • Go To Implementation (Ctrl + F12) – 任意の基本型やメンバーから各種実装に移動できます。
  • Go To All (Ctrl + T または Ctrl + ,) – 任意のファイル、型、メンバー、シンボルの宣言に直接移動できます。この機能の上部に表示されるアイコンを使用すると、結果の一覧を絞り込んだり、クエリ構文 (ファイルの場合は “f searchTerm”、型の場合は “t searchTerm” など) を使用したりできます。
  • Find All References (Shift + F12) – 構文の色分けにより、[Find All References] の結果をプロジェクト、定義、パスの組み合わせによってカスタム グループに分類できます。また、結果を「ロック」して、元の結果を保持したまま他の参照を検索することもできます。
  • インデント ガイド – コード内の目印として、灰色の破線が縦方向に表示され、ビュー フレーム内のコンテキストを示します。この機能は、人気の高い Productivity Power Tools でも使用されているものです。

gotoall

コードの作成

今回のリリースでは、一般的なタスクを自動化し、ワークフローを迅速化するために、細かい調整やさまざまな機能の追加が行われました。

  • IntelliSense – トレイのアイコンをクリックすると、入力候補一覧をカテゴリで絞り込むことができます。また、アイコンをマウスでポイントすると、キーボード ショートカットが表示されます。この機能は、複雑な API を学習しているときや WPF を使用しているときに特定のプロパティやイベントなどを検索する場合に便利です。
  • リファクタリング – 「Ctrl + .」を使用すると、Visual Studio に追加されたすべてのリファクタリング機能 (英語) やクイック アクションにアクセスできます。主な機能は以下のとおりです。
    • 型を同名のファイルに移動する
    • ファイル名と型名を同期する
    • 欠落している switch/Select case を追加する
    • メソッドを同期させる
    • メソッドをプロパティに、プロパティをメソッドに変換する
    • 補間文字列に変換する
    • その他多数
  • 参照アセンブリや NuGet パッケージの型の using/Imports を追加 – 認識されない型が入力された場合、参照アセンブリや NuGet.org を検索して、using/Imports を追加するように簡単な修正を提案します。この機能は既定では無効になっています。有効化するには、[Tools]、[Options]、[Text Editor]、[C#] または [Basic]、[Advanced] の順に進み、[Suggest usings for types in reference assemblies] および [Suggest usings for types in NuGet packages] を選択します。後者のオプションを選択すると 10 MB ほどの NuGet インデックスがマシンにダウンロードされます。ダウンロードに数秒程度かかるため、Visual Studio のワークフローには影響しませんが、この機能を有効化しても即座に使用できるようにはなりません。
  • コード補完 – 開発者にベスト プラクティスのヒントを示します。コード補完はエディターに灰色の点として表示され、「Ctrl + .」を押すと適用されます。

intellisensefiltering

一貫性と読みやすさの向上

Visual Studio 2017 では、EditorConfig (英語) を使用して、チームでコーディング規則を構成して適用し、リポジトリ全体の一貫性を向上させることができます。EditorConfig はオープンなファイル形式で、コミュニティとの協力の下、この形式で .NET のコード スタイルがサポートされました。チームは独自の規則を構成し、エディターで適用される方法 (候補、警告、エラーなど) を指定できます。このルールは、EditorConfig ファイルが含まれるディレクトリ内のすべてのファイルに適用されます。プロジェクトごとに異なる規則を適用する場合、各プロジェクトのディレクトリが異なれば、それぞれのプロジェクトのルールを個別の EditorConfig ファイルで定義できます。EditorConfig は単純なテキスト ファイルなので、ソース管理に簡単にチェックインして運用し、ソースと共に移動させることができます。

EditorConfig ファイルを使用しない場合や、チームで明確に設定されていないルールを構成する場合は、[Tools]、[Options]、[Text Editor]、[C#] または [Basic]、[Code Style] の順に選択し、マシンのローカル設定として構成することができます。

Visual Studio で EditorConfig ファイルを編集するときに言語サービスのサポートを利用する場合は、Mads Kristensen の拡張機能 (英語) をダウンロードしてください。Visual Studio 2017 でのコーディング規則のサポートの詳細については、こちらのドキュメント (英語) または .NET ブログの記事 (英語) を参照してください。

コードのテスト

ライブ ユニット テストは、ユニット テストにおけるコード変更の影響をほぼ瞬時に表示する機能で、エディターとテスト エクスプローラーを切り替えて手動でテストを実行する必要がなくなります。各コード行には結果がアイコンで示されます。すべてのテストに合格した場合は緑色のチェック マーク、1 つ以上のテストに失敗した場合は赤色のバツ印、適用されるテストがなかった場合は青色の横線が表示されます。ソリューションでライブ ユニット テストを有効化する場合は、[Test]、[Live Unit Testing]、[Start] の順に選択します。: ライブ ユニット テストは Enterprise SKU でのみ使用可能です。

大規模なソリューションの場合は、「ライブ」で実行するテストの種類を選択できます。ソリューション エクスプローラーでプロジェクトを右クリックすると、そのプロジェクトをライブ ユニット テストの対象に追加または除外できます。また、テスト ファイル内では、テストのグループを強調表示して右クリックし、それらのテストを追加または除外できます。ライブ ユニット テストのその他の設定は、[Tools]、[Options]、[Live Unit Testing] の順に選択して行います。

ライブ ユニット テストの詳細と、この機能を活用して時間や労力を節約する方法については、こちらのブログ記事を参照してください。

lut

デバッグ

Visual Studio 2017 では、問題の原因を迅速に特定できるように、デバッグ エクスペリエンスが強化されています。

  • 新しい例外ヘルパー (英語): 内部例外の詳細や null を返す式など、例外に関する特に重要な情報がすぐに確認できる場所に表示されます。また、サードパーティのライブラリからスローされた例外など、特定の種類の例外をデバッグ中に無視するように設定できます。
  • Run To Click (英語): 指定したコード行までプログラムをデバッグ モードで実行してから中断します。この機能を使用すると、一時的なブレークポイントを設定する手間が省けます。
  • XAML のエディット コンティニュ (英語): アプリの実行中に XAML を変更できるため、UI を継続的に調整できます。: この機能は、Visual Studio 2015 Update 2 で初めて追加されました。
  • プロセスへの再アタッチ (英語): 以前にデバッグした場所にすばやく再アタッチできます。これにより、一度手動でアタッチした後、[Attach to Process] ダイアログで同じアプリケーションをデバッグする必要がなくなります。この機能を使用するには、[Debug]、[Reattach to process…] の順に選択するか、「Shift + Alt + P」を押します。

exceptionhelper

C# 7.0 や VB 15 によるコードの進化

Visual Studio 2017 のリリースと同時に、C# 7.0 (英語) VB 15 (英語) の最終バージョンもリリースされました。今回リリースされたこれらの言語の新機能は、データの取り扱いや密度の高いコードの作成に役立ちます。

これらの新機能を日常的な開発作業で使用する場合、以下の点にご注意ください。

  • C# や Visual Basic でタプルを使用する場合は、ValueTuple (英語) パッケージをインストールする必要があります。「コードの作成」のセクションで説明した NuGet パッケージの using/Imports を追加する設定を有効化している場合、「Ctrl + .」を押すとワンクリックでこのパッケージを追加できます。
  • 以下のように、新しい言語機能を活用するためのクイック アクションが多数追加されました。
    • throw 式 (C# 7.0) と null 合体演算子 (??) を使用して null チェックを簡素化する
    • 明示的に提供されたタプル名 (C# 7.0) を使用する
    • パターン マッチング (C# 7.0) を使用して null チェックを簡素化する
    • string.Format や連結文字列を補間文字列 (C# 6.0) に変換する
    • メソッド/コンストラクター/インデクサー/プロパティ/演算子/アクセサーで式を本体とするメンバーを使用する (C# 6.0/7.0)

新しい GitHub リポジトリの C# と Visual Basic の言語設計である CSharpLang (英語) および VBLang (英語) に従う必要がある点にも留意してください。

vbtupleexplicittype

ホットキーの学習

Visual Studio の生産性を向上させるために、こちらのドキュメント (英語) に記載されている一般的なショートカット キーを習得することをお勧めします。他の IDE から Visual Studio に移行した場合は、Justin Clareburt による Hot Keys 2017 拡張機能 (英語) を使用すると、Visual Studio の既定のショートカットを使い慣れたものに割り当て直すことができます。

Visual Studio 2017 のダウンロード

パフォーマンス、ナビゲーション、デバッグ、リファクタリング、コード スタイルの構成や適用、ライブ ユニット テストの機能強化により、無駄な時間を大幅に切り詰めることができます。ぜひ Visual Studio 2017 をダウンロードして今回追加された生産性機能を活用し、時間や労力の節約にお役立てください。

不足しているリファクタリング機能やクイック アクションがありましたら、GitHub でイシューを作成してお知らせください (英語)

image Kasey Uhlenhuth (.NET および Visual Studio 担当プログラム マネージャー)
@kuhlenhuth
github.com/kuhlenh (英語) Kasey Uhlenhuth はマイクロソフトの .NET マネージ言語チームのプログラム マネージャーとして、現在は C# と VB の開発者エクスペリエンスの刷新に取り組んでいます。以前は、C# Interactive および Node.js Tools for Visual Studio を担当していました。

 

Viewing all 182 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>