テスト効率化のための自習書シリーズを公開しました。

Visual Studio で提供されるのはいわゆる実装のための機能だけではありません。設計やテストと言ったアプリケーションのライフサイクル全般を包括的にサポートできるのが Visual Studio の大きな魅力です。 例えば単体テスト (ユニット テスト) 機能では、ひな形のコード作成はもちろん、テストがソース コードの何% を網羅しているかを管理し、バグの状態推移レポートの作成までも自動化することが可能です。テスト工数を最小限に抑えつつも、より高品質のアプリケーション開発を期待できます。 『Visual Studio を使ったテスト作業効率化』自習書シリーズでは、全 5 回のコンテンツを通じて、より正確により手早くテスト作業を行うための方法を学ぶことができます。ぜひご活用ください。   第 1 回 Microsoft Test manager 2012 を使用した手動テストの作成と実行 (PDF: 1.9 MB) 第 2 回 Visual Studio 2012 の Lab Management による改善 (PDF: 2.2 MB) 第 3 回 Visual Studio 2012 によるユニット テストとコード カバレッジおよびコード複製の分析 (PDF: 1.8 MB) 第 4 回 Microsoft Test…


チーム総合力の強化 ~ Visual Studio ソリューションシナリオ

<< ”Visual Studio 2012 ソリューションシナリオ” では、開発現場における様々な課題を Visual Studio 2012 によってどのように解決できるのかを紹介いたします。>> 開発プロジェクトが成功するか、不満足な結果に終わってしまうかは、開発メンバーが「チーム」として総合力を如何に発揮できるかにかかっています。開発メンバーに何人かの優れた開発者がいたとしてもチーム全体としての開発力にばらつきがあったり、チーム連携のための負荷が高く作業に集中できない環境であってはチームとしての総合力を十分に発揮することができません。 プロジェクト マネージャーやリーダーは、チームメンバー全員がそれれぞれのスキルや経験をベースに「個」として活躍する一方で、「チーム」全体としても優れた結果を出せるようチームのに総合力強化を進める必要があります。   チームでの開発においては以下のような課題が発生します。 会社や部門単位で設計ガイドや基本アーキテクチャーを定めてドキュメント化しているが、ほとんどのメンバーがドキュメントを参照せずにプロジェクト毎に独自アーキテクチャーを検証、構築してしまう。 開発時にサブシステムやコンポーネント単位で担当を割り振っているため、コードレビューのタイミングでしか他の開発者のコードを確認する機会がない。そのため、優秀な開発者からのスキル伝搬が十分でなく、また担当者が不在の際に他のメンバーで開発業務をカバーできない、といった問題が発生している。 プロジェクトのステークホルダーへの状況報告を行う際に、現状のプロジェクトステータスを把握するために多大な労力と時間がかかってしまう。   開発プロジェクトの成功を期待しないメンバーはいませんが、チームで必要となる作業を手間と感じて後回しにしたり、他のメンバーとのタイムリーなコミュニケーションができていない等のちょっとしたずれが、チームの成果物の品質に大きな影響を与えることがあります。   チームの総合力を高めるために以下のプラクティスを活用しましょう。   参照アーキテクチャーはコードで用意しよう 企業や部門において参照アーキテクチャーを定める場合、その目的は「参照アーキテクチャーを作ること」ではなく、参照アーキテクチャを活用することで「開発における品質のばらつきを押さえ、効率的なプロジェクト運営を支援する」ことではないでしょうか。ドキュメントとしてのみ用意された設計のガイドラインや参照アーキテクチャーは結局のところ実プロジェクトにおいて利用されないことがほとんどです。 開発の目的はソフトウェアの構築それ自体にあるのですから。参照アーキテクチャを用意するのであればこれから開発するソフトウェアの基盤として利用できるコードとして用意し、それをもとに開発を開始すべきです。   コードの共同所有を推進しよう 開発者それぞれに “こだわりのある” コーディングスタイルがあったり、開発スキルにばらつきがある場合、開発するコード領域を分割する(例えば、サブシステムとして分割する)ことで互いの開発者が他のコーディングに立ち入らないようにすることがあります。これは結局のところコーディングスタイルやスキルのばらつきをそのまま放置することと同じであり、チームの総合力の強化には役立たないアプローチになってしまいます。 チームとしての総合力を強化するのであれば、コードの所有者を分離せずに全ての開発メンバーがすべてのコードに対して責任を持ち、アクセスできるようにコードの共同所有を推進すべきです。 コードを共同所有にすることで、経験の少ない開発メンバーも経験豊富なメンバーのコードに触れることができ、またそのコードの改変等を通じてコーディングスタイルを学んでいくことが可能になります。またメンバーが急に休んだ場合などでも、他のメンバーによって作業をリカバリーできるようになりますので、開発プロジェクトのリスクを低減させることにも役立ちます。   使いやすいツールで情報にアクセスしよう プロジェクトの状況把握にコストがかかる一つの原因は、状況把握の際に利用するツールを使用するために手間がかかったり、あるいはそのようなツールを利用していないために手動で状況把握を行う必要がある、といった点にあります。理想的な環境としては、プロジェクト マネージャーは Excel や MS Project といったツール、開発者であれば開発ツール、といった普段から使い慣れたツールで状況報告や状況の把握ができるように環境を設定すべきです。使い慣れた、普段から使用するツールにそれらの機能が統合されることで、開発メンバーはよりこまめに状況の報告、記録を行うことが可能になり、またプロジェクト状況を確認したい際には新しく情報を集める必要はなく、それら記録された情報をまとめることで状況把握が可能になります。     Visual Studio 2012 では開発チームがこれらのプラクティス実践をスムーズに行えるように、様々な支援機能を提供しています   プラクティス1:参照アーキテクチャーはコードで用意しよう Visual Studio 2012 においては、開発プロジェクトのテンプレートを独自で作成するための機能があります。  …


