Visual Studio エディションごとの価値

Visual Studio のどのエディションを使えばいいか迷ったらコレ!

はじめに

SNS を徘徊していると、「Visual Studio ってエディションがたくさんあってどれ使っていいかわからない」とか、「Express で十分だよね」とか、「Community でたからもうこれでいいよね」とか、「Ultimate/Enterprise はリーダークラスがもっていればいいよね」とか、「モデリングやらないから、Ultimate/Enterprise いらないよね」とかとか、いろいろ見たりします。

さぁ、そこで、さらっとエディションがどんなのがあって、どんな違いがあるのか、どれを使えばいいのかを見てみましょう。

Visual Studio のエディション

Visual Studio 2012 / 2013 でのエディション:

  • Visual Studio Community / Express
  • Visual Studio Professional
  • Visual Studio Test Professional
  • Visual Studio Premium
  • Visual Studio Ultimate

Visual Studio 2015 / 2017 / 2019 でのエディション:

  • Visual Studio Community
  • Visual Studio Professional
  • Visual Studio Test Professional
  • Visual Studio Enterprise

Visual Studio 2022 でのエディション:

  • Visual Studio Community
  • Visual Studio Professional
  • Visual Studio Enterprise

※ これ以外にも、Visual Studio Code や Visual Studio for Mac がでているがこれらはいわゆる従来からの Visual Studio ではないため、今回は含めない。

上述もしていますが、2014年秋に、Visual Studio Community という新たなエディションが発表されました。

それに加えで、チーム開発基盤として、Team Foundation Server (TFS) があり、これらの SaaS 版である旧名称 Team Foundation Service を含む、Visual Studio Online というソリューションプラットフォームも提供しているという感じです。

※ TFS 系列は、Team Foundation Server → Azure DevOps Server、TFS on Azure → Team Foundation Service → Visual Studio Online (VSO) → Visual Studio Team Services (VSTS) → Azure DevOps と名称変更をしている

 

以下は、Visual Studio のエディションで、分かりにくいポイントについて見ていきます。

Professional と Test Professional

Visual Studio Professional は、ざっくりいうと統合開発環境 (IDE) です。そう、いつものアレです。アレ以外のナニモノでもありません。

単体テストとかコード分析とか、結構高度な支援機能が搭載されています。Visual Studio で単体テストというと、独自フレームワークである MSTest を連想するかもしれませんが、Visual Studio 2012 からテストアダプターさえあれば、あらゆるテスティングフレームワークを分け隔てなく実行/結果の把握ができます。例えば、NUnit や xUnit.net, QUnit, Google Test, Boost Test, などなどいろいろなテスティングフレームワークが使えるようになってます。

ちなみに、Visual Studio Community は、この Visual Studio Professional 相当の機能を利用制限下のもので、無償提供するエディションといっていいでしょう。

では、Visual Studio Test Professional とはなにか?と思われるでしょう。これは、テスターさん(テストアーキテクト、テストエンジニアからテストオペレータさんまで)のための専用ツールです。IDE が開発者の専門ツールなら、Test Professional は、テスターの専門ツール、テスターの「統合テスト環境」ということができます。

「あー、Test Professionalって、Microsoft Test Manager ネ!」っと連想した方、ほぼ正解ですが、惜しいです。Test Professional には、フィードバッククライアントなどのうれしい機能も付いています。

実は、Test Professional は、テスターだけでなく、プロジェクトマネージャーさんなどにとって最適なツールセットを有しているのです。ちなみに、Test Professional では、IDE もインストールされます。これは、Visual Studio Shell というものです。 TFS へアクセスするチームエクスプローラーがあるので、Microsoft Project やみんな大好き Excel 連携がスムーズに行えてしまいます。注意点ですが、Test Professional のメインのある Microsoft Test Manager には、TFS が必須となります。TFS 以外の開発基盤を使っている場合にはこのツールはほぼ意味をなしません。

Professional と Enterprise (Premium, Ultimate)

たぶん、次に気になるのが、Professional と Enterprise (Premium または、Ultimate、以下、Enterprise と呼ぶ) の違いでしょう。簡単にいうと、Enterprise には、Professional で提供される全機能に加え、上述の Test Professional の全機能が含まれます。便利ですね。ちなみに、Visual Studio 2010 のときは、Test Professional の機能は、Ultimate には含まれていましたが、Premium には含まれていませんでした。実は、Premium がかなーり強力で、心強い武器になっていることがわかります。

もちろん、Enterprise は、Professional より強力な武器が含まれています。まぁ、その辺は、後でさらっと書きます。

なお、これらのエディションによる機能差については、公式サイトのリストを見るとよいでしょう:

Visual Studio

Visual Studio 2022 製品を比較して、お客様にとって最適のツールとリソースを見つけてください。…

ざっくりと Enterprise が Professional より優れているのは、レガシーコード改善機能です。コードからアーキテクチャを可視化したり、アーキテクチャに違反したコードをビルド時のエラーとして検知し通知したり(要はビルドでエラーにしてくれます)、いわゆるコピペコードを発見してくれたり、レガシーコードから単体テストを作ってくれたり(IntelliTest)、プロダクションコードを変更すると単体テストを自動実行してレッド/グリーンを通知してくれたり(Live Unit Testing)、本番環境でしか起きないバグのデバッグができてしまったり、といったことをやってくれます。

