第2回 Webアプリを手動/自動で作成する連載:OS X/LinuxによるASP.NET 5アプリ開発ガイド(1/4 ページ)

今回は手作業で簡単なWebアプリを作成しながら、ASP.NET 5 Webアプリの基本構造を見た後、これを自動化する方法を紹介する。

» 2015年03月20日 12時47分 公開
[かわさきしんじInsider.NET編集部]
連載:OS X/LinuxによるASP.NET 5アプリ開発ガイド
業務アプリInsider/Insider.NET

powered by Insider.NET

「連載:OS X/LinuxによるASP.NET 5アプリ開発ガイド」のインデックス

連載目次

 前回はASP.NET 5をOS X/Ubuntuにインストールし、サンプルアプリを動作させるまでをステップバイステップで見た。今回は自分で手を動かして、ASP.NET 5のMVCアプリを実際に作成し、その後、アプリのひな型を自動作成するためのツール「yeoman」のインストールまでを見てみることにしよう。

 なお、前回「XRE」と記述していたクロスプラットフォームな.NET実行環境の名称が「DNX」(.NET Execution Environment)に変わっている(「KRE」→「XRE」→「DNX」)。本稿ではDNX以前のバージョン(OS X/Ubuntu共に1.0.0-beta3)を使用している。また、実行環境についてはDNXではなくXREと記述する。DNXでの動作は未確認なので、実際に動かしてみようという方は安定版を使ってほしい。

手作業でWebアプリを作成してみる

 まずは前回実行してみたHelloMvcアプリと同様なアプリを手作業で構築しながら、ASP.NET 5 Webアプリの基本構造について見ていくことにする。

最低必要なファイル

 ASP.NET 5アプリを実行するために最低限必要になるのが以下の二つのファイルだ。

  • project.jsonファイル
  • Program.csファイルもしくはStartup.csファイル

 project.jsonファイルはプロジェクトに関する各種構成を記述したファイルだ。XREで実行するには、コンソールアプリの場合はProgram.csファイルが、Webアプリの場合はStartup.csファイルが必要になる(実際には、コンソールアプリでは「public void Main」メソッドを含んだ「Program」クラスを含んでいれば、Webアプリでは「public void Configure」メソッドを含んだ「Startup」クラスを含んでいれば、ファイル名はこれらと違っていてもよい)。

 project.jsonファイルにはプロジェクトの設定をJSON形式で記述する。最低限必要な設定内容は以下のようになる。ここでは、「~/work/aspnet5」ディレクトリにWebapptestディレクトリを作成し、そのディレクトリ内で作業を進めることにする。

{
}


空の構成ファイル

 最初は、catコマンドなどを使って、空の内容のproject.jsonファイルを作っておこう。

$ cat > project.json
{
}
[Ctrl]+[D]
$


空のproject.jsonファイルの作成

 ここではASP.NET MVC 6アプリを作成するので、もう一つ必要なファイルはStartup.csファイルだ。この内容は取りあえず次のようにしておこう。

namespace Webapptest
{
  public class Startup
  {
  }
}

Webアプリのソースコード
ここではプロジェクトのディレクトリ名(Webapptest)と名前空間を一致させ、その中にStartupというクラスを作成している。

 次に、kpmコマンドを使ってプロジェクトに必要なアセンブリを設定する。

「kpm install」コマンドによる依存関係の設定

 project.jsonファイルは任意のテキストエディターを使用して編集できるが、依存関係の設定に関してはコマンドラインから「kpm install」コマンドを使って設定可能だ。

 前回は「kpm restore」のようにして、アプリが必要とするライブラリパッケージを取得するのに使用した。が、このコマンドは以下に示すように、プロジェクトの構築時に必要なパッケージを指定するのにも使える。

 例えば、ここではMVCアプリを作成するので「Microsoft.AspNet.Mvc」パッケージが必要になる。そこで以下のようにして、このパッケージをインストールする。

$ kpm install Microsoft.AspNet.Mvc
  …… 省略 ……
Restore complete, 711ms elapsed


「Microsoft.AspNet.Mvc」パッケージのインストール

 これにより、project.jsonファイルには以下のようなエントリが追加される。

$ cat project.json 
{
 "dependencies": {
   "Microsoft.AspNet.Mvc": "6.0.0-beta3"
  }
}$


「kpm install」コマンドにより依存関係の設定が行われた

[コラム]NuGet.configファイルの設定

 前回はNuGet.configファイルで以下のような設定を行うことで、「kpm restore」で復元できなかったパッケージをMyGetからインストールできるようになると述べたが、これはもろ刃の剣的な性質を持っている。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="AspNetVNext" value="https://www.myget.org/F/aspnetvnext/api/v2/" />
    <add key="NuGet.org" value="https://www.nuget.org/api/v2/" />
  </packageSources>
</configuration>

MyGetからパッケージをインストールするためのNuGet.configファイルの設定

 このような設定を行った場合(特に「~/.config/NuGet/NuGet.config」ファイルで上記を記述した場合)、ローカルマシンにインストールしているXREのバージョンと「kpm install」でインストールされるパッケージのバージョンが一致せずに、アプリの環境復元と実行に失敗する場合がある。

 そのため、「~/.config/NuGet/NuGet.config」ファイルの設定は以下のようにデフォルトのNuGet.configファイルと同じ内容にしたまま、必要に応じて、プロジェクトディレクトリで上記の設定を行うのがよいだろう。

<?xml version="1.0" encoding="utf-8"?>
<configuration />

デフォルトのNuGet.configファイルの内容


 「kpm install Kestrel」コマンドも実行しておこう。前回も登場したKestrelはOS X/Ubuntu上でASP.NET 5 WebアプリをホストするWebサーバーだ。ただし、コマンドラインでアプリを実行する際には「k kestrel」と小文字の「kestrel」を指定したが(これはproject.jsonファイルの設定による)、パッケージをインストールする際には「Kestrel」と大文字の「K」で始める必要がある。

 「k run」「k kestrel」など、kコマンドに与える引数(実際に実行するコマンドライン)の指定に関しては「kpm install」などのツールの支援はないようで、テキストエディターを使って自分で記述する必要がある。ここでは以下のようなコマンドを追加した。

{
  "dependencies": {
    "Microsoft.AspNet.Mvc": "6.0.0-beta3",
    "Kestrel": "1.0.0-beta3"
  },
  "commands": {
    "kestrel": "Microsoft.AspNet.Hosting --server Kestrel --server.urls http://localhost:5004"
  }
}


"commands"セクションをproject.jsonファイルに追加

 この状態で試しにアプリを実行してみるとどうなるだろう。

$ k kestrel
System.Exception: TODO: ConfigureDevelopment or Configure method not found
  at Microsoft.AspNet.Hosting.Startup.StartupLoader.FindMethod (System.Type startupType, System.String methodName, System.String environmentName, System.Type returnType, Boolean required) [0x00000] in <filename unknown>:0
  …… 省略 ……


「ConfigureDevelopment」メソッドもしくは「Configure」メソッドが見つからないのが原因で例外が発生している

 上のように例外が発生する。その原因は「ConfigureDevelopment」メソッドもしくは「Configure」メソッドが見つからないからだ。つまり、ASP.NET 5 Webアプリではこれらのいずれかがアプリのエントリポイントとなる。次ページではこれについて見てみよう。

       1|2|3|4 次のページへ

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。