ソフトウェアの保守におけるアーキテクチャの理解 ~ Visual Studio ソリューションシナリオ

<< ”Visual Studio 2012 ソリューションシナリオ” では、開発現場における様々な課題を Visual Studio 2012 によってどのように解決できるのかを紹介いたします。>>   ソフトウェアのライフサイクルについて考えると、その時間のほとんどは「開発」ではなく「保守」や「運用」に費やされることになります。ところで、保守を行う際に、開発を行ったチーム、メンバーがそのままプロジェクトに残っている、というプロジェクトはどの程度存在するのでしょうか?ほとんどの場合、開発プロジェクトにおいて開発を担当したメンバーは、プロジェクトが順調に進めば進むほど、運用、保守フェーズへの切り替えに伴いプロジェクトを卒業し、別のメンバーが運用、保守を担当することが多いのではないでしょうか?   今回のソリューションシナリオでは、ソフトウェアの保守を担当するチームが Visual Studio の機能を活用し、どのように保守に役立てることができるかを紹介します。   開発メンバーと異なるメンバーが保守を担当する場合、以下のような問題が起こりがちです。   設計ドキュメントに関して、設計フェーズで作成されたものが存在していたとしても、最終的にリリースされ、運用されているソフトウェアの状態をカバーしている最新かつ全体的な設計ドキュメントが存在しておらず、アーキテクチャの全体像がつかめない。   機能強化やデザインの改善のためにコードの変更を行ったところ、他の画面やロジックにおいて副作用が発生してしまい、ソフトウェア全体の整合性が崩れてしまう。   ソフトウェアをより長く、価値あるものとして活用するためには、保守作業を効率化し、変更によるリスクを下げつつ機能強化を積極的に行えるようにすることが銃重要です。   保守におけるこのような課題に対応するためには、以下のようなプラクティス(行動)が挙げられます。   ドキュメントではなくコードを中心に最新のアーキテクチャを理解しよう 開発プロジェクトにおける最終的な成果物は「ドキュメント」ではなく「ソフトウェア」あるいは「コード」そのものです。「コード」を素早く理解するために「ドキュメント」を活用することは重要ですが、本質的なアーキテクチャの理解には「コード」をそのものを活用するのが最も効率的です。   コード変更の前に副作用の範囲やリスクを正しく把握しよう アーキテクチャに対する思い込みや仮定をもとにしてコードの変更を行ってしまうと、思わぬ副作用を引き起こす可能性があります。コード変更に関しては、単体テストを用意することで変更のリスクを低減させることができますので、変更前に十分な単体テストを用意しておき、コードの変更後にもそれらの単体テストが期待通りに「成功」となるかを確認しましょう。     Visual Studio ではコードを作成する際の支援だけでなく、アーキテクチャレベルでのコードの理解を支援し、副作用の少ないコードの改善を実現するための機能を提供しています。   プラクティス1:ドキュメントではなくコードを中心に最新のアーキテクチャを理解しよう Visual Studio 2012 では、アーキテクチャの理解のために「依存関係グラフ」という機能を用意しています。この機能を活用すると、ソリューションやプロジェクトにおけるアセンブリ、名前空間、あるいはクラスごとの関係性をグラフとして視覚化することが可能です。   例えば、以下のスクリーンショットでは、”Tailspin Toys” というソリューションに含まれるアセンブリ(Dll)単位の依存性を表示したものです。   それぞれの情報は、さらにブレイクダウンして詳細情報を確認することが可能です。例えば、先ほどの DLL に含まれる名前空間とその関連情報を表示すると以下のような表示となります。     一方で、各メソッドやクラスといったコード側からアーキテクチャの理解を深めたい場合は同様に「コードマップ」の機能を活用することでコードの内容を視覚化することが可能です。例えは、以下の画面ショットでは、OrderLine…


