Vaporとは
Vaporは、Swift製のWebフレームワークです。
公式URLは https://vapor.codes/ で、Vapor 本体のリポジトリ(https://github.com/vapor/vapor) には
Vapor is a web framework for Swift.
It provides a beautifully expressive and easy to use foundation for your next website, API, or cloud project.
と説明が書かれています。
Swift製のWebフレームワークは Perfect 、Kituraなどがありますが、その中でも Vapor はスター数も多く(2019年12月現在1万7千程度)、開発も活発でこれからが楽しみなフレームワーク&コミュニティです。
今回はVaporアドベントカレンダー2019の初日として、インストールとHelloWorldをしてみようと思います。
環境構築
for MacOS
公式(https://docs.vapor.codes/3.0/install/macos/)
Xcode(9.3 以上)が必要なのでApp Storeからダウンロードします。(https://itunes.apple.com/us/app/xcode/id497799835?mt=12)
また Vapor3 には Swift 4.1 以上が必要なので、バージョンを確認します。
$ swift --version
Apple Swift version 5.1.2 (swiftlang-1100.0.278 clang-1100.0.33.9)
Target: x86_64-apple-darwin19.0.0
次に Vapor のプロジェクト作成が簡単にできる VaporToolBoxを インストールします。
$ brew install vapor/tap/vapor
$ brew upgrade vapor # すでにインストールされている場合
Vapor ToolBoxがインストールできたことを確認します。
$ vapor --help
for Ubuntu
公式(https://docs.vapor.codes/3.0/install/ubuntu/)
Vaporは以下のバージョンのUbuntuでサポートされています。
| Version | Codename |
|---|---|
| 18.10 | Cosmic Cuttlefish |
| 18.04 | Bionic Beaver |
| 16.10 | Yakkety Yak |
| 16.04 | Xenial Xerus |
| 14.04 | Trusty Tahr |
以下のスクリプトでVaporのリポジトリをAPTで参照できるようにします。
このスクリプトはサポートされていないバージョン以外で動かすとエラーが出てしまいます。
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
APTを使ってswiftとvaporをインストールします。
$ sudo apt-get install swift vapor
インストールされたことを確認します。
$ swift --version
$ vapor --help
HelloWorld
環境構築が完了したので早速プロジェクトを作成します。
プロジェクトの作成には new コマンドを使用します。
$ vapor new リポジトリ名
また、RailsのAPIモードのようにフラグをつけることでテンプレートを選ぶことができます。
今回は Web テンプレートを使用してプロジェクトを作成します。
フラグを付けずにプロジェクトを作成するとAPIテンプレートで作成されます。
| Name | Flag | Description |
|---|---|---|
| API | --template=api | Fluentデータベースを使ったJSON API |
| Web | --template=web | Leafテンプレートを使ったを含むHTMLウェブサイト |
| Auth | --template=auth-template | Fluent DBとAuthを使ったJSON API |
今回はsommelierプロジェクトをWebテンプレートで作成します。
今年のアドベントカレンダーでは、Vapor でIT企業の技術ブログのまとめサイトを作ってみようと思います。
$ vapor new sommelier --template=web
プロジェクト名のディレクトリが作成されれます。
ディレクトリの中に入り、 build コマンドでビルドします。
$ cd sommelier
$ vapor build
ビルドが完了したら run コマンドでアプリを実行します。
$ vapor run
ブラウザで http://localhost:8080/ にアクセスするとアプリケーションが起動していることが確認できます。
注意
Xcode をアップデートをアップデートした後などはに以下のエラーが出ることあります。
Xcode コマンドラインツールを指定することで解決します。
Error: backgroundExecute(code: 1, error: “warning: ‘fetch’ command is deprecated; use ‘resolve’ instead\nerror: terminated(72): xcrun --sdk macosx --find xctest output:\n \n\n”, output: “”)
$ sudo xcode-select -switch /Applications/Xcode.app/
$ xcode-select -p
$ vapor build
参考: Error building vapor after AppStore Updates
おまけ
Vaporのユニークな機能として、Xcodeを使うことができます。
xcodeコマンドで .xcodeproj ファイルが作成されます。
$ vapor xcode
作成された.xcodeproj を開き、iOSのように三角ボタンで実行することができます。
