サーバーサイドSwiftフレームワーク Perfect

Appleは12月の初めにSwiftをオープンソースとして公開しました。その少し前に、センセーショナルなデビューを飾ったのがSwift製のサーバーサイドフレームワーク「Perfect」です。PerfectはWebアプリケーションとREST APIを開発するためのフレームワークです。サーバーサイドにPerfectを使うことにより、1つのプログラミング言語(Swift)だけで、フロントエンド(iOSアプリケーション)とバックエンド(Webアプリケーション)の両方を開発できることになります。

絶好のタイミング

何をするにも機会を見計らうことは常に重要です。先に公開されたフレームワークが無条件に広く普及するわけではありませんが、現在SwiftがiOS/OS Xのアプリケーションを書くという目的以外でも、いろいろなところで使われる可能性に対して多くの人が関心を抱いています。この時期に、ある程度の完成度を持ってプロジェクトを公開することができたという事実が、このプロジェクトの成功を予感させます。Perfectに限らず、現在ではSwiftでスクリプト言語の用途を代替したり、Android上でSwiftを動かそうという試み(すでに”Hello World”程度なら動いています)など、実験的なものも含め、多様なプロジェクトが注目されています。

誰が作っていますか

まずこのプロジェクトを管理・運営しているのはPerfectlySoftという企業です。PerfectのGitHubページを見ると興味深い事実がいくつか確認できます。Contributorは全部で6人ですが、メインの開発者はおそらく2人だと考えられます。メインの開発者の内の1人によって、2015年10月に開発が開始され、もう一人は11月までは積極的にコミットしていましたが、現在はあまり関わっていないようです。ブランチももう一人が作ったものだけで、総コミット数については200と少しです。美しいデザインのWebサイトやGitHubのOrganizationを見て、多くの開発者が関わっている一大プロジェクトかとも思いましたが、実際には一人で開発しているプロジェクト、という見方もできます。GitHubのプロフィールによると、開発者はカナダ在住のようです。

記事の更新情報を受け取る

どんな環境で動きますか

Perfectが初めて発表された当時は、Swiftがオープンソース化される前のため、Linux上で動作する環境はなく、OS Xだけがサポートされていましたが、現在はLinux環境もサポートしています。オープンソースのSwiftと同様に現在はUbuntuだけをサポート対象とするそうです。自分自身をHTTPサーバーとするスタンドアロンモードとmod_perfectとを使ってApachemのFastCGIで動作するモードがあります。サーバーを起動するとSwiftで書かれたモジュールがロードされ、Mustacheというテンプレートエンジンと協調して画面をレンダリングすることになります。Nginxについての記述は見当たらないので、現在はApacheだけをサポートするものと思われます。

驚いたことにDBレイヤーとの接続は、MySQL、PostgreSQL、MondoDBなどが提供されます。サーバーサイドの開発において、最も重要なDB連携を提供するという点は重要です。また、様々なサンプルコードも提供しています。ライセンスはGNU Affero GPL 3.0を採用しています。

PerfectLib

PerfectLibはサーバーサイドとクライアントサイドでの両方で使える、Perfectのコアユーティリティです。たいていの場合において、サーバーサイドとクライアントサイドで同じコードを使用することができます。最終的な目標はこのモジュールを用いることで、サーバーサイドとクライアントサイドを同じドメインモデルで開発できるようにすることです。 クライアントサイドのモジュールはできるだけ軽いライブラリを試行していて、次のような機能が含まれます。JSONエンコード/デコード、Rawバイトストリームの読み書き、UTF-8/16エンコード/デコード、ユニコードのツール、cURLサポート、SQLiteへの接続、などです。 サーバーサイドのモジュールは上記の機能に加え、拡張性のある高性能ネットワークのためのLibEvent、ファイルとディレクトリの操作、プロセス管理、FastCGI、マルチパートフォームアップロード、Mustacheテンプレート構文解析と処理、機能拡張のためのダイナミックモジュールローディング、ステートやセッションの管理などがあります。

すでに実用段階ですか?

Perfectのドキュメントは非常によく整備されています。一方で、まだベンチマークや活用事例、関連するブログ記事は多くありません。現時点では個人・趣味の開発で、APIサーバを作ってみたりするという用途では使われますが、商用のサービスに使われるようになるまでには時間がかかることでしょう。今後、サーバーサイドにおけるSwiftの活用にPefectが重要な役割を担うことを期待してみましょう。


Swiftがオープンソース化されてから初の大規模カンファンレンスtry! Swiftが日本で開催されます。お申し込みはお早めに! http://www.tryswiftconf.com/#tickets

About the content

This content has been published here with the express permission of the author.


Realm Korea

Realm Korea Team

4 design patterns for a RESTless mobile integration »

close