Web アプリのテストの自動化 ~ Visual Studio ソリューションシナリオ

<< ”Visual Studio 2012 ソリューションシナリオ” では、開発現場における様々な課題を Visual Studio 2012 によってどのように解決できるのかを紹介いたします。>> Web アプリケーションは企業における様々な活動において、ユーザーあるいはパートナー企業と直接的にコンタクトを持つことを可能にするシステムです。そのため Web アプリケーションによるユーザー体験(User Experience)は、直接的にサービスや企業のイメージに結び付きやすい傾向にあります。つまり、高い品質のユーザー体験を提供できればサービスや企業の印象もよくなりますし、その逆も成り立ってしまうということです。 従って Web アプリケーションの開発においてはアプリケーションの品質を十分に確認し、また誤ったデータ操作や顧客対応が行われないようにテストを行うことが重要になります。Web アプリケーションは通常は3階層(ブラウザ、アプリケーションサーバー、データベースサーバー)以上に分割され、また他のシステムやサービスと連携を行うことがほとんどです。そのためテストを用意する場合には、それらの階層関係を考慮しつつテストの目的を明確にしたうえでテストを作成する必要があります。    Web アプリケーションのテストを行う際には、以下のような課題を意識する必要があります。   Web アプリケーションは通常は3階層(ブラウザ、アプリケーションサーバー、データベースサーバー)以上に分割され、また他のシステムやサービスと連携を行うことがほとんどです。そのため、それらの階層関係を考慮しつつテストの目的を明確にしたうえで適切なテストを作成する必要があります。   テストの自動化を行う場合に個別にテスト用のツールを調達するとテストを実施するために必要となる教育コストや、情報一元化のためのコストが追加で必要になります。   通常 Web アプリケーションのユーザー数は C/S 方式のアプリケーションよりも多くなる傾向にあるため、ユーザーに対する高品質な体験を提供する重要性は相対的に高くなります。そのため、開発プロジェクトにおいてはこのような課題を以下に解決し、アプリケーションの品質を高めるかが重要になります。     Visual Stuio 2012 では、Web アプリケーション開発において使用可能な様々なテスト機能を用意しており、また品質向上やチームコラボレーションのツールと合わせて利用することによって、高品質な Web アプリケーション開発をサポートします。   Web アプリケーションのアーキテクチャを考慮し、シンプルなテストを作成しよう 通常 Web アプリケーションにおいては次の図のような階層構造をとることがほとんどです。   例えば、ASP.NET の MVC フレームワークを使用した場合、「ブラウザー」の階層には、Vew のコード(JavaScript のスクリプトを含む)が、「サーバー…


コード品質の向上(その1)~ Visual Studio 2012 ソリューションシナリオ

