Intelligent Technology's Technical Blog

株式会社インテリジェントテクノロジーの技術情報ブログです。

Monacaのセミナーに行ってきました

間藤です。

以前にこのブログでMonacaを紹介しました。Monacaのアカウントを持っていた関係で、以下セミナーの開催通知メールが来たので、先日参加してきました。

『「アプリ開発革命」 クラウドを活用した最新アプリ開発手法を一挙公開! ~クライアント、サーバーの開発から、端末自動テストまで~』

セミナーでは、Monacaだけではなく、ニフティ株式会社が提供する「ニフティクラウド mobile backend」と、エヌ・ティ・ティレゾナント株式会社の「Remote TestKit」も紹介されました。それぞれ約50分程度、およそ2時間30分のセミナーでした。全部を把握できたわけではないと思うのですが、聞いてきたことを以下にまとめてみたいと思います。

MonacaはChrome Appsに対応

最初の説明はMonacaからでした。以前このブログでも書いたように、MonacaはiOSAndroidWindows8のアプリ開発をサポートしていましたが、つい先日のリリースでChrome Appsの開発もサポートするようになったようです。Chrome Appsについては、中山のほうで何回か取り上げています。
私も簡単に試してみました。ダッシュボードから適当なプロジェクトを選択してIDEを起動します。「ビルド」メニューに「Chrome Appsのビルド」が追加されているので、これを選択します。ビルドが終わるとZIPファイルをダウンロードできるので、これをダウンロードして展開します。そして、Chrome拡張機能画面(「設定」画面から拡張機能を選択)を開いて、展開したフォルダをドロップすると、アプリがインストールされます。

f:id:IntelligentTechnology:20140701161824p:plain

Monaca IDEの設定メニューにも「Chrome Apps設定」が追加されていますので、アプリの名前やバージョンなどはそこで設定するようにします。
私は、テンプレートにあるメモ帳アプリを使って試しましたが、アプリの起動は問題なくできました。

f:id:IntelligentTechnology:20140701162659p:plain:h350

しかし、メモの保存ができませんでした。デベロッパツールのコンソールを確認したところ、ローカルストレージの書き込みのところでエラーになっていました。

f:id:IntelligentTechnology:20140701162819p:plain

Chrome Appsでは、ローカルストレージは使えないようです。使うとしたらChrome Apps独自のストレージになるようです。本来このあたりの違いをPhoneGapで吸収したいわけですが、サポートがあるかどうかまで確認できていません。中山の投稿で紹介したMobile Chrome Appsなどもあり、このあたりまだ全然頭が整理できていません。

なお、ビルド→ダウンロード→インストールという手順を上に書きましたが、近日中にChromeウェブストアにChrome Apps用のサポートアプリが公開されるそうです。これを使うとコード修正のたびにビルドする必要がなくなるとのことでした。

この他、Onsen UIの説明もありました。「スマホらしい」ユーザインターフェースを手軽に作成するためのツールです。AngularJSのDirectiveとして提供されるので、AngularJSを利用することが前提だと思います。(ちゃんと確認したわけではないのでこの理解は間違ってるかもしれません)
私は、AngularJSはチュートリアルを一通り見たくらいの知識しかないですが、非常によくできたフレームワークだなと思っています。公式サイトのチュートリアルやドキュメントもかなり充実していて、キャッチアップもしやすいという印象です。なので、PhoneGap+AngularJS+Onsen UIという組み合わせでアプリ開発ができるというのはなかなか魅力的と思ってます。

プッシュ通知も楽々実装

2番目の説明は「ニフティクラウド mobile backend」です。
BaaSに関しては、私が不案内なので、あまり多くは語れませんが、説明は私でも理解できるとてもわかりやすいものでした。導入事例を見ると、プッシュ通知に利用されることが多いようです。プッシュ通知をカスタマイズする機能などもあり、セミナーでも紹介されていました。公開されているSDKドキュメントを見ると、どんな機能が提供されているのか確認できます。また、プッシュ通知をアプリ側で受信するためのPhoneGapプラグインも近日中にリリースされるとのことでした。これを利用すれば、Monacaで作ったアプリでもプッシュ通知受信の仕組みを簡単に実装できるようになります。
これ以外で面白いなと思ったのは、「位置検索機能」です。「ニフティクラウド mobile backend」の提供するデータストアは、キーバリュー形式で管理されるのですが、利用できるデータ型に位置情報(緯度経度)があります。データストアに位置情報を登録しておき、「ある範囲に含まれるデータ」を検索することができます。プッシュ通知をする地域を限定したいときなどに使えるとのことでした。

スマホ実機をリモートレンタル

最後は「Remote TestKit」です。
ネットワーク経由で多種多様な端末をレンタルして利用できるサービスです。一見すると、エミュレータを操作しているような感覚なのですが、リモートにある実機を操作することができます。セミナーでは、主にAndroidにフォーカスして説明されていましたが、端末の種類が多いので、このようなサービスのニーズが高いということでしょう。リモートにある端末とはいえ、手元にある実機とほぼ同じように使える様子が紹介されていました。adbも使えますし、Appiumを使って自動テストも実行できます。(実際にAppiumを利用した自動テストのデモも紹介されました。)
リモートであるがゆえにカメラやNFCといった機能の利用は制限されますが、それを除けば手元に実機があるのと変わりないです。

ということで、様々な機種での動作確認が可能になるわけですが、そうなってくるといかにテストを効率化するかということも気になってくるところです。
Remote TestKitとしては、Selenium IDEを利用した自動テストをサポートしてくれるようです。機能の概要はリンク先を見ていただければわかりますが、android-serverというアプリを利用するようです。このアプリはハイブリッドアプリのようにWebViewを持っていて、AndroidDriverを使ってWebView上に表示したページの自動テストが行えるようになっています。しかし、AndroidDriverは、Seleniumのプロジェクトからは削除扱いになってました。代わりにSelendroidを使いましょうと書かれています。このあたりは別エントリーで取り上げてみようかなと思います。
この他には、「Remote TestKit Thrift API」が提供されるようです。これを使うと、端末のレンタルをAPI経由で行えるようになるようですが、レンタルした後にどのように端末を自動テストするのか、その方法が今一つわかりません。セミナーでこのあたりを確認してみようと思ったのですが、私の質問が下手過ぎて要領得ないままとなりました。


とにかく、いろいろなサービスがどんどん出てきますからキャッチアップも大変ですが、これらをうまく組み合わせて生産性を向上したり、コストを削減したりできるはずですし、それが出来ないと話にならないということになっていくのかなと感じました。