SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

特集記事

クラウド時代に最適化されるASP.NET vNextとは ~Visual Studio14(CTP4)とK Projectの紹介

  • X ポスト
  • このエントリーをはてなブックマークに追加

 1996年にActive Server Pages、2002年にASP.NET、2009年にASP.NET MVCというように、Microsoft社は約6年に1回のペースで革新的なWeb技術を公開してきました。2015年に登場が噂される「ASP.NET vNext」でも大幅なアップデートが予定されています。次期ASP.NETはクラウドに最適化され、WindowsやIISに依存しないオープンな基盤となります。本稿では、その新しい仕組みである「Kプロジェクト(K Project)」について紹介します。

  • X ポスト
  • このエントリーをはてなブックマークに追加

はじめに

 この記事では、次の内容を中心に紹介します。

  • 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アプリケーション
作成されたvNextアプリケーション

vNextアプリケーションのファイル拡張子

 生成されたプロジェクトの拡張子は「*.csproj(C#)」や「*.vbproj(VB)」ではなく、「*.kproj」となります。Kプロジェクトでは、コンパイラの都合によりC#のみサポートします。

依存アセンブリの自動解決

 vNextプロジェクトを開いた時の動作ログに注目してみましょう。出力ウィンドウのPackage Manager Logには、以下のログが表示されています。

VSでvNextアプリを開いたときのログ(依存ファイルの解決)
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への問い合わせ回数を減らす工夫がされています。

KPMフォルダにダウンロードされたアセンブリ(Microsoft.*など)
KPMフォルダにダウンロードされたアセンブリ(System.*、Microsoft.*など)

 これまで、ASP.NETアプリケーションではアセンブリを手動で管理することが一般的でしたが、Kプロジェクトではインターネットから簡単にアセンブリをダウンロードして管理できます。これにより、サーバーやクラウドへのデプロイがとても簡単になります。

 この依存情報を記載するファイルが、Project.jsonという新しいファイルとなります。

次のページ
Project.jsonとは

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
特集記事連載記事一覧

もっと読む

この記事の著者

WINGSプロジェクト 青木 淳夫(アオキ アツオ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS Twitter: @yyamada(公式)、@yyamada/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/8209 2014/10/24 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング