読者です 読者をやめる 読者になる 読者になる

xin9le.net

Microsoft の製品/技術が大好きな Microsoft MVP な管理人の技術ブログです。

ASP.NET 5アプリをMac OS上で実行する

.NET Cross Platform

//build/ 2015 の基調講演で Mac OSX / Linux 向けの .NET Core 5 が Preview 版として公開されたとの発表がありました。

.NET Core Release Announce

そんな発表からもうひと月が経過しましたが、遅ればせながら実際に Mac OSX 上で動作するかを試してみました。基本的には以下のチュートリアルに従って実行したものですので、特別な何かではありません。

Your First ASP.NET 5 Application on a Mac — ASP.NET 0.0.1 documentation

1. Homebrew のインストール

まず環境構築として Homebrew をインストールします。これをインストールしておくことで簡単に DNVM (.NET Core のバージョン管理ツール) を取得できるようになります。まずまず Mac OSX とか全然知らないので Homebrew とか言われてもチンプンカンプンな私ですが、黙って従いました。とりあえず、ターミナルを起動して以下のコマンドを打ち込みます。インストール画面が出たりしますが、そのまま続行します。

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

2. DNVM のインストール

次に Homebrew を利用して DNVM (.NET Version Manager) をインストールします。ターミナルで下記のコマンドを実行します。

brew tap aspnet/dnx
brew update
brew install dnvm

インストールが完了したら dnvm の動作確認をします。そのままコマンドを打ち込みましょう。

dnvm

もしエラー (-bash: dnvm: command not found) が出る場合は、下記コマンドを実行してみてください。同一セッション内で dvnm コマンドが利用できるようになるはずです。

source dnvm.sh

3. DNX のインストール

次に最新の DNX をインストールします。下記コマンドを入力します。安定版として公開されていない最新版をリリースする場合は -u を入力すると良いようです。

dnvm upgrade

インストールが完了したら、DNX が実際にインストールされたかどうかを確認しましょう。以下のような感じになれば OK です。

dnvm list

dnvm list

4. ASP.NET 5 の空テンプレートを入手

次に実際に実行するための ASP.NET 5 アプリを何らかの方法で入手します。Yeoman を利用することでもテンプレートを作ることができるようですが、今回は Visual Studio 2015 RC で空のテンプレートから作成したものを持って行きました。

ASP.NET 5 空テンプレート

5. Kestrel の設定を追加

Mac OSX 上に ASP.NET 5 アプリをホストして動作させる場合は Kestrel を利用します。project.json を下記のように書き換えます。書き換えは Visual Studio Code などお好きなエディターで行えば OK です。また、IIS や WebListener などは Mac OSX 上で動作させるためには不要なので、(最小限の構成とするために) 削除しておきました。

{
    "webroot": "wwwroot",
    "version": "1.0.0-*",

    "dependencies": {
        "Microsoft.AspNet.Hosting": "1.0.0-beta4",
        "Kestrel": "1.0.0-beta4"
    },

    "commands": {
        "kestrel": "Microsoft.AspNet.Hosting --server Kestrel --server.urls http://localhost:5000"
    },

    "frameworks": {
        "dnx451": { }
    },

    "publishExclude": [
        "node_modules",
        "bower_components",
        "**.xproj",
        "**.user",
        "**.vspscc"
    ],
    "exclude": [
        "wwwroot",
        "node_modules",
        "bower_components"
    ]
}

6. パッケージのリストア

project.json で設定した依存関係を解決します。簡単に言うと NuGet 等のパッケージの復元です。以下のコマンドをターミナルで実行します。注意点としては project.json のあるフォルダにカレントディレクトリを移しておく必要がある ということです。

cd <project.jsonのあるフォルダ>
dnu restore

結構長かったですが、以上で準備完了です。

7. 実行

Kestrel 上で ASP.NET 5 アプリケーションを実行します。以下のコマンドを打ち込みましょう。

dnx . kestrel

Started の文字が表示されれば OK です。今回は project.json で localhost の 5000 番ポートで動かすように設定しているので、ブラウザで 'http://localhost:5000' を開きましょう。以下のような感じで表示されているでしょうか?

Run ASP.NET 5 app on Mac OSX

Mac OSX でも ASP.NET 5 アプリケーションが動きましたね!あとはソースコードをいじって遊ぶだけです。'exit' と入力すれば Kestrel サーバーを終了させることができます。