Tech Racho エンジニアの「?」を「!」に。
  • 開発

WindowsにVagrantとVirtualBoxを使ったUbuntu GUI開発環境を構築する

Windows機で開発を進めていくとWindows由来の挙動に出くわすことが多く、本来開発に注ぐべきパワーをそうした挙動の調査・解消に向けなければならず、開発スピードが遅くなってしまいます。
一方でmacに環境を移し替えようと思っても、それはそれでコストやその他環境のために難しいこともあると思います。

そうしたWindowsで開発する難しさを解消するひとつの手段として、VirtualBox + Vagrantを使って仮想マシン上に開発環境を構築する、というものがあります。

正直なところ、Vagrant + VirtualBoxを利用した仮想マシン上での開発環境の構築はQiitaやその他技術ブログ等ですでに多く紹介されていますが、今回は僕なりの設定方法を交えてまとめてみようかと思います。

なお、今回のWindowsのバージョンは基本的にWindows10を想定しています。

1. まずはVagrantとVirtualBoxをインストール

※うまく動作しない場合には

上記リンク先は最新バージョンのダウンロードができるものを貼ってありますが、VagrantおよびVirtualBoxそれぞれのバージョンの相性や環境の違いなどによりうまく動作しないこともあります。
そんなときはバージョンを下げてみると動くことがありますので、下記の古いバージョンに落として確認してみてください。

2. Vagrantfileの作成

次にVagrantfileを作成していきます。
Vagrantfileというのは、VagrantおよびVirtualBoxを使うための設定が記載されたファイルです。
まず、好きなところにVagrantfileを置くためのフォルダーを作っていきます。
今回はCドライブ直下にmachineというフォルダーを作ります。
パスはこういう感じです。

C:\machine

そして次にwinodws PowerShellを起動します。
起動後、

cd C:\machine

と打ち込み、先ほど作ったmachineフォルダーに移動します。
移動後、

vagrant init

と打って下記画像のオレンジの枠内のようなメッセージが出ればOKです。

C:\machineの中にはVagrantfileというファイルができているはずです。

3. boxのインストール

boxというのは、仮想マシンで使うOSのイメージファイルのことです。
次はこのboxをインストールしていきます。

今回はUbuntu16.04というboxを追加したいので、まず先ほど作成したVagrantfileの冒頭部分(15行目前後)の

  config.vm.box = "base"

というところを

  config.vm.box = "bento/ubuntu-16.04"

と変更します。
ここは以下で説明する追加するbox名を指定します。
Vagrantfileでboxを指定した後は、PowerShell上で

vagrant box add bento/ubuntu-16.04

と打ち込めばboxがインストールされます。
これでboxのインストールは完了です。

他のboxを使いたい場合

上記サイトにいけば他にもいろいろなboxが配布されていますので確認してみてください。

4. Vagrantfileの編集

続いてVagrantfileを編集していきます。

4-1. private networkのIPアドレス設定

Vagrantfileの35行目前後に

  # config.vm.network "private_network", ip: "192.168.33.10"

という箇所があるので、先頭の#を外しコメントを解除します。
このIPアドレスは、例えば実際開発をする段になってホストOS側(今の場合はWindows側)のブラウザで見た目や動作の確認をしたいときにhttp://192.168.33.10:3000/hogehogeなどという風にして使います。
IPアドレスは特にこだわりがなければ変える必要はありません。

4-2. VirtualBoxの設定

次に、VirtualBoxの設定を行っていきます。
ここまではVagrantの設定のみを書いてきましたが、実際に仮想マシンが動くのはVirtualBox上なのでVagrantfileにはVirtualBoxの設定を書いておくこともできます。
52行目前後からの

 # config.vm.provider "virtualbox" do |vb|
  #   # Display the VirtualBox GUI when booting the machine
  #   vb.gui = true
  #
  #   # Customize the amount of memory on the VM:
  #   vb.memory = "1024"
  # end

という箇所を変更していきます。
今回はGUI環境の構築のため、下記のように変更します。

  config.vm.provider "virtualbox" do |vb|
    vb.gui = true
    vb.memory = "4096"
    vb.cpus = 2
    vb.customize [
      "modifyvm", :id,
      "--vram", "256",
      "--clipboard", "bidirectional",
      "--accelerate3d", "on",
      "--hwvirtex", "on",
      "--nestedpaging", "on",
      "--largepages", "on",
      "--ioapic", "on",
      "--pae", "on",
      "--paravirtprovider", "kvm",
    ]
  end

