アシアルブログ

アシアルの中の人が技術と想いのたけをつづるブログです

第8回Apache Cordova勉強会が開催されました

CordovaやPhneGapといったハイブリッドアプリ開発に興味のあるエンジニアが多数集まる第8回Apache Cordova勉強会が西新宿のニフティ社にて行われました。80名近くの方々に参加いただき、大いに盛り上がった会となりました。



こちらはそのレポート記事になります。



Cordova/Electron の構造を知る



ソニー株式会社 関 康治さん





最近、デスクトップ向けのハイブリッドアプリ開発環境として知られるようになってきたEletronとCordovaの相違点について紹介されていました。



CordovaプラグインではどのようにしてネイティブとJavaScriptが通信を行っているのかについて紹介しました。特に面白いのはAndroidiOSで手法が異なるということです。AndroidについてはOSの提供しているWebViewをそのまま使います(後述するCrosswalkは異なります)。



JavaScriptからネイティブへの通信は2つあります。一つは_cordovaNativeを使う方法で、2つ目はPromptというOS標準のAPIをコールする方法です。対して、JavaScriptで処理を受け取る時にはハック的な手法が存分に使われています。まずポーリングで、50msごとに確認する方法を使っています。さらにLOAD_URL方式として、webViewにあるLOAD_URLにJavaScriptを埋め込んで実行する。最後にONLINE_EVENT方式。ネイティブで強制的にオンラインとオフラインを切り替えます。デフォルトはONLINE_EVENT方式となっています。



Crosswalkを使った場合。Androidアプリの中にCrosswalk(ブラウザ)を梱包します。使えるAPIが固定化されるメリットなどはありますが、プラグインの通信については特に変わりません。



iOSの場合。最近のiOS9からUIWebViewからWKWebViewに変わりました。それに伴って、通信方式が変わっています。iOSでは標準で用意されているので、JavaScriptからネイティブは簡単です。UIWebViewでは逆(ネイティブからJavaScript)はハックがふんだんに使われています。まずiframe方式で、iframeのハッシュを書き換えることでメッセージが飛ばします。さらにXHR方式で、ローカルでAjaxをやっているような感じの動きをします。iOS9のWKWebViewはメッセージハンドラーを使って簡単に通信しています。



なお、CordovaはUbuntu向けにも開発できるのですが、これはUbuntu Oneという携帯電話向けOS用に開発されています。実装としては、Qtに依存しています。UbuntuではメッセージAPIを持っているのでスマートにデータの送受信ができます。



最近ではテレビなどにもブラウザが含まれるようになっています。そこでCordovaを使って他のプラットフォーム向けにアプリ提供ができないかどうか試してみました。その場合、問題になるのは利用するブラウザを自前で用意しなければならないことと、JavaScriptとネイティブの通信方法を確保するのが困難でした。



そこでElectronに注目しました。ElectronはWindows/Mac OSX向けのネイティブアプリが作れます。コンパイルしてできあがるバイナリはNode とChromiumを足した感じ。Chromiumとnodeは良い感じに通信してくれます。Cordovaのハック的なやり方に比べると随分スマートになっています。



なお、Electronのリスクとしては、開発を一人でやっている、Chromium、nodeが入っているので重い、Chromiumのセキュリティアップデートよりちょっとタイムラグがあるといった点になります。



CordovaとElectronはwebViewの調達方法が違うというのが今回の結論でした。似たような技術ですが、取り組みがまったく違うようです。



質問としては以下がありました。



ソニーのグラスやデバイスといったプロダクトにCordovaに組み込んだことありますか?



製品としては答えられません。実験的な実装であれば、Cordovaを社内的に使っています。



Cordova × EdTech



エレファンキューブの支倉常明さん





まず事例の紹介がありました。学校の授業用ツールのカンガルー(iPad向けApp Store)になります。ある問題に対して、特徴挙げていきつつグルーピングします。マインドマップ的な、授業中に使う思考ツールです。アプリはCordovaで作られていて、データはlocalStorageに保存するようになっています。



このアプリを開発したきっかけは、新潟大学教育学部附属新潟小学校の片山 敏郎 先生の要望から始まったとのこと。そこに多くの教師が参加しつつ、実際に開発できるのですが人が支倉さんしかいなかったので開発することにしたとのことです。



Cordovaを使ってみて実感するのは開発が爆速であるということ。Web上でも動くようにしたので、確認がとてもスムーズに進む。



さらに別な事例として◯◯を紹介しました。◯◯は海外向けの日本語教育アプリです。UIはOnsen UIを使っており、元々iOS/Android/Webサイトの3環境で使いたいという要望があったそうです。アプリ側の特徴としては、動画や音声をダウンロードするようになっています。



