サーバサイドSwiftのPerfectを試してみました。
Dockerfileがあったのでこれを使います。
こちらのDockerfileはPerfectに同梱されている"URL Routing"というサンプルが起動するようになっているので
$ docker run -d -p 8181:8181 holidayworking/perfect
としてDocker上で起動したら「htt://(コンテナのIPアドレス):8181/foo/bar/baz」とアクセスすると
リクエスト内容がエコーされます。
「bar」の部分は任意の文字に変更できます。
別のサンプルも試してみます。
同梱されているサンプルは同時に動かせないようなので"URL Routing"と入れ替える形で"Tap Tracker"というサンプルを動かしてみようと思います。
まずは先ほどまで使わせて頂いたDockerfileを編集して使います。
#RUN mkdir PerfectLibraries && cd PerfectLibraries && ln -s /Perfect/Examples/URL\ Routing/URLRouting.so .
RUN mkdir PerfectLibraries && cd PerfectLibraries && ln -s /Perfect/Examples/Tap\ Tracker/TapTrackerServer.so . && cp /Perfect/Examples/Tap\ Tracker/TapTracker.mustache /webroot/
URL Routingの代わりにTap Trackerをロードするようにします。
またTapTracker.mustacheを/webrootにコピーしないと動作しないので併せてコピーしておきます。
$ docker build -t hoge/perfect .
$ docker run -d -p 8181:8181 hoge/perfect
上記のようにイメージを作成して起動しておきます。
TapTrackerのクライアント側はアプリが必要なので
PefectのGitHubから落としてきます。
Examples/Examples.xcworkspaceをXCodeで開きます。
Tap Tracker のViewController.swiftにホスト名とポート番号の指定があるので環境に合わせて変更します。
let END_POINT_HOST = "localhost"
let END_POINT_PORT = 8181
上記のEND_POINT_HOSTをlocalhost以外にした場合はATSで引っかかるのでinfo.plistファイルを編集して許可しておきましょう。
実行してみます。
ボタンをタップするとタップした位置の地図に遷移します。
シミュレータで動かしたのでマンハッタンになっています。
さてさて、Serverside Swift、当面はモバイルアプリ向けのRESTサービスを提供するアプリケーションサーバとして注力していくそうなのですが、どうなんでしょうかね。楽しみです。