Posted by & filed under 開発.


桜が満開ですね。先週、京都を旅行したのですが、清水寺の桜がとても奇麗でした。という訳で、今回は Sencha.io の話をします。

Problem:

できるだけ短い開発期間でアプリをリリースしたいが、サーバーサイドのプログラミングが苦手、もしくは、毎回同じようなサーバーサイドのコードを書くのが面倒。

Solution:

BaaS の利用を検討してみましょう。BaaS は Backend as a Service の略で、アプリのサーバーサイドで実装する機能を API として提供してくれるサービスです。

アプリのバックエンドで必要な機能は、だいたい似ています。ユーザー登録、ログイン認証、データの保存、通知 etc。これらの機能を、アプリを作る度に毎回用意するのは面倒ですし、しっかりと実装するにはそれなりのスキルが必要です。短い開発期間でアプリをリリースしたいときに、サーバーサイドの準備が足かせになるケースは多いでしょう。そこで役に立つのが BaaS です。現在、BaaS を提供する事業者は複数存在しますが、Sencha Touch のアプリを作るなら Sencha 社が運営する BaaS「Sencha.io」がおすすめです。

Sencha.io:
http://www.sencha.com/products/io

Sencha.io はまだβ版ですが、徐々に実用レベルに近づいてきたように思います。先日発表された HTML5 is Ready App Contest で 1 位に輝いた Sencha Touch アプリ「JDI」は、バックエンドに Sencha.io を利用して、ユーザーの認証とデータの永続化を行っています。JDI のソースコードは GitHub に公開されているので、興味のある方はぜひ覗いてみて下さい。

JDI:
http://jdi.abysscorp.org
(PC の場合、Google Chrome もしくは Safari で利用できます)

JDI(ソースコード):
https://github.com/simonbrunel/jdi

Sencha.io の利用方法

まずは最新版の Sencha Cmd をインストールします。Sencha Cmd のバージョン 3.1 から、Sencha.io と連携できるようになりました。

Download Sencha Cmd:
http://www.sencha.com/products/sencha-cmd/download

続いて、Sencha.io のユーザー登録を行います。ページ下部の「Register here.」から登録ページへ。

Sencha.io ログインページ
https://manage.sencha.io/#!/login

ログインすると、アプリを管理するダッシュボードが表示されます。

io1

簡単なアプリを作成して Sencha.io にデプロイしてみます。Sencha Touch の SDK を配置したディレクトリに移動し generate コマンドを使ってアプリを生成します。

Hello という名称のアプリが作成されました。このアプリをそのまま Sencha.io にデプロイします。まずは生成したアプリのディレクトリに移動して、production ビルドを行います。

build/Hello/production ディレクトリ以下に、リリース用アプリのファイル一式が生成されました。今度は Sencha.io に Hello アプリを作成します。コンソールから以下のコマンドを実行します。

Sencha.io に接続し、アプリが作成されました。ここで生成された AppId は、アプリから Sencha.io の BaaS を利用する際に必要になります。

続いて、アプリのソースコードをアップロードします。build/Hello/production ディレクトリに出力されたアプリの一式を app.zip という名前で圧縮します。

以下のコマンドを実行して、作成した app.zip を sencha.io にアップロードします。

ファイルをアップロードしただけでは、アプリは公開されません。最後に、アップロードしたアプリをデプロイします。

これで、アプリがインターネット上に公開されました。

以下のコマンドを実行してアプリの一覧を表示します。

Hello アプリの appId や URL(http://b4va2vk0.senchafy.com) が分かりますね。この URLを開くと、デプロイした Hello アプリが表示されます。

io2

アプリの URL は CNAME を使って自前で持っているドメインに割り当てることができます。詳しくはドキュメントを参照して下さい。私も試してみて、お名前.com で取得したドメインを Sencha.io のアプリに割り当てることができました。

ここまでだと単純な PaaS ですよね。もちろんそういった用途で Sencha.io を使うのも有用ですが、今回は BaaS として提供されている認証機能を使ってみます。

Sencha.io の BaaS を利用するために Sencha.io SDK をダウンロードします。ダッシュボードにあるリンクから SDK をダウンロードして下さい。先ほど作成した Hello アプリのディレクトリ直下に io というディレクトリを作って、ダウンロードした SDK をコピーします。

app.js にある Ext.Loader に io ディレクトリへのパスを追加します(*1)。

また Sencha Cmd でビルドする際に io ディレクトリのコードを参照できるよう .sencha/app ディレクトリにある sencha.cfg という Sencha Cmd の設定ファイルにある app.classpath を更新します。

続いて Ext.application の io オプションに、先ほど作成した sencha.io アプリの appId を定義します(*1)。また controllers オプションに Ext.io.Controller を追加します(*2)。

以下のコマンドを実行して、Member という名称の認証グループを作成します。

作成した認証グループ Member と Hello アプリを関連づけるため、以下のコマンドを実行します。

これで準備は完了です。ページを表示してみましょう。ユーザーの登録と認証機能がアプリに備わりました。

io3

右上の「register」ボタンを押して、新しくユーザーを登録してみます。フォームに、メールアドレスとパスワードを入力します。パスワードは「アルファベット」+「数字」を組み合わせる必要があるので注意して下さい。

io4

登録後、認証が行われ、view/Main.js で記述した画面が表示されます。今度は、ログアウト機能を追加しましょう。Sencha.io の SDK には、ログアウトボタンが用意されています。view/Main.js を以下のように変更します。

ログアウトボタンを利用するために requires で「Ext.io.ux.AuthButton」クラスを宣言します(*1)。titlebar コンポーネントに items オプションを追加し(*2)、sioAuthButton コンポーネントを追加します(*3)。

ページを再読み込みすると、画面左上にログアウトボタンが表示されます。ログアウトボタンを押すと、ログアウト処理が実行され、ログインページに戻ります。これでユーザー登録、ログイン、ログアウトといった機能が実装できました。

io5

Discussion:

ほんの一部ですが、Sencha.io の機能をご紹介しました。Sencha.io を利用すれば、サーバサイドのプログラムを準備する手間なく、実用的なアプリを作成できます。少し前の Sencha.io は、アプリを Web ページからアップロードしなければならないなど未完成な印象がありましたが、Sencha Cmd との連携でかなり快適に使えるようになってきました。Sencha.io 以外にも BaaS はありますが、Sencha Touch アプリとスムーズに融合できる点は Sencha.io ならではの魅力でしょう。もしサーバーサイドの実装に負担を感じているのであれば、ぜひ Sencha.io を試してみてはいかがでしょうか(※但し、まだ正式リリースされていないので注意が必要です)。

ところで、実は、アリエルでも BaaS の開発プロジェクトが進行中です。そう遠くない将来、Sencha Touch アプリのバックエンドにアリエルの BaaS が利用できる、なんていう日が訪れるかもしれません。β版として公開できるようになれば、ぜひ、ありえるえりあで紹介したいと思います。

See Also:

Sencha.io ドキュメント:
http://docs.sencha.io/current/index.html

Sencha.io Support in Sencha Cmd:
http://www.sencha.com/blog/sencha-io-support-in-sencha-cmd


関連文書:

Comments are closed.