なお、WebViewなのでvideo/audioタグで問題ないかと思ったそうなのですが、Androidではうまく再生できない不具合にハマったとのこと。結局、Cordovaのプラグインを使っているのですが、Webブラウザでも動かすために分岐処理によって使う仕組みを切り替えるようにしているそうです。



ただ、その甲斐もあってワンソースでiOS/Android/Webブラウザに対応しています。



その他の機能として、受講者の学習履歴を閲覧したり、お知らせ/スケジュール配信といった機能があります。サーバサイドはPHPで作ってあるとのことです。



その他の問題として、ID/PWの仕組みを用意するとAppleがとりあえずリジェクトするそうです。また、課金の仕組みを用意していても問題になります。iCloudのバックアップは25MBまでしか使えないので、動画などを保存するとすぐにいっぱいになります。回避策としては、特定のメタデータを書き込むと除外できます。



ニフティクラウド mobile backend × Cordova





ニフティクラウド mobile backendエヴァンジェリストでもある筆者の登壇です。まずニフティクラウド mobile backendについて説明しました。いわゆるmBaaS(mobile Backend as a Service)の一つで、サーバサイドで必要になる機能をまるっと提供することでアプリ開発を高速化します。また、無料から使えるので開発コストを低コスト化することにもつながります。



主な機能はデータストア(データベース)、ファイルストア(ストレージ)、会員管理、プッシュ通知、スクリプトがあります。スクリプトは最も最近出てきた機能で、node.jsベースのコードでmBaaSを拡張できるようになります。



JavaScript SDKを提供しており、Cordovaと絡めて動かすこともできます。このセッション中でのデモは失敗したのですが(失敗した理由はCordovaのセキュリティ上のメタタグを設定し忘れたためです)、Cordovaプロジェクトへの組み込みはBower/npmを使って簡単にできます。



JavaScript SDKさえ組み込んでしまえば、ごく短いコードでデータをクラウド上に保存できるようになります。






Cordova勉強会は今後も行われるとのことで、ぜひ登壇者を募っているそうです。興味がある方は連絡してみてはいかがでしょうか。

第7回Apache Cordova勉強会に行ってきました

11月16日、第7回Apache Cordova勉強会が日本マイクロソフト セミナールームにて行われました。今回はマイクロソフト Visual Studio Client Toolsチーム シニア・プログラム・マネージャー Ryan Salva氏が来日するのに合わせて実施されました。



最初はそのRyan Salva氏の発表でした。



エンタープライズ企業におけるCordovaソリューションの提供について



ガートナーの発表しているMagic Quadrant for Mobile Application Development Platformsからの引用としてグラフが提示されていました(via Mendix Named a Visionary in Gartner 2015 Magic Quadrant for Mobile Application Development Platforms)。





このグラフは左から右に行くほど完成度が高く、開発者にとって必要な機能が揃っているということになります。



上下はベンダーのビジョンの完成度を表しています。この上位(右上の四角の中)にある殆どの企業(全20社中9社)がCordovaソリューションを持っています。企業規模はもちろん、Cordovaの完成度が高いことも分かります。



