ServerSideSwift Vapor3.0をHerokuにデプロイ

ServerSideSwiftの勉強で動作環境にHerokuを使用したので、
デプロイまでのメモです。

## 前提
- Homebrewインストール済
- Herokuにアカウントを作成済

## インストール
```
brew tap vapor/tap
brew install vapor/tap/vapor
```

## プロジェクトの作成
```
vapor new [AppName]
```
作成が完了するとVaporマークが表示されます。
<img width="663" alt="スクリーンショット 2020-06-16 20.57.03.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539781/fc5dd00e-e34b-1e25-4d22-cd1fdebcfa15.png">

指定したAppNameでディレクトリが掘られているので移動します。

```
cd [AppName]
```

Xcodeプロジェクトを作成します。(そこそこ時間が掛かります)

```
vapor xcode
```
完了するとXcodeを開くか聞かれるのでyを入力します。
<img width="375" alt="スクリーンショット 2020-06-16 21.04.28.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539781/fd8fc95f-adbe-7c01-bee9-9af0e083dbb1.png">

以下のようなプロジェクト構成になっています。
<img width="272" alt="スクリーンショット 2020-06-16 21.07.59.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539781/e469fa0b-a791-1d24-2d2e-4277d8ad817b.png">

## 実行確認
実行し、http://localhost:8080 にアクセスできることを確認します。
<img width="380" alt="スクリーンショット 2020-06-16 21.12.49.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539781/38dad32c-9c60-7829-d603-21c95716f5c6.png">

routes.swiftを確認すると、helloでHello, world!が表示されるようになっていることが確認できます。
<img width="849" alt="スクリーンショット 2020-06-16 21.14.01.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539781/683fea99-98a5-c23f-505b-2f858419dfe1.png">
<img width="431" alt="スクリーンショット 2020-06-16 21.19.44.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539781/330cacc1-1085-1cdb-e4cc-fd0c3abac46d.png">
これでVaporアプリの作成、ビルド、実行が完了しました。

## Herokuにデプロイ
HerokuのCLIツールをインストールします。

```
brew install heroku/brew/heroku
```
Herokuにログインします。
キーを押すとブラウザでHerokuのログイン画面が表示されるのでログインを実行します。

```
heroku login
heroku: Press any key to open up the browser to login or q to exit:
```
ブラウザでHerokuのダッシュボードにアクセスし、アプリ作成を行います。
<img width="777" alt="スクリーンショット 2020-06-16 21.33.05.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539781/a6643437-22b1-1670-d15a-941df42606cd.png">

Herokuで動かすためのSwiftバージョンファイルとProcfileを作成します。

```
echo "5.1.3" > .swift-version
```
```
echo "web: Run serve --env production" \
  "--hostname 0.0.0.0 --port \$PORT" > Procfile
```

HerokuはGitを使用してアプリをデプロイするためGitの準備をします。
Gitの初期化を行います。

```
git init
```
現在のブランチがmasterであることを確認します。

```
git branch
* master
```
masterブランチにコミットします。

```
git add .
git commit -m "first commit"
```

remoteブランチをHerokuに設定します。

```
heroku git:remote -a [Herokuに作成したAppName]
```

ビルドパックを設定して、HerokuでVaporを使用できるようにします。

```
heroku buildpacks:set vapor/vapor
```
ローカルのmasterをHerokuのmasterにpushします。
Heroku上でのビルドとデプロイも行われる為、そこそこ時間が掛かります。

```
git push heroku master
```

最後に表示されたURLにアクセスしデプロイされたことを確認します。

```
remote: -----> Launching...
remote:        Released v3
remote:        https://testapp-vapor.herokuapp.com/ deployed to Heroku
remote:
remote: Verifying deploy... done.
To https://git.heroku.com/testapp-vapor.git
 * [new branch]      master -> master
```
<img width="495" alt="スクリーンショット 2020-06-16 22.02.13.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539781/405c2ebe-0836-5f3c-77f8-bc138ed046cb.png">
<img width="409" alt="スクリーンショット 2020-06-16 22.04.01.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/539781/e8a4f764-3f34-24a0-a3c3-46d31b86e5d4.png">

これでHeroku上でHello,World!まで確認できました。