最近の Visual Studio の強化まとめ(Visual Studio 2008から)
ここ最近では様々なデバイスが溢れています。また、そのデバイス上ではインターネットに繋がったアプリが多く動いています。デバイス上のアプリがやり取りしている先はオンプレミスではなくクラウドの方が多いです。2000年代は間違いなくクライアント/サーバーの時代でした。2010年前後からクラウドが登場し、端末はPCがドミナントだった時代から変化し今では様々な大きさや特徴を持ったスマートデバイスが主流になっています。これらのプラットフォームの変化に合わせてVisual Studioも進化してきました。
今回はVisual Studioの最近の進化についてまとめました。
関連Blogも2つ(「これでメンテも楽々! VS新機能」、「過去コードを最新VSで効率開発」)ありますので、そちらも合わせてお読みいただけますと幸いです。
Visual Studio の変遷
まずは、Visual StudioとWindows系OSの最近の変遷から振り返りたいと思います。
図1.Visual Studioの変遷
図1をご覧いただいてお分かりのようにVisual StudioはWindows系OSの進化に合わせて新しいバージョンをリリースしてきました。新しいバージョンをリリースする際に、リリースされたWindows系OSで実装された新しい機能を開発できるように機能追加が行われました。
Visual Studio 2008ではVistaの登場とともにWPF(WPFのアプリ開発はこちらの荒井省三のBlogを参考に)が追加され、Visual Studio 2010ではAzureのサービス提供に伴いクラウド アプリ開発が追加、Visual Studio 2012ではWindows 8の登場に合わせてWindows ストア アプリが追加、Visual Studio 2013ではWindows 8.1 対応のストア アプリ開発機能が強化されました。
図2.Visual Studioの代表的な機能強化
共通の開発プラットフォームであるVisual Studio
現在の IT 環境でのアプリについてみてみましょう。
PC の普及が本格的に拡大した 90 年代は、アプリケーションは PC スタンドアローンのものが圧倒的に多かったです。そして、2000年代はクライアント/サーバーの技術の発展に伴って、クライアント/サーバー型のアプリケーションが非常に多く作られました。デスクトップ アプリ、Web アプリ、サーバーのサービス等、様々なアプリが企業内を中心に作られました。そして2010年代はクラウドの大きな発展、スマート デバイスの爆発的な普及により、ネットワークに繋がったアプリが非常に多く流通しています。このアプリは様々なプラットフォーム間を連携し、様々なタイプのデバイスや PC 上で動きます。一見複雑なようにも思われますが、実は進化したVisual Studioを使えば全てのアプリケーションを作成可能です。
まずデバイス側ですが、近年は PC だけでなく、iOS/Android/Windowsのタブレットやスマートフォンがアプリ開発のターゲットになります。Visual Studioは、これらのターゲット デバイスに one source multi use で開発が可能です。HTML5 であれば Cordovaを活用し、C# であれば Xamarin を活用すれば、Visual Studio上の1つのソースでターゲット デバイスのネイティブ アプリを開発できます。
Xamarinに関してはマイクロソフト エバンジェリスト渡辺友太のBlogを、Cordovaに関してはマイクロソフト エバンジェリスト物江修の Blog を参考にしていただけますと幸いです。
次にクラウドのサービスについてです。企業内 PC のような用途や使用場所が確定されたものでなく、モビリティが高いデバイスを活用したアプリにはクラウドが適しています。どこからでも接続できるというだけでなく、これまでの企業内アプリケーションへの影響を限定的にするという利点もあるからです。クラウドとのやり取りについてはMicrosoft Azureに用意されたMicrosoft Azure モバイル サービスを利用すると比較的簡単にアプリ開発を進めることができます。 Azure モバイル サービスは、 Visual Studio のサーバー エクスプローラーに表示され簡単に操作可能です。Azure モバイル サービスについてはマイクロソフト エバンジェリスト鈴木章太郎の Blog を参考にしていただけますと幸いです。
もちろんこれまで作成された企業内の多くのアプリケーション資産はVisual Studioを通して開発されたものですし、新しく作ったアプリと既存のアプリケーションは必要に応じ容易に連携可能です。
図3.共通の開発プラットフォームとなるVisual Studio
マルチ デバイス対応アプリを開発し、それをクラウドにつなげ、またこれまでのアプリケーション資産の活用を行うということがVisual Studio一本で行えます。
Visual Studioは共通の開発プラットフォームとして活用することが可能です。
クラウドを活用した開発環境と開発ツール
クラウドが発展する時代、開発環境や開発ツールもクラウド化しています。クラウド サービスが展開された当初、アプリの運用をするよりも開発テストに使われる機会の方が多かったかもしれません。ただし、当時はテスト環境としてクラウドを使うことに限定されていたはずで、開発ツールや管理ツールは既存のオンプレミスのものでした。
Visual Studio はクラウド化した開発ツール Visual Studio Online を2014年より正式にサービスを提供しています。Visual Studio OnlineはTeam Foundation Serverのクラウド版であるチーム開発支援機能と、クラウド アプリをターゲットとしたMonacoと呼ばれるコーディング機能があります。Visual Studio Onlineでは、Visual Studioが無い環境からもブラウザを使って作業状況を確認し必要な作業を確認できます。
図4.Visual Studio Onlineのダッシュボードと作業項目グラフ
またタスクボードを使ってバックログおよび各担当者のアサイン状況を確認でき適切なリソース配分をすることができます。
図5.タスクボードによるバックログ管理
これらを活用すると、開発・テスト・運用を完全にクラウド上で実施できることになります。開発リポジトリをVisual Studio Online 上で構成することでチーム開発を円滑にし、Azure上にテスト環境を素早く展開し、実行環境を素早くデプロイできます。
これには3つの大きな意味合いがあります。1つ目はハードウェア調達がなくなるため迅速に開発・テスト・運用を進められるということです。2つ目はコストが小さくなるということです。ハードウェアのコストは削減され、使い方を間違わない限りクラウドの利用料がハードウェア調達コストの削減量を超えることはありません。3つ目はクラウド上で完全なALMを実現できるということです。
この Visual Studio Online を活用した事例として日本郵政スタッフ社の事例があります。
システム開発業務受託のため、Microsoft AzureとVisual Studio Onlineを使って開発環境をゼロから2-3日で立ち上げられました。ハードウェアコストは従来のおおよそ1/10になり、情報一元管理とプロセス標準化で開発が効率化されました。
図6.日本郵政スタッフ社でのVisual Studio OnlineとAzureの活用例
Visual Studio Onlineの概要は MSDN マガジン 2014 年 1 月号に掲載があり、Monacoの詳しい記事は英語になりますがMSDN Blogにありますのでそちらも参考にしてください。
Visual Studio Online を初めて使うには、visualstudio.com内の 「Visual Studio Online への接続」のガイドを参考にしてください。このガイドが掲載されている visualstudio.com 内の 「はじめに」 にはVisual Studioの利用開始に関して幅広く解説がありますので使い始める際にご参照ください。
継続的デリバリーの要求に対応するリリース管理
最新の調査によると60%以上の開発者がテストフェーズにおいて週1回以上のデプロイを実施しています。デプロイの際には、承認者の確認をとり展開していくことになりますが、実際のデプロイはビルド完了を待って行うことになり、手間がかかり時間の無駄も発生しがちです。
Visual Studioでは、このデリバリーに関する課題を解決するためにRelease Managementという機能をVisual Studio 2013でリリースしています。
図7.Release Management活用概念図
この Release Management では、リリースパスを設定して、ワークフローに従ったリリースを実行できます。もちろん、TFS のビルドと連携して、リリース先やコンポーネント等を設定可能です。これらの機能を活用することにより、リリースの省力化、ミス減少を図れます。
図8.リリースパスの設定
図9.リリースプロパティの設定とリリーステンプレートのシーケンス設定
旧バージョンのコードもケア
Visual Studioの進化はITの変化に対応・リードするものでもありますが、過去コードをないがしろにしているわけでもありません。
例えば、旧バージョンの .NET のコードは最新の Visual Studio でターゲットとなる .NETを指定して取り扱え、最新Visual Studioが持つ機能、例えば依存関係グラフを使ってコードの構造を確認し、コード変更の影響分析にて単体テストの影響範囲を確認し、CodeLensを使って以前の変更内容を見てコード編集を行い、自動 UI テストでテストを実行して効率よくメンテナンス開発を終える等のことが可能です。
詳しくは、「これでメンテも楽々! VS新機能」、「過去コードを最新VSで効率開発」で説明していますので、こちらもご確認いただけますと幸いです。
デバッグを効率化するIntelliTrace
テスト実行時に、エラーになった理由がつかめずテスト環境を再構築して何度も同一のシナリオを実行して確認することはありませんか?
IntelliTrace はテスト実行時に、その実行状況をトレースファイルに記録し、テスト終了後にトレースファイルを参照することでテストの状態を「再生」や「巻き戻し」で再現しながら効率的にデバッグする機能です。
図10.Intellitrace活用概念図
仮想マシン スナップショットとIntelliTraceともにテストのレコーディングと機能の再実行を行うことでテストの効率を20%ほど向上した事例もあります。
IntelliTraceを使ったデバッグの説明はこちらのBlogにもあります。
今回、Visual Studioの最近の進化についてまとめてみましたが、いかがでしたでしょうか?これ以外にも皆様にあった効率の良い使い方があると思います。皆様も是非見つけてください。
Visual Studioを使いこなしましょう!