<< ”Visual Studio 2012 ソリューションシナリオ” では、開発現場における様々な課題を Visual Studio 2012 によってどのように解決できるのかを紹介いたします。>>   開発プロジェクトにおける最大の成果物は “動くソフトウェア” であり、またその “ソースコード” でもあります。 一方で全く同じように “動くソフトウェア” であったとしても、「ユーザーからのフィードバックを受け、継続的に価値を提供し続けていく」という視点で考えた際に、メンテナンスが容易な “ソースコード” と、冗長なコードが多かったり、メソッド名がわかりづらい “ソースコード” では、ソフトウェアのライフサイクルを勘案した時に前者のほうがより価値があるのは明らかです。 今回のソリューションシナリオでは、「コード品質の向上 ~その1~」と題して、ソースコードの品質を向上し、よりメンテナンス性の高いコードを書くための Visual Studio 2012 の支援機能を紹介します。   開発チームにおいてコードのメンテナス性に関する取り組み姿勢や基準を共有しないままプロジェクトを進めてしまうと、以下のような問題が発生します。 チームメンバーそれぞれが勝手な命名規則や、独自のコーディングルールに基づいてコードを書いてしまい、プロジェクト全体としてのまとまりがなくなってしまう。また、そのためにコードの可読性が大幅に落ちてしまう。   メンバーによって「メンテナンス性」、に対する意識が異なるために、チーム全体としての基準があいまいになってしまう。またプロジェクトが進むにつれ、どうしても「甘い」基準に引きずられてしまう。   場当たり的なコーディングにより、コピー&ペースト等で似たようなコードが散在してしまい、問題が発生した際に修正個所が複数個所にまたがってしまう。   コードに集中するあまり、実行時のパフォーマンスに関して十分に考慮されていないプログラムができてしまう。   開発プロジェクトにおいてはアプリケーションのライフサイクルの観点から長期的な視野に立ち、メンテナンス性もソフトウェアの品質の一部であるととらえ、コードの品質を向上させることが重要になります。   コードのメンテナンス性、品質に関する課題に対し、以下のようなプラクティスを推進することで、コードの品質の向上への取り組みを進めることが可能です。   コーディング規則やコーディングのプラクティスを活用しよう チームで開発を行う場合、それぞれの開発者が自分の基準で命名を行ったり、コードの見た目を変更したりすると、コード全体としての統一性がかけてしまい、保守性が犠牲になってしまいます。コードの共同所有を進め、チーム全員でコードのメンテナンスがスムーズに行えるよう、標準的なコーティング規則を定めておきましょう。 また、過去の経験から得られた知識や守るべきガイドラインをまとめておき、共有することでチーム全体でのコード品質に対する意識やナレッジを高めましょう。 例えば、MSDN において公開されている「C# のコーティング規則」、「安全なコーディングのガイドライン」、「クラス ライブラリ開発のデザイン ガイドライン」等のドキュメントを活用し、コードの品質向上を進めましょう。     コードの保守容易性を数値で測定しよう コードの保守容易性に関しては、カーネギーメロン大学の研究をもとに提唱されている「サイクロマティック複雑度」と呼ばれる指標があります。具体的にはコードにおける分岐(if…


全国展開始まります ~ Discover セミナー:Visual Studio 2012 の最新情報をあなたの街で ~

新しい OSやデバイス、そしてクラウドなど、新しいテクノロジーの登場が企業における IT に対する期待を多様化させている現在、IT の基盤ともいえる開発ツールにおいても大きな変革期を迎えています。 マイクロソフトの最新の開発ツールである Visual Studio 2012 は、Windows 8ストアアプリケーションをはじめとするクライアント開発や、Windows Azure と ASP.NET を生かしたクラウド開発を支援する強力な開発環境であり、同時に、アプリケーションのテストやコード分析、バージョン管理などのアプリケーションの品質向上に欠かせない機能を大幅に強化し、開発者の様々なニーズにお応えするツールです。   この Visual Studio 2012 の魅力をお届けするために、 この春、Discover セミナーを全国にて展開します!   全国19 都市全 20 回開催を予定していますので、サイトにて開催情報をご確認いただき、ぜひお近くの会場にお越しください!   http://www.microsoft.com/ja-jp/dev/2012/seminar/discover.aspx   ※開催地、開催日に関して一部未定の地域もございますが、順次 Web ページにて更新を行わせていただきます。    


Microsoft Office Developer Tools for Visual Studio 2012 が RTW されました