そして別なデータとしてビジョンモバイルの調査によるとCordovaは他のマルチプラットフォーム技術に比べて2倍以上採用ケースが多いとのことです(via Cross-Platform Tools 2015 - VisionMobile





そしてハイブリッドアプリを使っているアプリ(一部でも)は代表例として次のようになっています。なお、これはCordovaを採用しているという意味ではありません。





このように数多くのアプリにおいてハイブリッドアプリ構成は行われています。



Cordovaに関する主な不満については以下のようになります。会場でもそれぞれ不満を感じている方がいらっしゃいました。



  1. ドキュメント
  2. コアプラグインでないものは品質が悪い
  3. バージョンが上がると動かない


なお、この解決手段としてコントリビュートしてくださいというのがRyan Salva氏の答えでした。Cordovaはオープンソース・ソフトウェアであり、不満に思う点があれば開発に参加できるのが大きなポイントです。



実際、Cordovaにコントリビュートしている主な企業は以下の通りです。





これらの企業に加えて多くの個人開発者も参加しています。そして参加の具合ですが、





という暗黙のルールがあります。そのためiOS9が発表されるとAdobe社のコミットが増え、MicrosoftWindows 10、そしてAndroidも最新版のOSに合わせた開発が行われるとのことです。それぞれ貢献時期は異なるものの、年間を通して同じくらいの貢献度であるというのが良い点とのことです。エンタープライズにおいてCordovaを使っていく上で、各企業がきちんとメンテナンスしてくれることで5年後、10年後の安心感につながるとのことです。



Cordovaのサイトに来るユーザ層は、



  • インド
  • アメリカ
  • ブラジル
  • 中国


が多く、日本からももっとアクセスして欲しいとのことです。Cordovaのダウンロード数は着実に伸びており、過去2年間で2倍に達しています。特にエンタープライズ分野で伸びています。



実際にCordovaで開発しているプラットフォームは、



  1. Android
  2. iOS
  3. Windows


という順番になっています。さらにすでに最新のCordova5が最も多く使われています。



Web技術を使えるとあって、多くのフレームワークが存在しますが、アプリの評価と比べると



  • Backbone 5.8
  • Zepto 5
  • Ionic 4.2
  • Dojo 4.1
  • Angular 3.8


といった順番になっています。jQuery Mobileなどは古いフレームワークであるために動作が重かったり、機能がモダンなプラットフォームに対応していないことが多いそうです。そのためフレームワークの種類に限らず、新しいフレームワークを採用しましょう。



今後のCordovaのロードマップですが、



  1. ドキュメント
  2. プラグインの品質システム
  3. バージョン統合
  4. ネイティブAPIサポートまでの期間短縮


といった順番で考えられているとのことです。



質疑応答では以下の質問が寄せられました。



Electronについてはどうか?



まだまだバギーではないか。CordovaとしてもElectronをサポートするかどうかという話は出たか、今は未定。



エンタープライズ・モバイルアプリにおけるハイブリッドアプリ開発



続いてジェーエムエーシステムズ 中居さんによる**エンタープライズ・モバイルアプリにおけるハイブリッドアプリ開発**の発表です。



スマートデバイスの業務利用増加しているとのことです。理由としては、



  1. セキュリティ懸念よりもビジネス競争力
  2. 単なる便利ツールから武器へと変化している
  3. モバイルアプリの寿命が長期化


昔はデバイスの契約が2年で切れるので、それまで使えれば良かった。今は5年くらいは使い続けられるシステムでないといけない。そこでハイブリッドアプリに注目が集まっている。



ジェーエムエーシステムズさんの開発手法については、



  • ネイティブアプリ
  • ハイブリット開発
  • Webアプリ


の3パターンをクライアントニーズによって使い分けている。iOSアプリのネイティブ開発案件が多いが、ハイブリッドアプリ開発も急激に増えている。数年前はパフォーマンスが悪かったり、一部の機種で動かないような不具合があったので一旦ハイブリッドアプリ開発は中断していた。



なぜハイブリッドアプリ開発が増えているか?理由としては下記が考えられる。





今はマルチデバイスが必須では内が、将来に備えているケース。ハイブリッドアプリはネイティブに劣らないレベルでハードウェアの性能が向上している。昔から一部はクロスプラットフォーム開発フレームワークがあったが、ホビーレベルだったが、今は品質が上がっている。また、Swift/Objective-Cエンジニアの数があまりに少ないため採用しづらい問題も。



ハイブリッドアプリフレームワークに求めるもの。



  • マルチデバイス対応がちゃんとしている
  • OSのバージョンアップ対応が速いかいなか
  • サポートの充実


ジェーエムエーシステムズ社ではMonacaIBM MobileFirst Platformを使っている。Cordovaを直接使わないのはサポートがあるから。



Cordovaで作る!センサと超小型BLEモジュールを用いた簡単IoTアプリ開発



最後は慶應義塾大学 伊藤さんによるCordovaとセンサー、BLEモジュールを用いたIoTアプリ開発に関するプレゼンでした。



Cordovaはスピーディーに開発できるのが良い。自作アプリとしてはAppCubeなど。今回はセンサー × BLE × Cordovaを組み合わせて簡単なIoTを実現するデモです。



作ったのはWaterTrackerというアプリで、コップの下に圧力センサーを置いて、その値をスマートフォンに送信するもの。スマートフォン側はBLEで値を受け取り、コップの残量を可視化。Cordovaを使っているので簡単なJavaScriptのメソッドでできる。



WaterTrackerのソースコードはGitHub上にあります






エンタープライズ(対企業)においてハイブリッドアプリの需要が伸びているのはよく感じられる方が多いのではないでしょうか。スマートフォンは移動中にも使えるデバイスですし、タブレットは現場に持ち込んで作業するのに最適です。



Cordovaの性能が向上したことで、リッチなUI/UXや高速動作よりもまず素早く開発できて、かつマルチプラットフォームに提供できるハイブリッドアプリはますます需要が増しそうですね。

Developer Economics Q3 2013絶賛翻訳中!

こんにちは塚田です。

7月19日にVisionMobileのDeveloper Economics Q3 2013のレポートが公開されました。Developer Economicsは、世界最大級のモバイル開発者を対象とした調査で、年に2回定点調査として実施されています。今回の調査から日本も調査対象になり、115カ国、6,000人の開発関係者からのアンケートへの回答とヒアリング調査をもとにレポートがまとめられています。

日本語版の翻訳は我々が担当しておりまして、現在、絶賛翻訳作業に取り組んでおります。そこで本日は日本語版をお待ちいただいている皆さんに、少しだけ先攻してご紹介したいと思います。


アプエコノミーの市場規模


ます、市場規模のお話。2012年にはハンドセットの売り上げの18%にすぎなかったアプリエコノミーが2016年には33%までのびるという予測がたっています。これまでスマートデバイス自体が価値の源泉であったところから、ソフトウェアやサービスに対して急速にその価値が移転していることを顕著に表しています。




このアプリエコノミーを構成するのは、アプリストアの売り上げや広告収入といったアプリからの直接収入が締める割合は25%ほど。残りは受託開発収入や開発者向けサービスといったもので構成されるとのこと。スマートデバイスの普及によって、今まであまり見えてこなかった、B2B、B2Eといったマーケットが立ち上がってくるということです。

ちなみに、VisionMobileによればモバイルアプリ開発者人口は世界で230万人程度とのこと。Monacaのユーザー現在2万人なので強引にシェアを出せば0.87%ってことですね。


開発者動向


アプリエコノミーの主役とされているのが開発者についても興味深い分析がされていました。
Appleにせよ、Googleにせよ、マイクロソフトにせよ、開発者たちの気を引き、自社のプラットフォームに引き込もうと、製品開発はもちろんのことプロモーションや開発者イベントに必死です。

この開発者向けのアプローチについて、Vision Mobileでは新しい提案をしています。

これまで、各事業者は開発者を伝統的なセオリーでセグメント化してアプローチを行って来たと思います。
例えば、技術要素別(JavaObjective-CC#JavaScript等)や職種別(コーダー、アーキテクト、プロジェクトマネージャー、情報システム担当)、会社規模、アプリカテゴリー、対象市場(B2C か B2B)、また人口統計的な区分(年齢、収入、地域)などがあげられます。

実際に我々もスキルセットや職種ベースでMonacaのプロモーションを行ってきました。

しかし、VisionMobileのこういったモデル失敗すると分析しています。開発者はそんな基準でプラットフォームや開発ツールに時間やお金を投資している訳ではないというのです。



VisionMobileのこれまでの開発者に対する調査の分析から、アプリ開発に対する希望や動機、課題、計画などから下記の8つの分類に分けることが出来るそうです。

・Hunters
・Explorers
・Guns for hire
・Hobbyists
・Product extenders
・Digital content publishers
・Enterprise IT
・Gold seekers


たとえば、HunterやGuns for hireたちは、収益を求める人たちでありiOSを選定する傾向がつよい。

そしてExplorersやHobbyistsたちは、収益に無頓着で学習要素の高いWindows PhoneやBB10を好む。

また、Enterprise ITやProduct extenders、Digital content publishers達は、既存の事業拡大が目的でアプリを開発しHTML5やAndroidを好むそうです。


このアプローチの発想は我々には無かったので、今後のMonacaのプロモーションの実施において多いに参考にすることが出来そうです。


この他にも、本レポートには、新興プラットフォーム(Tizen、FFOS等)、HTML5ディベロッパーツール等に関しての開発者マインドシェアを軸とした興味深い分析が多数盛り込まれております。

日本語版は、今月後半には公開できると思いますので、ご期待のほどよろしくお願いします。

それまで待てないという方は、VisionMobileのサイトより、英語版のレポートが無料でダウンロードできますので、そちらをご覧ください。

Vision Mobileによるモバイルアプリ開発者の調査レポート

ロンドンに本社を置くモバイル関連のリサーチファームであるVision Mobileが、毎年行なっている世界のアプリ開発者を対象としたアンケート調査のレポートが今年も発表されました。

世界95カ国から3,460人の開発者がアンケートに参加し、加えてインタビュー調査まで行われており、かなりコストがかかっている調査だと思いますが、at&tmozillaNOKIAといったスポンサー企業のおかげで、こちらから無料でレポートを入手することが可能です。



今回は、レポートの第二部で"THE DEVELOPER TOOLS LANDSCAPE"と題して、開発者向けのサードパーティツールに関するレポートが大きなページを割いて展開されていました。この中でアシアルで展開するMonacaがカテゴライズされるCross platform toolsも登場しているので、このあたりを中心に紹介させてもらいます。

まずは、サードパーティツール全般の利用状況ですが、3460人のアンケート回答者の約90%がなんらかのサードパーティツールを利用しているとのこと。個別に見ていくと利用率のトップはAd services(34%)次いでUser analytics(28%)とCross platform tools(27%)が続きます。Cross platform toolsは略称CPTsと呼ぶらしいのですが、私の想定以上にCPTsの利用率が高いですね。一方で、最近よくを話題にBack end as a service(BaaS)は14%とまだまだこれからという感じです。



それでは我々が最も知りたいCPTsの概況に移りたいと思います。CPTsの中で最も使われているのはAdobeのPhoneGap、次いでAppcelerator、Adobe Airと続きます。ゲームに特化したUnityやCoronaも結構使われていますね。

どんな開発者が使っているかというと、HTML開発者が38%とトップ。正確にはクロス集計してみないとわかりませんが、Web技術者がPhoneGapを使ってアプリをつくるというのがCPTsの中心的なスタイルになりつつあるようです。

手前味噌ですが、Monacaが狙っているところがCPTのまさにド真ん中って事ですね。
(その分一番競争の激しいところかも知れません)

グラフには出ていませんが、CPTsを使う開発者は複数(平均1.91)の種類のCPTsを使い分けているとのこと。まだまだ発展途中ということもあり、開発者側も一つのサービスにどっぷりというよりは、色々と保険をかけながら進めている様子がうかがえます。



Monacaの隣接分野ということで、BaaSも見てみましょう。
こちらは、Parseのシェアが28%とダントツで高いようです。2番手に来ているのはIn-house。外部ツールを使わずに自前でBaaSっぽいものを使っているとうことですかね。sencha.ioとACS、それぞれSenchaとAppceleratorが展開するBaaSです。CPTs側がバックエンドまで囲い込んでいくという流れができつつあるのかも知れないですね。このへんの動向はMonacaの事業開発を担当しているものとしては見逃せない流れです。



早くも勝負がつきつつあると思われるカテゴリーがAdServiceとUser analytics。両方ともGoogleが非常に強いですね。User analyticsの分野はGoogleとFlurryの寡占状態になっているようです。Flurryの存在は今回はじめて知りましたが、Cross promotion networksでも上位に入っており、その他にもアプリ開発環境も展開しているようです。





Monacaの事業開発担当者として、非常に有益な発見があったので、Monacaの今後の展開にも活かしていきたいと思います。まずは、このようなグローバルな調査にMonacaの名前が出てくる様にしたいですね。

シリコンバレー体験記1. in サンフランシスコ

こんにちは、亀本です。

突然ですが、今、アシアルのメンバー約数名でアメリカ滞在中です。
社員研修の一つで、シリコンバレーを訪ねて見よう、という企画です。

今回は、WEB2.0の取材に行く先発組と、それ以外の後発組に分かれて現地で集合という手筈でした。
自分の到着は現地時間で昨日だったのですが、これがちょうどWEB2.0expoの最終日で先発組がまだ取材中でした。そこで昨日は、後発組のメンバーでふらふらとサンフランシスコ観光をしてきました。

観光名所っぽいところいろいろ回ったのですが、それよりも印象が強かったところをピックアップしてみました。



サンフランシスコのスタバです。メニューはそれほど目新しいものはなかったのですが、注文時に自分の名前を聞かれ、カップに書かれました。手渡し時のごたごたを避けるためですかねー、ちょっと意外でした。あと、通りでコーヒーを飲んでいたら普通にバスケットボールをもった人が町中を歩いてたりして、おもしろかったです。



上の写真は、有名なユニオンスクエアです。
水曜日の昼間だというのに、結構な人数の人がのんびりと談笑していました。
この日は快晴で、ラジカセを持ち出してバックミュージックをかけながらお茶を飲んでいる人がいたりして、解放感たっぷりの広場でした。いいですねー、こういう雰囲気。



フィッシャーマンズワーフにあった、チョコレートなんたら(店名忘れた(^^;)という、いろんなチョコレートを売っているお店です。見渡す限りちょこちょこ。。。わりと幸せになります(笑


というわけで、この日はみんなで初サンフランシスコを満喫してきました。
すごく、住みたいなーと思う町でしたねー。

さてそんなわけで、今日はシリコンバレーへ…というところですが、そちらの様子はまた「シリコンバレー体験記2.」の方で。