このご時世から考えるエディション選択

明示的な、設計~開発~テストといった工程がはっきりとリリースまでのサイクルでわかれないもしく、繰り返す状況ではそれぞれの成果や結果を次に活かすことが前提となってきます。その世界観では、モデリング機能は、設計フェーズでのみ使うとか、テスト機能はテストフェーズで使うということではなくなってきています。例えば、モデルは書いて終わりではなく、実装コード上で、アーキテクチャ検証を行い、問題ないかを継続的に見続けることができることがより重要になってきますし、モデルを陳腐化させない意味でも、常に更新かかり、かい離がなくする必要があります。同様に、アーキテクチャに基づいたテストの実施やカバレッジなども重要になります。

って考えると、ツールの原則に立ち返って、エンジニアのスキルの補完と効率化でツールを活用するとみていくと、行わなければならないことが不変だとして、それをどれだけツールやプラクティスでカバーできるのかをみていけば見通しがつきやすくなるわけです。

ここで、Visual Studio の各エディションにマップしてみましょう。

Visual Studio エディションごとの価値
Visual Studio エディションごとの価値

各エディションと能力の補完(Visual Studio 2013 時点のエディションにて表記)

Visual Studio エディションごとの価値
Visual Studio エディションごとの価値

はい。このように、コードの品質や、アーキテクチャにアラインしたコードがかけたり、レガシーコードの依存関係や、リファクタリングなどが自力で行えるだけのスキルや経験(場合によって才能)を有しているか、それをおこなうために十分な時間がかけられるならば、Professional の機能があれば、十分と考えることができます。そうでなければ、Enterprise (Premium や Utimate) の機能を活用してカバーすればいいというわけです。今の継続的デリバリーの時代には、スキルと経験があっても本業に注力するにはツールのチカラをできるだけ借りた方が得策です。また、チームメンバーが均質であることはほとんどありませんから、自ずと揃えておきたいエディションはわかってきます。まさか、開発者の道具をケチって開発ビジネスも成功させたいなんて都合良く考えている現場はもうないですよね?

問題提起

Visual Studio を開発者のスキルや効率だけでエディション選定してよいのでしょうか?

これだけだと、「数人だけ Enterprise で」とまだ言いそうですね。ここで重要なのは、開発は一人ではおこなわれていないこと、開発の成果物は、どの粒度であっても共同所有であるべきだということ、これらの導出、すなわちトレーサビリティが取れていないと、品質や責務を果たしているといった説明責任がとれないこと、その負担を開発者、マネージャに強いることになることを常に考慮しなければなりません。そう、これらはただ使って便利なだけではダメなのですね。

そこで、Team Foundation Server などを基盤として採用することをお勧めします。TFS は、Enterprise が持っている様々な有益な機能を活用した成果を共有し、つないでいくことができます。例えば、CI でレイヤー図で設定したアーキテクチャ検証をかけることで、ビルドエラーにならない、アーキテクチャ上の違反を CI で検出できます。ゲートチェックインにしておけば CI でビルドやテストで失敗した場合にごみがリポジトリに残らないことになりますので、常に本当の意味でクリーンなコードを共同所有することができるわけです。

Microsoft もこの辺りは非常によく考えていて、TFS や、Visual Studio Team Service の利用制限を緩和したり、価格体系を見直したりして時代にあった形で利用できるように調整しています。このあたりを追ってみるだけでも開発基盤のトレンドの勉強になりますよ。

さて、ここで開発基盤についてはもう一つ考えておかなければならないことがあります。今のご時世、すべての開発が Visual Studio でビルドできるとは限りません。また、開発基盤では自動ビルド (継続的インテグレーションなど) を行う必要もありますので、今、そして近い将来くらいを考えた上で最前な開発環境を整えておくことを考えましょう。

iOS や Android のアプリも作るし、RoR の案件もある、Herok へのデプロイもあるといった事情の中で、より開発者、開発チーム、そして、企画から運用に至るまでのコンセンサスをとるための開発基盤というのは考えるスコープも広げて検討する必要がでてきます。

例えば、一過性の単発プロジェクトであっても、適当に環境やツールを揃えればいいのではなく、その開発習慣が他のプロジェクトでも活かせるか?開発者にとって過度の負担を与えることにならないか?といったことを考えていかないと今の時代にもとまられる開発チームの資質を満たすことができなくなりつつあります。

また、今回の案件は、.NET / Windows プラットフォームだけだったからといって、安易に環境を選定してしまうと、他のプラットフォームでの案件をこなしているチームと整合性が取れなくなってきますし、人財の流動性にも影響を及ぼしてきます。

Visual Studio のエディションだけではなく、開発基盤として何を持つべきか、開発チームの資質が問われています。

あなたは、どんな開発環境を使いたいですか?あなたは、あなたの創ったソフトウェアを活かしてもらいたいですか?

正解のない時代のビジネスと現場のお悩みは、
弊社にご相談ください