スマートフォンの世界ではネイティブアプリのマーケットが圧倒的ですが、僕みたいにWeb開発しかやったことないデベロッパーがiOSとAndroidの両対応アプリを作ろうとするといきなり新言語を学ぶ必要が出てきてしまいます。
やってみるとわかるのですが、非常に面倒くさいですね。
そこでHTML + JSで大半を作成し、JSではいじれない機能(カメラ、ファイルシステムなどのAPI)をJSからいじれるようにしてしまおうというのがApache Cordovaというプロジェクトです。
で、MonacaというのはこのCordovaとAngularをラップしたクラウドサービスですね。アシアルの岡本さんから紹介されたので本を読んでみました(ご恵投感謝)
[429] [429] Client error: `POST https://webservices.amazon.co.jp/paapi5/getitems` resulted in a `429 Too Many Requests` response: {"__type":"com.amazon.paapi5#TooManyRequestsException","Errors":[{"Code":"TooManyRequests","Message":"The request was de (truncated...)
Monacaの特徴
Cordova自体は以前PhoneGapという名前でしたが、こうしたWebアプリをネイティブにラップするプロジェクトとしてはかなり歴史がある方でしょう。シェアも一番なんじゃないでしょうか(ソースはなし)
「じゃあCordovaでいいじゃん」となりそうですが、次のような点でMonacaを使うメリットがあると思います。
- Cordovaはそもそも環境を整えるのがめんどくさい(やってみればわかる)
- ビルドをやってくれる(スプラッシュ画像の設定とか、そういうのも簡単)
- MonacaにはOnsen UIというAngularベースのUIフレームワークがついている(Onsen Theme Rollerを参照のこと)
- MonacaバックエンドというBaasがついている
実際にアプリを作る場合重要なのは4番です。
これは偏った意見かもしれませんが、画面を作ること自体はUIフレームワークがあろうがなかろうがそれほど重要ではありません。というのも、僕は「毎月スマホアプリを2本リリースしてその開発費で生活」ということをしていないからですね。もしそういう生活をしている人は、「いかにUIが早く作れるか」というのは重要だと思いますよ。
僕の場合、それよりも自身が運営するWebサービスと連携しつつ、そこにない機能(課金、プッシュ通知)を実現できるかどうかという点が重要です。
こうしたBaas機能がセットでついているのはアプリ作成サービスとしてとても重要ですね。
Monacaの有料プラン
さて、Monacaはクラウドサービスなので、当たり前ですが有料プランがあります。書籍を読む限りはとりあえず無料ではじめられますが、僕は50,000円/1年のGoldプランにしようかなと思っています。決め手は以下の通り。
- Monaca Localkit
- 僕はクラウドのエディタって嫌いなので、使い慣れたJetBrainsを使いたいと思っています。ローカルのIDEで開発するには、Localkitが必要で、これはGoldプランから。
- サーバー間連携用マネジメントAPI
- たとえば、自分が作成しているWebサービスでプッシュ通知を送る時(ex.〇〇さんからコメントがありました)には、サーバー間連携が必要かと。Monacaで作ったアプリはMonacaバックエンドと連携させといて、それ以外のを自分のWebサーバからMonacaクラウドのサーバと連携させる感じですね。
他にもプッシュ通知の件数(無料だと月1,000件と少なめ)とか、Cordovaプラグインの組み込みとか、本気でアプリを作ろうと思ったら必要だと思われる機能はGoldプランからっぽいですね。
なにを作るつもりか
最近は受託の仕事(そして収入)を減らし、破滅派での電子書籍販売に力を注ごうとしています。が、全然売れないので、「そもそもコミュニティとして盛り上げる必要があるな」と思っています。
また、「Webは参加のハードルが高いのかな?」と思うことも多々あります。スマホやタブレットで投稿したいという同人も増えてきました。
まあ、ここら辺はnoteなんかが普通にそういうアプリを出しているので、事情(事業規模とか)を全く知らないユーザーからしたら、「破滅派ではなんでできないの?」と思うのもしょうがないっちゃしょうがないんですけどね。
そんなわけで次のようなアプリを出そうと思っています。
- Facebookメッセンジャーみたいなやつ。掲示板はすでにあるんですが、パブリックじゃないコミュニケーションをみんなが求めている気がする……
- 投稿できる機能。WordPressの管理画面を一生懸命カスタマイズしてきて思ったのは、「一画面だとダメだな」ということですね。Evernoteなどを参考にして、いい感じのを作りたいと思います。
これらを1つにまとめるか、それとも別にするかはわかりませんが、とにかくそんな感じのを作りたいと思います。Webサービス側でメッセージ機能ができたら、虎の子50,000をぶっこんでアプリ開発開始ですよ。
Monacaを採用するデメリット
ヨイショしてばかりもなんなので、ついでに、デメリットも考えてみました。
- サービスの停止
- このリスクは必ずあります。基本的にはCordovaやAngularJSといったオープンソースを土台にしているので、仮にアシアルが潰れたとしても資産がすべて失われることはないんじゃないでしょうかね。それよりも自分の会社が潰れる心配をした方がいいですね。
- 学習曲線
- すでにObjective-CやSwift、Androidに造詣が深い方はわかりませんが、Webの知識しかない方はWeb技術をベースにした方が楽です。気になるのはAngularJSの今後ですが、これはなに使ったって一緒でしょう。全部それなりに覚えるのめんどくさいですよ。
- コスト
- 年50,000円というのが高いか安いかですが、それが30,000円だったらいいのかというと……よくわからないですね。20,000円で損益分岐点が変わってしまうようなアプリをどうしたらいいのか、僕にはわからないです。
- パフォーマンス
- 「Web技術を利用したアプリは遅い」というのは事実です。ベンチマークとったらそうなると思います。が、ゲームのように動きの多いものを作らない限り、あまり問題にはならないでしょう。ゲーム作ろうと思っている方は要注意。
どうでしょう、参考になりましたでしょうか。
終わりに
というわけで、Monaca公式ガイドブックの紹介でした。アプリ開発者の話を聞いていると、Webよりもアプリの方がずっとユーザーベースが多いので、僕も早くそちらに行きたいことです。
[429] [429] Client error: `POST https://webservices.amazon.co.jp/paapi5/getitems` resulted in a `429 Too Many Requests` response: {"__type":"com.amazon.paapi5#TooManyRequestsException","Errors":[{"Code":"TooManyRequests","Message":"The request was de (truncated...)