簡単にWeb/スマートフォンアプリのバックエンドが構築できる「Deployd」レビュー
![](https://knowledge.sakura.ad.jp/wp-content/uploads/2014/11/deployd.png)
Webアプリケーションを作る一般的な手順としては、PHPやRuby、Perlなどのプログラミング言語を使ってサーバサイドを書いて、フロントエンドをJavaScript、スタイルシートで構築するのではないでしょうか。最初こそ疑問もありませんが、様々なWebアプリケーションを作っているとだんだんこの手順が面倒になってきます。
特にサーバサイドで複雑なことを行わず、単にデータを保存する場所くらいの使い方であった場合はそうです。特に最近よく聞くRESTfulなサーバがあれば十分というのであれば、Deploydを使ってみてはいかがでしょう。DeploydはMongoDBをデータベースにしつつ、その管理画面とO/RマッパーからなるJavaScriptライブラリを提供するバックエンドソフトウェアになります。
![Deploydの公式サイト](https://knowledge.sakura.ad.jp/wp-content/uploads/2014/11/deployd.png)
今回は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の管理画面](https://knowledge.sakura.ad.jp/wp-content/uploads/2014/11/deployd-dashboard.png)
これが管理画面になります。ここで自由にリソースを作成したり、データをメンテナンスできます。データはコレクションとユーザの2種類が作成できます。ユーザは認証用としてusername/passwordがあらかじめ組み込まれたものになります。暗号化されるので安全です。
![コレクションの作成](https://knowledge.sakura.ad.jp/wp-content/uploads/2014/11/deployd-collection.png)
今回は posts というリソースを作成しました。
![プロパティの利用](https://knowledge.sakura.ad.jp/wp-content/uploads/2014/11/deployd-property.png)
プロパティを使ってカラムを定義します。
![データのメンテナンス](https://knowledge.sakura.ad.jp/wp-content/uploads/2014/11/deployd-data.png)
さらにデータを追加します。
![イベントの追加](https://knowledge.sakura.ad.jp/wp-content/uploads/2014/11/deployd-events.png)
イベントはアクションを起こした時のトリガーになります。バリデーションなどに使えると思います。クライアント側でできない処理はここで行えます。例えば name がWebだった場合にはエラーを出して、それ以外の場合は変更したいといった時には次のようになります。
if (this.name == "Web") { cancel("Error", 401); }else{ this.name = this.name + "1"; }
APIとして、RESTfulにデータの操作ができるようになっています。JavaScript以外の言語から操作する場合はこちらが良さそうです。
![DeploydのAPI](https://knowledge.sakura.ad.jp/wp-content/uploads/2014/11/deployd-api.png)
例えば /(コレクション名) でアクセスするとデータがJSONで返ってきます。
![JSONでの取得例](https://knowledge.sakura.ad.jp/wp-content/uploads/2014/11/deployd-json.png)
Webアプリケーションから触ってみよう
では実際にWebアプリケーションを作る時の流れになります。DeploydはWebサーバも兼ねていますので、 http://サーバのIPアドレス:2403/ にアクセスするとHTMLが表示されます。これは /home/ubuntu/deployd/deployd/public/index.html
の内容になります。ホスト側でこのファイルを修正すると、リロードした際に反映されているのが分かるはずです。
![Deploydのアプリケーション側の画面](https://knowledge.sakura.ad.jp/wp-content/uploads/2014/11/deployd-first.png)
この状態で既にDelopydのJavaScriptライブラリは読み込まれていますので、DevToolsで操作が可能です。
![DevToolsで表示したところ](https://knowledge.sakura.ad.jp/wp-content/uploads/2014/11/deployd-devtools.png)
dpd.posts.(get|post|put|delete)でアクセスできるようになります。基本的にレスポンスはコールバックで受け取る形になります。
Web Socketが組み込まれていますので、管理画面を開いている場合データの追加などはリアルタイムに反映されるようになっています。
![データの修正はその場で反映されます](https://knowledge.sakura.ad.jp/wp-content/uploads/2014/11/deployd-realtime.png)
Deploydの使いどころ
Deploydはバックエンドのサービスですが、複数アプリケーションではなく一つのWebアプリケーションに対して手軽に使えると言った立ち位置になります。これまで行っていたようなサーバサイドを作って、UIも作って…といった手間が不要になります。サーバサイドの多少のコードもイベントを使えばフロントエンドはRESTfulの操作とUI側だけに集中することができます。
Web UIはpublicフォルダ以下になりますので、ここをGitで管理するようにすればWebアプリケーション開発がスムーズになることでしょう。ちょっとしたWebアプリケーションであれば、Deploydを使うことですぐに開発できるようになります。フロントエンドエンジニアの方はもちろん、Webエンジニアの方におすすめのソフトウェアです。