Windows10でUbuntu18.04+Swift5.1.4+Vapor3.1.10を試す

手元にMacは無いですがWindows上でVaporが動くということで試してみました。

まずUbuntuを入れます。
「Windowsの機能の有効化」で検索して、Windows Subsystem for Linux のチェックをオン！
![Windowsの機能の有効化.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180278/65da7ddb-a9b9-ef09-b8e4-bc78d2b5915e.png)

Microsoft Storeでubuntuで検索します。
Ubuntu、Ubuntu 18.04 LTS、Ubuntu 16.04 LTSが出てきました。
![ubuntu3.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180278/cd9756fc-f6b9-f9a5-d16f-8d9ed7f79545.png)

Ubuntuは最新のLTSが入るようなので「入手」、「起動」します。
![ubuntu.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180278/26108ef9-5a4a-1a68-be69-5c45e3c1d4b5.png)


コンソールが開いて、ユーザー名とパスワードを入力して終了。

アップデートして

```
sudo apt-get update
sudo apt-get install clang libicu-dev
```

Swiftを取ってくる。現時点での最新は5.1.4
URLは[Swift.org](https://swift.org/download/#releases)で手に入ります。

```
wget https://swift.org/builds/swift-5.1.4-RELEASE/ubuntu1804/swift-5.1.4-RELEASE/swift-5.1.4-RELEASE-ubuntu18.04.tar.gz  
```

Swiftを展開して/usr/localへ持っていく

```
tar xzf swift-5.1.4-RELEASE-ubuntu18.04.tar.gz
sudo mv swift-5.1.4-RELEASE-ubuntu18.04 /usr/local
```

.bashrcでPATHへ追加して

```
echo 'export PATH=/usr/local/swift-5.1.4-RELEASE-ubuntu18.04/usr/bin:$PATH' >> .bashrc
source .bashrc
```

無事入りました。

```
swift --version
```

![swift-version.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180278/da50b239-5458-a60a-43b9-85c56644966e.png)


まだswiftがほぼわかってないので、atmarkitで「初心者のためのSwiftで始めるプログラミング入門」の言語の部分だけ読んでみます。

いよいよVaporをインストールですが、[公式ページ](https://docs.vapor.codes/3.0/install/ubuntu/)にubutuのインストール方法載ってます。
4.0はSwift5.2が必要でヘルプも少ないので止めておきました。

```
sudo apt-get install curl 
eval "$(curl -sL https://apt.vapor.sh)" 
wget -q https://repo.vapor.codes/apt/keyring.gpg -O- | sudo apt-key add - 
echo "deb https://repo.vapor.codes/apt $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/vapor.list              
sudo apt-get update
sudo apt-get install swift vapor
vapor --version
```
![vapor-version.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180278/f0a8d3c1-0298-d4a1-26b5-3c8a3723b321.png)

Vaporもインストールできたので「Hello World」いきます。

```
vapor new Hello 
```

ここでgitのエラーが出ましたが、まあgitなので良しとする。
![newHelloError.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180278/89679db9-b604-5339-f9e5-d143078868e7.png)
VaporのプロジェクトHelloが出来た。
![vapor_enjoy.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180278/d1758747-f1b8-2220-304b-a234c81fa326.png)

次はHelloへ移動して、xcode？

```
cd Hello
vapor xcode
```

yでエラー
![y-error.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180278/56351f38-87e2-f93e-c1cb-4dfe79b01df8.png)

```
Error: backgroundExecute(code: 4, error: "open: ioctl(VT_GETSTATE): Inappropriate ioctl for device\n", output: "")
```

うーむ。YesはMacでXcodeが無いとダメだよね。
Swiftまでは問題なく動いていたのでswiftでビルドとかしてみる。

```
swift build
```

deprecatedとかwarningでるんですけど・・・バージョンあってないのか？そもそもビルドしてよかったのかな？

気を取り直して再度vapor xcodeでnoにしてみる。
![no-noerror.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180278/351e7b45-29ef-e6af-e115-67d495d318ea.png)
通った！

ビルドしてみます。

```
vapor build
```

![build成功.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180278/c47ff1b6-f22b-d247-9947-1919d59acdde.png)
成功

実行してみます。

```
vapor run serve
```

動きました。
![動いた.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180278/401a7d59-6343-c6a3-78d6-4ce187db40dc.png)

ブラウザでアクセスしてみると・・・

![ブラウザ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180278/01b3134b-248f-d7f1-0b45-ecf51105dd81.png)
動いてよかったです。