サーバーサイドSwiftのフレームワークの一つである Vapor をはじめてみようと思うので、手順を書き残そうと思います。
こちらの記事を書いた2日後に、v0.12 から v0.13 のドキュメントに更新されていたので、v0.13用のドキュメントに従ってやってみました。
今回はハマることもなく非常に簡単に試すことができました。
環境
- OS X: 10.11.5(15F34)
- Xcode: Version 8.0 beta 2 (8S162m)
- Toolchain: Swift Development Snapshot 2016-06-20 (a)
- Vapor: v0.13
ドキュメント
https://vapor.readme.io/
今回は Vapor v0.13 のドキュメントの手順に従って進めていきます。
事前準備
Xcode8.0 beta 2 を事前にインストールし、インストール先をxcode-select
で選択します。
Xcode8 beta ダウンロード先
インストール後、
sudo xcode-select -s /Applications/Xcode-beta.app/
※/Applications/Xcode-beta.app/
部分は適宜自分のインストール先を指定
Swift3のインストール
ドキュメントには、Swfit3のインストール方法が、3種類書かれています。
- macOSへのインストール
- Ubuntuへのインストール
- Swiftenvを使用したインストール
macOSの方は1か3、
Ubuntuの方は2か3
の方法でインストールします。
ここでは、macOSでSwiftenvを使ったインストール方法を記載します。
Swiftenvからインストール
Swiftのバージョン切り替えツールをインストールします。(RubyのrbenvとかPythonのpyenvみたいなやつ)
Swiftenvをインストール
# Homebrewからインストール
brew install kylef/formulae/swiftenv
# パスを通す
echo 'if which swiftenv > /dev/null; then eval "$(swiftenv init -)"; fi' >> ~/.bash_profile
source ~/.bash_profile
Swift3のインストール
# インストール
swiftenv install DEVELOPMENT-SNAPSHOT-2016-06-20-a
# インストールしたバージョンをグローバルに設定
swiftenv global DEVELOPMENT-SNAPSHOT-2016-06-20-a
確認
swift --version
> Apple Swift version 3.0-dev (LLVM c191431197, Clang c6195325c5, Swift add621a959)
3.0-dev になっていればOK
インストールされている全てのSwiftのバージョンを確認
swiftenv versions
詳しい使い方はこちらをご覧ください。
Toolboxのインストール
Vaporのコマンドラインツールをインストールします。
インストール
curl -sL toolbox.qutheory.io | bash
確認
vapor --help
ここで、vaporコマンドが使用できて、以下のようなヘルプ内容が出ればOKです。
Usage: vapor <new|build|run|fetch|clean|test|xcode|version|self|heroku|docker>
Join our Slack if you have questions, need help,
or want to contribute: http://slack.qutheory.io
CLIのアップデート
CLI自身をアップデートするときは次のようにします。
vapor self update
プロジェクトを作成
vapor new Hello
このコマンドでプロジェクトファイルをセットアップしてくれます。
セットアップが完了すると、オシャレなVaporのマークが出てきました。
ディレクトリ構成
とりあえず、プロジェクト直下に移動し、2階層くらいまでのディレクトリ構成を表示してみます。
$ cd Hello/
$ tree -L 2
.
├── App
│ ├── Controllers
│ ├── Middleware
│ ├── Models
│ └── main.swift
├── Config
│ ├── app.json
│ ├── development
│ └── secrets
├── Localization
│ ├── default.json
│ ├── en.json
│ └── es.json
├── Package.swift
├── Procfile
├── Public
│ ├── images
│ └── styles
├── README.md
├── Resources
│ └── Views
└── app.json
APPの中にControllersやModels、Resourcesの中にViewsがありますね。
そして、何やら中核になりそうなmain.swift
というファイルがAPPの中にあります。
このmain.swift
に色々書いていきます。
main.swift
の編集
デフォルトで色々書いていますが、以下のように書き換えます。
import Vapor
import VaporMustache
let drop = Droplet()
drop.get("hello") { request in
return "Hello, world"
}
drop.serve()
droplet
はVaporのコアクラスです。
Dropletの詳細はこちら
次に、同じくデフォルトでできている以下のファイルを削除します。
- App/Controllers/UserController.swift
- App/Models/User.swift
- App/Middleware/SampleMiddleware.swift
ちょっと寄り道
import Vapor
let drop = Droplet()
Droplet
クラスは、Vapor
をimportすることで使えるようになります。
蒸気(vapor)を取り込んで雫(droplet)を生み出す。。洒落てますね〜。
コンパイル
vapor build
vapor build
コマンドは、中でswift build
を実行しているようです。
サーバー起動
ビルドが完了したらサーバーを起動させます。
vapor run serve
このコマンドでウェブサーバーが立ち上がります。
$ vapor run serve
Running Hello...
No servers.json configuration found.
Starting server at 0.0.0.0:8080
また、ポートを指定することもできます。
vapor run serve --port=8080
これで、ブラウザからhttp://localhost:8080
へアクセスすると、今立ち上げたサーバーにアクセスすることができます。
ただ、ルートパスへは何も出力していないので、真っ白のページになっているかと思います。
先ほど、main.swift
で処理を記入したのはhello
というパスだったので、http://localhost:8080/hello
にアクセスします。
すると、「Hello, world」と画面上に表示されるかと思います。
このようにできれば完了です。
以上、始めの第一歩として触ってみました。
終わりに
v0.12でやたらとハマると思っていたら、今回はすんなりといけました。
これからが楽しみです。