Office 用アプリ、SharePoint 用アプリの開発を Visual Studio 2012 で可能にする Microsoft Office Developer Tools for Visual Studio 2012 が 2013年3月4日 (PST) にリリースされました。昨日付での米国本社の Developer Devision (開発ツール系の開発を行っているチームです) の副社長 (Vice President) である Somasegar の Blog でアナウンスが行われました。 Microsoft Office Developer Tools for Visual Studio 2012 では JavaScript や HTML5 といった Web テクノロジーを使用し、Office 2012、Office 365、SharePoint 2013 上で動作するリッチで没入感のあるアプリを構築することができます。   Microsoft Office Developer Tools for…


VS 魂 100連発、公開を開始しました!

先日 VS 魂 100連発 のビデオシリーズに関して告知を行わせていただきましたが、予告通り 3月4日(月)より、公開を開始させていただきました! このシリーズは、Visual Studio を愛してやまない日本マイクロソフトのエバンジェリストがほぼ毎日の勢いで Visual Studio を使った開発手法、テクニックを紹介する、という企画で、ライブストリーミングを行いつつ、Channel9 等の様々な媒体でもとりためたビデオの配信を行う予定です。   現在、昨日収録を行った以下の6本のビデオを、UX-TV のチャンネルから見ていただくことができます。   VS100-001 Single Page Application by 井上章 VS100-002 Windows ストアアプリ XAML/C#でHello World 、新しいアプリケーション by 大西 彰 VS100-003 Windows ストアアプリ、XAML/C# 基本ページを使う by 大西 彰 VS100-004 Windows Phone by 高橋 忍 VS100–005 Windows Phone 2 by 高橋 忍 VS100-006 Windows Azure…


"VS魂 100連発" ビデオシリーズ ~ Visual Studio のステキなデモをお届けします♪

来週 3月4日月曜日から、Visual Studio を愛してやまない日本マイクロソフトのエバンジェリストがほぼ毎日の勢いで Visual Studio を使った開発手法、テクニックを紹介するビデオシリーズ   VS 魂 100連発 を開始します!! (ちなみに “ぶい えす だましい ひゃく れんぱつ” と読みます♪)     ビデオに関してはライブ配信として UStream を利用(※)しつつ、撮りためたビデオに関してはしっかりアーカイブしてまとめたうえで、UStream はもちろん、他の様々な媒体を使って配信したいと思っています。 ※ UX-TV を配信していたチャネルを使用予定です。http://www.ustream.tv/channel/ux-tv   詳しい配信時間の案内等は、エバンジェリストのチームブログにてアップデートがあるかと思いますので、そちらにご注目ください!   エバンジェリストチームのブログ https://aka.ms/EvaJ  


Web アプリケーション開発をさらに強力に支援 ~ ASP.NET および Web Tools 2012.2 をリリースしました。

近年のアプリケーション開発において重視されている価値の一つに、「ユーザーに対し継続的に価値を届ける」、ということがあります。   アプリケーションのライフサイクルを考えてみると、実際に開発を行っている期間よりも、アプリケーションをリリース後、ユーザーによって利用されている期間のほうが長いはずです。ユーザーによる利用を経て受け取ったフィードバックや提案をどのようにアプリケーションに反映し、どのタイミングでユーザーに提供するかは開発チームにとっても大きな課題の一つです。   Visual Studio の開発チームでは、Visual Studio のユーザーである開発者の皆様に「ユーザーに対し継続的に価値を届ける」ことがより容易に、そして素早くできるように様々な機能を提供していますが、一方で自らが「ユーザーに対し継続的に価値を届ける」、ということを実践できるように Visual Studio 2012 において(ユーザーである開発者の皆様に)継続的に機能強化を行うことをお約束しています。     このお約束に対する実践として、昨年の夏に Visual Studio 2012 をリリースした後、秋(11月)に Update 1 として新たな価値提供を行わせていただきました。また、この冬に更なる価値の提供として Update 2 を予定しています(現在 Visual Studio 2012 の Update 2 のプレビュー提供を行っています)。     そして本日お伝えするのは、これとは別に ASP.NET と Web Tools に関しての新しい価値提供となる アップデートのリリースについてです。 (エバンジェリスト井上の Blog より抜粋)     ASP.NET および Web Tools のアップデートとなる 2012.2 (※)では、以前より情報をお伝えしていた Single…