サーバーサイドもswiftで書きたい!!webフレームワーク:vapor編
はじめに
swiftがオープンソース化して、サーバーサイドもswiftで書いてみたい!と思っていたけど
開発途中でまだ触るのは早いかな?と様子を見ていました。
そろそろ触ってみるか!と思い立って、とりあえず今勢いが良さそうなvaporを触ってみました。
サクッと使えたのでインストールや基本的な使い方についてメモしておきます。
vaporってなに?
- swiftのwebフレームワーク
- phpのフレームワークlaravelに影響を受けている
- Proudly sponsored by Nodes
- slackでのサポートあり
- 2017/2/13現在でgithubのスター数:8700超え
vaporを使うその前に・・・
swiftenvの導入
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
表示確認
$ brew install vapor/tap/toolbox
$ vapor new <プロジェクト名>
$ cd <プロジェクト名>
$ vapor build
$ vapor run serve
http://0.0.0.0:8080/
にアクセスして下記画面が出ればOK
その他メモ
Xcodeでソースコード編集したい
$ cd <プロジェクト名>
$ vapor xcode
設定ファイル周り
- jsonで記述
- Configディレクトリ下に置く
- 環境ごとに設定を変えられる
- ディレクトリは3種類
production/development/secrets
- secretsディレクトリはどの環境でも最優先で読まれ、デフォルトで.gitignore対象
WorkingDirectory/
├── Config/
│ ├── server.json
│ ├── production/
│ ├── development/
│ └── secrets/
vaporのコアクラス
Droplet
$ 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
まとめ
{
"http": {
"host": "0.0.0.0",
"port": 8080
}
import Vapor
let drop = Droplet()
let host = drop.config["server", "http", "host"]?.string
導入はサクッとできた!
herokuにbuildpackもあるから、実際簡単に何か作りたいときはheroku使うといいかも。
筆者もherokuで試してますが、ビルドがやたら遅い。。
でも開発は活発なようなので今後の発展に期待してます!!
Author And Source
この問題について(サーバーサイドもswiftで書きたい!!webフレームワーク:vapor編), 我々は、より多くの情報をここで見つけました https://qiita.com/axm-aoki/items/db9b6d487bba31524308著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .