RailsライクなSwift製webフレームワークSwifton


Swift製でRailsライクなフレームワークが出たっぽいです。
その名もSwifton!
Swift on Railsの略のようです!
略したらRailsは消えたのかな(´・ω・`)

ということで、ちょっと触ってみました。

【公式github】
https://github.com/necolt/Swifton

インストール

手元の環境がubuntuだったのでubuntuでやります。

最新のswift(3.0-dev)がいるようなので、ソースからコンパイルします。

$ cd /usr/local/

$ wget https://swift.org/builds/development/ubuntu1510/swift-DEVELOPMENT-SNAPSHOT-2016-02-08-a/swift-DEVELOPMENT-SNAPSHOT-2016-02-08-a-ubuntu15.10.tar.gz

$ tar xvfz swift-DEVELOPMENT-SNAPSHOT-2016-02-08-a-ubuntu15.10.tar.gz

$ mv swift-DEVELOPMENT-SNAPSHOT-2016-02-08-a-ubuntu15.10 swift

$ echo 'PATH=/usr/local/swift/usr/bin:$PATH' >> ~/.bashrc

$ source ~/.bashrc

$ swift --version
Swift version 3.0-dev (LLVM a7663bb722, Clang 4ca3c7fa28, Swift 1c2f40e246)
Target: x86_64-unknown-linux-gnu

そしてインストール。
今の所ToDoアプリのサンプルをcloneしてね、みたいな手順になってるようです。この辺はまだ走り出し感がありますね。

$ git clone https://github.com/necolt/Swifton-TodoApp.git

$ cd Swifton-TodoApp

$ swift build

ディレクトリ構成

サンプルアプリ見る限りですが、こんな構成になってるみたいです。

app -- Views -- Todos -- Index.html.stencil
    |- Public -- jquery_ujs.js
    |- Sources -- main.swift
    |          |- TodoController.swift
    |          |- Todo.swift
    |          |- ApplicationController.swift
    |- Packages/
    |- app.json
    |- README.md
    |- Procfile
    |- Package.swift
    |- MIT-LICENSE
    |- Dockerfile

Sourcesにcontrollerとかmodelとかrouterとか入ってるようですね。
テンプレートエンジンにはstencilというのを使っているようです。twigっぽい雰囲気。

起動してみる

サンプルアプリに起動してアクセスしみてます。

$ ./.build/debug/Swifton-TodoApp
[2016-02-22 01:28:39 +0000] [1623] [INFO] Listening at http://0.0.0.0:8000 (1623)
[2016-02-22 01:28:39 +0000] [1624] [INFO] Booting worker process with pid: 1624

サーバーは無事起動しました。
localhost:8000にアクセスすればいいようなので、ブラウザからアクセスしてみます。
※docker使ってたので、8889にポートフォワードしてます。

アクセスしたらrouteがないと怒られました(´・ω・`)

main.swiftにroute情報が書いてあるみたいなので見てみます

main.swift
router.resources("todos", TodosController())

todosにアクセスすればよさそうです。

だいぶシンプルな感じのページですが、一応表示されました!
まだmigrationあたりとか言及されてないので、その辺までサポートしてくれるといいなぁ〜
なにはともあれ取り扱いは簡単にできそうなので、もうちょっといじってみようかな!