はじめに
この記事では、次の内容を中心に紹介します。
- Visual Studio 14 CTP4におけるASP.NET vNextアプリケーションの挙動
- Kプロジェクトを構成する機能(KVM/KPM/KRE/Kコマンド)
なお、執筆時点(2014年10月時点)における開発バージョンの情報であることをご了承ください。
Visual Studio 14 CTP4でのアプリケーション作成
早速ですが、Visual Studio 14 CTP4(コミュニティテクノロジープレビュー4)でASP.NET vNextを試してみましょう。次期Visual Studioは、MSDNから入手することができます。本稿ではMicrosoft AzureのVMイメージにて実行しています。
vNextアプリケーションの作成
これまで同様にASP.NETアプリケーションは「プロジェクトの新規作成」から作成できます。
ただし、従来のASP.NETアプリケーションとは異なり、vNext専用のテンプレートが表示されています。新しいプロジェクトテンプレートは「vNext Empty Webアプリケーション」「vNext Webアプリケーション」「vNext クラスライブラリ」「vNext コンソールアプリケーション」の4つです。Web技術にも関わらずコンソールアプリケーションがあることを不思議に感じたかもしれませんが、最新のASP.NETではWebサーバーを起動するようなコンソールアプリケーションを開発することができます。ここでは「vNext Webアプリケーション」を選択します。
依存性の解決
それでは、生成されたvNextアプリケーションを見てみましょう。
vNextアプリケーションのファイル拡張子
生成されたプロジェクトの拡張子は「*.csproj(C#)」や「*.vbproj(VB)」ではなく、「*.kproj」となります。Kプロジェクトでは、コンパイラの都合によりC#のみサポートします。
依存アセンブリの自動解決
vNextプロジェクトを開いた時の動作ログに注目してみましょう。出力ウィンドウのPackage Manager Logには、以下のログが表示されています。
Restoring packages for C:\Users\aoki\Documents\Visual Studio 14\Projects\CodeZineVnext\src\CodeZineVnext\project.json GET https://www.nuget.org/api/v2/FindPackagesById()?Id='EntityFramework.SqlServer'. GET https://www.nuget.org/api/v2/FindPackagesById()?Id='Microsoft.AspNet.Mvc'. GET https://www.nuget.org/api/v2/FindPackagesById()?Id='Newtonsoft.Json'. OK https://www.nuget.org/api/v2/FindPackagesById()?Id='EntityFramework.SqlServer' 1478ms OPEN C:\Program Files (x86)\Microsoft Web Tools\Kpm\EntityFramework.SqlServer\7.0.0-alpha4\EntityFramework.SqlServer.nuspec (中略) Resolving complete, 17450ms elapsed Installing EntityFramework.SqlServer 7.0.0-alpha4 OPEN C:\Program Files (x86)\Microsoft Web Tools\Kpm\EntityFramework.SqlServer\7.0.0-alpha4\EntityFramework.SqlServer.7.0.0-alpha4.nupkg OPEN C:\Program Files (x86)\Microsoft Web Tools\Kpm\System.Data.SqlClient\1.0.0-alpha4\System.Data.SqlClient.1.0.0-alpha4.nupkg Installing System.Text.RegularExpressions 4.0.0.0 OPEN C:\Program Files (x86)\Microsoft Web Tools\Kpm\System.Text.RegularExpressions\4.0.0.0\System.Text.RegularExpressions.4.0.0.0.nupkg (中略) Restore complete, 35620ms elapsed
これは、Visual Studioによって必要なアセンブリが自動的にセットアップされていることを示しています。EntityFramework、Newtonsoft.Jsonのようなライブラリに加え、Microsoftが提供する.NET Frameworkのライブラリも設定されていることがわかります。
Kプロジェクトでは、KPM(Kパッケージマネージャ)という新しい仕組みによって様々なアセンブリを管理します。アセンブリは自動的にダウンロードされ、ユーザー毎のKPMフォルダ「C:¥Users¥<ユーザー名>¥.kpm¥packages¥」に格納されます。また、高速化のために共有用のKPMフォルダ(C:¥Program Files¥Microsoft Web Tools¥Kpm¥)を使用してダウンロード回数を減らしたり、キャッシュフォルダ(C:¥Users¥<ユーザー名>¥AppData¥Local¥kpm¥cache)を利用してNuGetへの問い合わせ回数を減らす工夫がされています。
これまで、ASP.NETアプリケーションではアセンブリを手動で管理することが一般的でしたが、Kプロジェクトではインターネットから簡単にアセンブリをダウンロードして管理できます。これにより、サーバーやクラウドへのデプロイがとても簡単になります。
この依存情報を記載するファイルが、Project.jsonという新しいファイルとなります。