M12i.

学術書・マンガ・アニメ・映画の消費活動とプログラミングについて

Ubuntu16.04上にASP.NET MVC 5.2開発環境をつくる

前回の記事ではUbuntu14.04をターゲットとして、ASP.NET MVC 5.2の開発環境を構築しました。今回はその追補として今年4月にリリースされたUbuntu16.04をターゲットにした場合の方法を記載しておきます。

もともと14.04をターゲットにしたのは「本筋と関係のないところで躓きたくない」ということでUbuntu Japanese Teamが提供してくれている「日本語REMIX」を使用したためでした。ただ前回記事を見ておわかりの通り、結果的には標準のパッケージ・リポジトリに登録されているMonoDevelopのバージョンに起因して、手間ひまかかっていたところがあります。それならばと今度は最新のLTSを使うことにしました。

前提

作業環境/仮想マシンホスト

マシン: Macbook 12inch
CPU: 1.1GHz 2コア
メモリ: 8GB
OS: macOS 10.12 Sierra

開発環境/仮想マシン

マシン: VirtualBox5.1.6により再生された仮想マシン
CPU: 1コア
メモリ: 2GB
OS: Ubuntu 16.04 LTS
IDE: MonoDevelop 5.10
フレームワーク: .NET 4.5、ASP.NET 5.2

環境構築

フェーズ1:仮想マシンの用意

まずはこれから環境構築していくLinuxマシンを用意する。
今回はMacbook上で作業するのでLinuxマシンを稼働させるための仮想マシンを用意する必要がある。

Oracle VM VirtualBox公式サイトからMac OS X用のインストーラをダウンロードする。

f:id:m12i:20161008142059p:plain

ダウンロード・ページではMac OS Xインストーラのリンクが「VirtualBox 5.1.6 for OS X hosts amd64」となっており、この「amd64」という表記が釈然としないが、ともかくこれしか選択肢はないのでこれを選ぶ。

ダウンロードしたdmgファイルをオープンして、インストーラを起動、ウィザードにしたがい淡々とインストールする。

続いて仮想マシン上で動かすLinux OSの準備をする。Ubuntuの公式サイトのダウンロード・ページから、16.04 LTSのDesktopエディションのISOファイルをダウンロードした(下図)。

f:id:m12i:20161008205247p:plain

続いて仮想マシンを作成する。前回はハードディスクはあらかじめ作成済みのもの(日本語REMIX)を使用したが今回は空っぽのディスクを新規に作成してこれを用いる(下図)。

f:id:m12i:20161008205836p:plain

今回は搭載メモリ2GBで仮想マシンを作成している。前回は1GBでそれで十分すぎるくらいであった。何しろMonoDevelopは5〜10秒で起動するし、ビルドもホストマシン上で動くXamarinと比較して同程度かそれ以上に高速であった(Visual Studioなど比較対象にならないレベルなのは言うまでもない)。にもかかわらず今回サイズを大きくしたのはUbuntuそのものやFirefoxなど他のアプリの動作が改善することを期待してのものである(結果は全然改善しなかったが)。

仮想マシンの作成が終わったら、仮想マシンの設定画面を開き、先程ダウンロードしたISOファイルを仮想光学ドライブのディスクとして指定して(下図)、その上でマシンを起動する。あとはインストーラに案内されるままインストールを行う。

f:id:m12i:20161008205926p:plain

フェーズ2:MonoDevelopのインストール

前回はMonoDevelopをインストールした後、ソリューションの作成でいろいろ問題があったが、今回はMonoDevelopインストールの段階で問題に遭遇する。Ubuntu 16.04 LTSの標準のパッケージ・リポジトリに登録されたMonoDevelopではソリューション新規作成時のウィザードでASP.NET MVCのソリューションが選べないのである(一方でNuGetアドインはデフォルトで備わっているのはうれしいところ)。

そこで、例によって先達たちの苦労の痕跡を探し、「Ubuntu 16.04のMonoDevelopをインストールしたけどASP.NETのソリューション・テンプレートが表示されない」という旨のstackoverflowの投稿を発見。これにしたがってインストールを行うことにする。

まず端末を起動する。そして以下の5つのコマンドを順次実行する:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb http://download.mono-project.com/repo/debian wheezy main" | sudo tee /etc/apt/sources.list.d/mono-xamarin.list
sudo apt-get update
sudo apt-get install mono-complete ca-certificates-mono mono-xsp4
sudo apt-get install monodevelop=5.10.0.871-0xamarin2

これでASP.NET MVC 5.2向けのソリューション・テンプレートが使用できるバージョンのMonoDevelopがインストールされる。NuGetアドオンもデフォルトで備わっている。

f:id:m12i:20161008211918p:plain

よって、前回あれこれ苦労したソリューションづくりの問題も解消している。テンプレートを使用してASP.NET MVC 5.2のソリューションを作成したら、ソリューションを右クリック→[Restore NuGet Packages]をクリックして、必要なパッケージをダウンロードし、その上でビルド→実行するだけである。例によってなぜか初回接続時にエラーになるのだが、2回目以降は解消するのも変わらない。

f:id:m12i:20161008212028p:plain

ちなみにせっかくDesktopエディションのUbuntuを使っているので本当はソフトウェアセンター(GUI)でこれらのインストール作業をしたかったのだが、16.04 LTSのソフトウェアセンターは14.04 LTSと比べても格段に遅くなっており使いものにならない。上述のとおり非標準のリポジトリを追加したりバージョンを特別指定してパッケージをインストールしたりとするので、コマンドラインのほうがやりやすいのも事実ではあるが。