iOS
Swift
Vapor

サーバーサイドもswiftで書きたい!!webフレームワーク:vapor編

More than 1 year has passed since last update.


はじめに

swiftがオープンソース化して、サーバーサイドもswiftで書いてみたい!と思っていたけど

開発途中でまだ触るのは早いかな?と様子を見ていました。

そろそろ触ってみるか!と思い立って、とりあえず今勢いが良さそうなvaporを触ってみました。

サクッと使えたのでインストールや基本的な使い方についてメモしておきます。


vaporってなに?


  • swiftのwebフレームワーク

  • phpのフレームワークlaravelに影響を受けている

  • Proudly sponsored by Nodes

  • slackでのサポートあり

  • 2017/2/13現在でgithubのスター数:8700超え


vaporを使うその前に・・・


swiftenvの導入

swiftenvはswiftのバージョン管理ツール

swiftは開発速度や変更点が多いので

バージョン管理して状況に応じて切り替えて使うのがオススメ!


インストール

$ brew install kylef/formulae/swiftenv


環境設定

$ echo 'if which swiftenv > /dev/null; then eval "$(swiftenv init -)"; fi' >> ~/.bash_profile

$ source ~/.bash_profile


スナップショットのインストール

https://swift.org/download/#snapshots

上記からスナップショットのURLを取得してくる

$ swiftenv install <スナップショットのURL>


インストール済みスナップショットの確認

$  swiftenv versions 

      DEVELOPMENT-SNAPSHOT-2016-04-12-a
* DEVELOPMENT-SNAPSHOT-2017-01-27-a

「*」は使用中のバージョン


使用するスナップショットの指定

$ swiftenv global <使用するバージョン>


vaporの使い方


インストール

$ brew install vapor/tap/toolbox


プロジェクトの作成

$ vapor new <プロジェクト名>


ビルド

$ cd <プロジェクト名>

$ vapor build


サーバー立ち上げ

$ vapor run serve 


表示確認

http://0.0.0.0:8080/

にアクセスして下記画面が出ればOK

vaporTop.png


その他メモ


Xcodeでソースコード編集したい

$ cd <プロジェクト名> 

$ vapor xcode


設定ファイル周り


  • jsonで記述

  • Configディレクトリ下に置く

  • 環境ごとに設定を変えられる

  • ディレクトリは3種類
    production/development/secrets

  • secretsディレクトリはどの環境でも最優先で読まれ、デフォルトで.gitignore対象

WorkingDirectory/

├── Config/
│ ├── server.json
│ ├── production/
│ ├── development/
│ └── secrets/


vaporのコアクラス


Droplet

ルート登録、サーバーの起動、ミドルウェアの追加などを行うVaporのコアクラス

import Vapor

let drop = Droplet()

// your magic here

drop.start()


蒸気(vapor)を取り込んで(import)

雫(droplet)を作る



使用例


Config/server.json

{

"http": {
"host": "0.0.0.0",
"port": 8080
}


Sources/App/main.swift

import Vapor

let drop = Droplet()

let host = drop.config["server", "http", "host"]?.string



まとめ

導入はサクッとできた!

herokuにbuildpackもあるから、実際簡単に何か作りたいときはheroku使うといいかも。

筆者もherokuで試してますが、ビルドがやたら遅い。。

でも開発は活発なようなので今後の発展に期待してます!!