Webアプリケーションを作る一般的な手順としては、PHPやRuby、Perlなどのプログラミング言語を使ってサーバサイドを書いて、フロントエンドをJavaScript、スタイルシートで構築するのではないでしょうか。最初こそ疑問もありませんが、様々なWebアプリケーションを作っているとだんだんこの手順が面倒になってきます。

特にサーバサイドで複雑なことを行わず、単にデータを保存する場所くらいの使い方であった場合はそうです。特に最近よく聞くRESTfulなサーバがあれば十分というのであれば、Deploydを使ってみてはいかがでしょう。DeploydはMongoDBをデータベースにしつつ、その管理画面とO/RマッパーからなるJavaScriptライブラリを提供するバックエンドソフトウェアになります。

Deploydの公式サイト
Deploydの公式サイト

Deployd

今回はDeploydを手軽に試すべく、Dockerを使って構築する手順から紹介します。

必要なもの

今回はUbuntu 14.04 LTSをさくらのクラウドで立ち上げています。CentOSやCoreOSでも問題ないはずです。

サーバにログインしてDeploydサーバを立ち上げる

まずサーバを立ち上げたら、ログインしてDockerをインストールします。

$ sudo apt-get update
$ sudo apt-get install docker.io
$ sudo service docker.io start

Dockerを立ち上げたら、Deploydのコンテナイメージをpullします。

$ docker pull sesteva/deployd

これで準備は完了です。ではコンテナを立ち上げます。

$ sudo docker run --name deployd -p 2403:2403 -i -t sesteva/deployd
to start your app:
	$ cd test
	$ dpd
starting deployd v0.7.0...
listening on port 2403
type help for a list of commands
dpd >

これで立ち上がりました。ここでオプションの説明をすると、

-p 2403:2403

ゲストの2403番ポート(Deploydのポート)をそのままホスト側でも使えるようにしています。

Deploydの使い方

まずは http://サーバのIPアドレス:2403/dashboard/ にアクセスします。

Deploydの管理画面
Deploydの管理画面

これが管理画面になります。ここで自由にリソースを作成したり、データをメンテナンスできます。データはコレクションとユーザの2種類が作成できます。ユーザは認証用としてusername/passwordがあらかじめ組み込まれたものになります。暗号化されるので安全です。

コレクションの作成
コレクションの作成

今回は posts というリソースを作成しました。

プロパティの利用
プロパティの利用

プロパティを使ってカラムを定義します。

データのメンテナンス
データのメンテナンス

さらにデータを追加します。

イベントの追加
イベントの追加

イベントはアクションを起こした時のトリガーになります。バリデーションなどに使えると思います。クライアント側でできない処理はここで行えます。例えば name がWebだった場合にはエラーを出して、それ以外の場合は変更したいといった時には次のようになります。

if (this.name == "Web") {
    cancel("Error", 401);
}else{
    this.name = this.name + "1";
}

APIとして、RESTfulにデータの操作ができるようになっています。JavaScript以外の言語から操作する場合はこちらが良さそうです。

DeploydのAPI
DeploydのAPI

例えば /(コレクション名) でアクセスするとデータがJSONで返ってきます。

JSONでの取得例
JSONでの取得例

Webアプリケーションから触ってみよう

では実際にWebアプリケーションを作る時の流れになります。DeploydはWebサーバも兼ねていますので、 http://サーバのIPアドレス:2403/ にアクセスするとHTMLが表示されます。これは /home/ubuntu/deployd/deployd/public/index.html の内容になります。ホスト側でこのファイルを修正すると、リロードした際に反映されているのが分かるはずです。

Deploydのアプリケーション側の画面
Deploydのアプリケーション側の画面

この状態で既にDelopydのJavaScriptライブラリは読み込まれていますので、DevToolsで操作が可能です。

DevToolsで表示したところ
DevToolsで表示したところ

dpd.posts.(get|post|put|delete)でアクセスできるようになります。基本的にレスポンスはコールバックで受け取る形になります。

Web Socketが組み込まれていますので、管理画面を開いている場合データの追加などはリアルタイムに反映されるようになっています。

データの修正はその場で反映されます
データの修正はその場で反映されます

Deploydの使いどころ

Deploydはバックエンドのサービスですが、複数アプリケーションではなく一つのWebアプリケーションに対して手軽に使えると言った立ち位置になります。これまで行っていたようなサーバサイドを作って、UIも作って…といった手間が不要になります。サーバサイドの多少のコードもイベントを使えばフロントエンドはRESTfulの操作とUI側だけに集中することができます。

Web UIはpublicフォルダ以下になりますので、ここをGitで管理するようにすればWebアプリケーション開発がスムーズになることでしょう。ちょっとしたWebアプリケーションであれば、Deploydを使うことですぐに開発できるようになります。フロントエンドエンジニアの方はもちろん、Webエンジニアの方におすすめのソフトウェアです。

Deployd