このあたりの設定は下記のリンクを参考にしています。

以上でVagrantfileの設定は完了です。

5. 仮想マシンの起動とubuntu-desktopの追加

ここまできたらいよいよ仮想マシンを起動していきます。
PowerShellに戻り

vagrant up

と打つと起動します。

ただ、現在はまだGUI環境のためのVirtualBoxの設定をしただけなのでGUIは使えません。VirtualBoxのターミナルもまだ黒い画面のCLIのままです(VirtualBoxのターミナルをクリックしてマウスポインタが見えなくなってしまったら右のコントロールキーを押せば元に戻ります)。
そこでまず、PowerShell側で

vagrant ssh

と打ちます。
すると、下記画像のような入力メッセージが表示され、Ubuntuにログインできるようになります。

その後、

# 日本のパッケージリポジトリを追加
# https://www.ubuntulinux.jp/japaneseを参考
$ wget -q https://www.ubuntulinux.jp/ubuntu-ja-archive-keyring.gpg -O- | sudo apt-key add -
$ wget -q https://www.ubuntulinux.jp/ubuntu-jp-ppa-keyring.gpg -O- | sudo apt-key add -
$ sudo wget https://www.ubuntulinux.jp/sources.list.d/xenial.list -O /etc/apt/sources.list.d/ubuntu-ja.list

$ sudo apt-get update 
$ sudo apt-get upgrade

$ sudo apt-get install ubuntu-desktop

を実行し、desktop環境用のパッケージが入るのを待ちます。
ubuntu-desktopのインストールには非常に時間がかかるので、気長に待ちましょう。

インストールが完了したらPowerShell上でctrl + Dを押すなどしてUbuntuから抜けた後、

vagrant reload

でVagrantを再起動すればUbuntuのGUI環境がひとまずできました。

6. 各種日本語化対応

6-1. キーボード日本語化対応

キーボード配列を変更します。

現時点でのキーボード配列は上記のようにUS配列のはずなので、これをJIS配列にしていきます。
まず

dpkg-reconfigure keyboard-configuration

と打ち込みます。
すると、下記のような選択肢が出てくるので、こちらを参考にして

Generic 105-key (Intl) PC → Japanese → Japanese → The default for the keyboard layout → No compose key→NO

と選択していきます。
その後、

画面右上の「Ja」から「Text Entry Settings」を選び、左下の「+」を押して「Japanese」を追加します。
そして既存のEngilish部分を左下の「-」で消した後、「Switch to next source using」の部分で全角/半角キーを押します。
これで普段使用するキーボード入力と同様の日本語入力ができるようになりました。

ログインしたり再起動した場合にキーボードの配列が元に戻ってしまう場合

僕自身確認は取れていないですが、場合によっては、ログインした後や再起動をした後にキーボードの配列がUS配列に戻ってしまうこともあるようです。
そういう場合には下記のサイトのやり方を参考にしてみるのもいいかもしれません。
http://www.what-a-day.net/entry/vm-keyboard-layout

6-2. Ubuntu日本語化対応

続いてUbuntuデスクトップ環境の日本語対応を行っていきます。
まず以下のコマンドを打ってターミナルの日本語化対応を進めます。

sudo apt-get install language-pack-ja-base language-pack-ja

localectl set-locale LANG=ja_JP.UTF-8 LANGUAGE="ja_JP:ja" 
source /etc/default/locale 

その後、Windowsキーを押して出てきた入力フォームに以下のように入力してlanguage supportを開きます。

「言語サポートが完全にインストールされきってません」という風なメッセージが英語で出てくるので完了させた後以下のようにして「日本語」を一番上に持ってきます。

あとはログアウトして入りなおせばデスクトップ環境は日本語表記になっているはずです。

6-3. 日本語入力対応

まず以下のパッケージをインストールします。

sudo apt-get install fcitx fcitx-mozc

その後、上記と同じlanguage support(現在は日本語化により「言語サポート」という表記)内の「キーボード入力に使うIMシステム」というところを「fcitx」に変更します。

一度ログアウトしてログインし直してから

上記画像の一番左の長方形のようなアイコンをクリックし、「現在の入力メソッドの設定」を選択します。そして、左下の「+」ボタンを押して「Mozc」と「キーボード 日本語」を選択します。
下記の画像のようになっていればOKです。
もし他の入力メソッドがあれば、そのメソッドを選択後左下の「-」を押せば消えます。

以上です。
ありがとうございました。


CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。