はじめに
11月末にSwiftのサーバーサイドフレームワークのPerfectが発表されました。さっそく試してみます。
まずは
ワクワクしながらSwiftでサーバサイドプログラムを書く with Perfect(導入編)を参考にMac上で動かしてみました。なるほど、簡単に動きますね。
次はXcodeを使わずにやってみたい!
ということでMac上でサクっとやりたいのですがmakeでこけます。残念。このイシューで同じ内容を指摘されていますので、このissueが解決されるのを待ちましょう。(え、自分で修正してプルリク送れよ、というツッコミはなしで)。ということでLinuxで試してみました。基本的に各種公式ドキュメントの手順をトレースしています。
試した環境
- Ubuntu 15.10 (OSX ElCapitan 10.11.2上にのせてます)
Ubuntu15.10は、Ubuntu 15.10 日本語 Remix リリースからisoイメージをDLしてきてVirtualBoxで上で準備しました。本当はVagrantでbox使ってさくっとやりたかったのですが、色々ハマりまして。。。需要あれば環境準備手順もどこかにまとめます。一応少しだけまとめてあります->Ubuntu 15.10 日本語版をVirutualBox上にインストールする方法(sshできない罠も解消)あと、Perfectは今のところ15.10でしか動かないらしいです。appleさんは15.10だけでなくて14.04もswiftのサポートしてくれてるんでひょっとしたら動くかもですが。
ざっくり手順
1.Ubuntu上でSwiftを実行できるように
2.Perfectをclone
3.その他必要なものを準備
4.動作確認してみます
実際にやってみます
1.Ubuntu上でSwiftを実行できるように
公式ページのGetting Startedの手順にそってます。swiftをソースコードからビルドしたい方はapple/swiftからどうぞ。
1-1. Swift公式ページのDownload Swiftにアクセスし、Ubuntu 15.10 Swift 2.2 SnapshotをDL
1-2. clangをインストール
※clang(クラン)とはコンパイラです。詳しくはwiki参照。
sudo apt-get install clang
1-3. PATHを通す
export PATH=/path/to/Swift/usr/bin:"${PATH}"
1-4. 動作確認
これでswiftが実行できるようになりました。(とても簡単でしたね!)
もちろん*.swiftも実行できます。公式ページによるとLinuxではGlibcをimportする必要があるとのことです。
2.Perfectをclone
まずはgitインストール
sudo apt-get install git
次はPerfectをcloneしましょう。
git clone https://github.com/PerfectlySoft/Perfect.git
認証求められると思いますのでご自分のIDとPASSをいれてください。
3. 必要なものを準備
基本的に公式のREADMEの通り。
3.1 PerfectLibをbuild
# 必要なライブラリをinstall
sudo apt-get install libssl-dev libevent-dev
# build
cd {Perfectをcloneしたディレクトリ}/PerfectLib
make
sudo make install
自分では試せてないですが、ライブラリが足りずにmakeでこけるみたいです。
詳しくはubuntu15.10にswift+Perfect環境を作ろうとしたらmakeで結構怒られたのでメモを参照です。
3.2 PerfectServerをbuild
cd {Perfectをcloneしたディレクトリ}/PerfectServer
make
3.3 Apache2をinstall
デフォルトではapacheが入ってないのでinstall
sudo apt-get install apache2
4. 動作確認してみます
上手く動かなかったので、こちらの記事サーバーサイド Swift フレームワークである Perfect を Docker で動かせるようにしたを参考にさせていただきました。
4.1 PerfectServer起動
参考にした記事によるとperfectserverhttpを実行するディレクトリ内に、PerfectLibrariesディレクトリが必要でなおかつその中にsoファイルの実体もしくはシンボリックリンクが貼られてないといけないようです。
cd {Perfectをcloneしたディレクトリ}/Examples
# アプリケーションをコンパイル
make
mkdir PerfectLibraries
cd PerfectLibraries
# シンボリックリンクはります
ln -s {Perfectをcloneしたディレクトリ}/Examples/URL\ Routing/URLRouting.so .
cd ..
./perfectserverhttp
今回はURL Routingを試してみました。詳細はこちらをご参照いただきたいですが、名前の通りルーティングをどうするかを理解するためのサンプルのようです。もし他のアプリケーションを動かしたい場合は、シンボリックリンクの向き先を相当するsoファイルに向けてください。
ブラウザでアクセスしてみます
おわりに
一応うまく行きましたが、もう少し色々やってみたいので進捗あったら更新しますm(_ _)m