6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

VaporAdvent Calendar 2019

Day 1

Swift製Webフレームワーク Vaporの紹介2019

Last updated at Posted at 2019-12-11

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フレームワークは PerfectKituraなどがありますが、その中でも Vapor はスター数も多く(2019年12月現在1万7千程度)、開発も活発でこれからが楽しみなフレームワーク&コミュニティです。
今回はVaporアドベントカレンダー2019の初日として、インストールとHelloWorldをしてみようと思います。

参考: SwiftでWeb開発ができるフレームワーク集

環境構築

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/ にアクセスするとアプリケーションが起動していることが確認できます。

vapor.png

注意

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のように三角ボタンで実行することができます。

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?