サーバサイドSwiftライブラリ Vaporの始め方 (Docs読むのめんどくさい人用)

Vaporの記事はQiitaにたくさんあるんですけどほとんどがVaporのインストールとかが省略されてるか、バージョンが古かったりしたので最新のインストール方法やビルド方法、実行方法、Herokuへのデプロイ方法まで紹介したいと思います。
まぁ、VaporのDocs見ればすぐできるんですけど、僕みたいにめんどくさがって日本語のサイトしか見ず、躓かないように紹介しますね。

Docs読んでぱっぱとやっていく人用にリンク貼っておきます。

- [Vapor](https://vapor.codes/)
- [Vapor Docs](https://vapor.github.io/documentation/)
- [Vapor github](https://github.com/vapor/vapor)

##Vapor toolboxのインストール
僕は前からSwiftを使っていろいろしてたのでSwiftとPackage Managerのインストールはしてません。
なので紹介することができません。ご了承ください。
まずはVaporコマンドを使うためのtoolboxをインストールします。

```Bash:ターミナル
$ curl -sL check.vapor.sh | bash
$ curl -sL toolbox.vapor.sh | bash
```

このあとに

```Bash:ターミナル
$ vapor --help
```
でエラーが出なかったら完了です。

アップデートがあるかもしれないので一応

```Bash:ターミナル
$ vapor self update
```
これも実行しておきましょう。

##プロジェクト作成

toolboxをインストールできたのでこれからプロジェクト作成します。
xcodeから作るのではなくターミナルから作るみたいでびっくりしました。

```Bash:ターミナル
$ vapor new *****
```

`******`にプロジェクト名を入力し実行するとプロジェクトフォルダができます。
僕はseversideという名前にしたかったのですが誤字りました。マジでめんどくさい。。。

![スクリーンショット 2016-12-31 13.32.37.png](https://qiita-image-store.s3.amazonaws.com/0/66167/076f53fd-9c55-fea0-83a4-c9e496a51673.png)

これめちゃめちゃ可愛いですよね。
サーバーサイドSwiftのライブラリたくさんある中でなんでこれにしたかっていうと、サイトが可愛いからんですよね。
どうでもいいんですけど。


フォルダはできたんですがフォルダを作ったばかりだとxcodeで開くための.xcodeprojファイルはないです。
そのファイルを作るためのコマンドを実行します。

```Bash:ターミナル
$ vapor xcode
```
プロジェクトファイル直下でこれを実行してください。
これで.xcodeprojができます。処理が終わったあとにxcodeで開くか聞いてくるのでy/nで答えましょう。

##ビルド&実行
もうデフォルトのままビルドし実行します。デフォルトでも、もうめちゃめちゃ簡単なコードが書かれてますので実行できます。

```Bash:ターミナル
$ vapor build
```
これでビルドができます。
めちゃめちゃ長いと思います。僕のは長かったです。

次は実行です。

```Bash:ターミナル
$ vapor run serve
```
どちらもプロジェクトファイル直下で実行してください。
無事にRunできると

```Bash:ターミナル
Running sevsrside...
No preparations.
Server 'default' starting at 0.0.0.0:8080
```
と表示されます。

[localhost](http://localhost:8080/)にアクセスしてみましょう。

![スクリーンショット 2016-12-31 14.20.34.png](https://qiita-image-store.s3.amazonaws.com/0/66167/3fb4a525-e1c8-f508-2302-78a845e95c4f.png)
このようなかわいいのが表示されると思います。
Runが成功しました。

##Herokuにデプロイし実行

無事ローカルでRunができたので次は実用に向けるため[Heroku](https://dashboard.heroku.com/)にデプロイします。
Heroku以外にも[DigitalOcean](https://www.digitalocean.com/) , [Docker](https://www.docker.com/) , [AWS](https://aws.amazon.com/jp/) , [Bluemix](https://console.ng.bluemix.net/)を使うことができます。
今回は無料でssl通信も使えることができるHerokuを使うことにします。

Herokuの設定では自分のgithubアカウントにデプロイするのではなくHeorkuGitにデプロイするように設定してください。
今回はVaporのはじめ方の記事であり、Herokuの記事ではないのでHerokuでの様々な設定はすべて終わらせてからこのあとの記事を読んで下さい。
Herokuの使い方の記事はQiitaにも沢山ありますのでがんばってください。幾つか載せておきますね。

- [Heroku:(Application Errorにならないための)Node.jsアプリのデプロイ入門](http://qiita.com/oden/items/9341b672917afb43a817#herokuにデプロイ編)
- [Heroku初心者がHello, Herokuをしてみる](http://qiita.com/Arashi/items/b2f2e01259238235e187)


HerokuにログインやHerokuGitとの紐付けに成功したらBuildpackをHerokuにインストールします。これをインストールしないとHeroku上にSwiftをあげることができません。

```Bash:ターミナル
$ heroku buildpacks:set https://github.com/kylef/heroku-buildpack-swift
```
この一行をプロジェクト直下で実行するだけです。
このあとにgitにコミット、プッシュをすると完了します。

アプリケーションを開いてみるとローカルと同じ可愛い画面が表示されると思います。

## 最後に

今回簡単にインストール方法から実行、Herokuにデプロイするところまで紹介しましたが、簡単に説明しすぎて至らないところがあるかもしれませんが最後まで読んでくださりありがとうございます。
この最後のとこまで読んでくれてる人はいないかもしれませんが、わかりにくいことがあったら、僕が参考にしたサイトのほうが詳しく書いてあったりするので読んでみてください。Docsでも英語できない僕みたいな学生でも読めましたんで読んでみてください。
最後まで読んでいただきありがとうございました。
こんな真面目に書いたの初めて。。。


## Reference
- [Vapor Docs](https://vapor.github.io/documentation/)
- [【Server Side Swift】VaporでSlack botを作る](http://qiita.com/taji-taji/items/81a0e161d5455ea38bf6#bot-configjsonについて)
- [Swiftサーバーサイド入門 Vaporの紹介](http://qiita.com/nakailand/items/c68514263c1fadcd695e#さいごに)