人と生まれたからには、「ちょっと面白いんじゃないのこれ」と思ったが最後、それをしないわけにはいかない。最近の私の場合、flowerflowerの開発がそれだった。
まず、App Storeというシステムの面白さ。かなり少額(現在だと85円)が扱えるし、おかしな業界慣行や相場を押し付けられることもないし、毎日でも値段を変えられるし、利用者は日本国内だけで少なくとも数百万人はいる。こういう面白いものを使って、物流時代の古いやりかたを続けるのは、もったいないの一語に尽きる。
Webブラウザという、貧弱ながら統一されたプラットフォーム。いろいろ問題はあるが、コンテンツベースの商品がUIに売上を左右されることはない。
実のところ、Androidは問題だった。私の見るところ、Androidは失敗しつつある。「デバイスの出荷数はiOSよりも~」と大本営発表はがなりたてるが、Android Marketの売り上げやAndroid端末の満足度は惨憺たるものだ。Androidとはつまるところ、反Apple連合の寄り合い所帯による焦土作戦であり、すべての利害関係者に損をさせるという莫大な犠牲を払ってAppleの覇権を食い止めようとするlose-loseのビジネスではないか。焦土作戦に訴えてまで食い止めるほどの価値がこの覇権にあるというなら、どうして日本国内の覇権を握っていたはずの日本のガラケーは今あの有様なのか。とはいえGoogleにもAndroidにも恨みはないので、試してみた。
以上は開発を始める前の見通しであり、以下は現在の中間報告である。
結論を先に述べると、
・PhoneGapは参考程度と考えるべき
・Android対応がコストに見合う条件はかなり限られる
・iOSのプッシュ通知はひどい
PhoneGapについて。
物の性質上どうしようもないことだが、バグだらけだ。私が見つけただけでも、PhoneGap自体のバグとしか思えない挙動が2つあった(iOSでデバイスを回転させたとき、CSSのビューポートの幅が変更されない。Androidでdevicereadyイベントが発火したときにネットワークが接続されていないと、navigator.network.connection.typeがnull)。もちろんこれにOSのバグ等も加わる。ちなみに一番往生したのは、Android 4.0のみアプリ内のHTMLファイルを開くときにクエリ文字列がつけられないことだった。
とはいえPhoneGapがまるで役に立たないかというと、そんなことはない。「これをするにはおそらくこうするしかない」という見当をつけるうえで大いに参考になる。たとえばOS組み込みのダイアログボックスを出すとき、window.alertと同じようにスレッドをブロックしたいところだが、PhoneGapはコールバックしか提供していない。おそらく、こうするしかないのだろう。……というわけで、無駄なあがきに時間を費やさずにすむ。実現可能なことであればそのやりかたを見つけるのは比較的簡単だが、不可能という結論を出すには時間がかかる。
Android対応がコストに見合う条件はかなり限られる。
Androidは失敗しつつある。マーケティング面だけでなく、技術的な構想の面でも、失敗しつつある。その象徴がMenu Icons・Action Bar Icons(両者は意味的には同一のもの)のデザインガイドラインだ。flowerflowerを開発しなかったら、この体たらくを知ることもなかっただろう。
事細かなデザインガイドラインがこうも目まぐるしく変わるのは、しっかりとした技術的な構想が存在せず、「あれがウケなかったから今度はこれ」という真似をやっているからだ。経営が行き詰まったときに模様替えをして目先を変える店のようなものだ。店の模様替えはそう何度もやれるものではないが、Googleなら何度でも好きなだけAndroidの模様替えができる。なにしろデバイスを作って売って損をするのはGoogleではないのだから。
iOSデバイスがしっかりとした構想の下に作られていることは、物理的なデザインにもUIデザインにも表れている。Androidデバイスが「あれがウケなかったから今度はこれ」であることは、物理的なデザインにもUIデザインにも表れている。そのやりかたに一部の消費者がつきあうのは勝手だが、アプリを作る側としては到底つきあいきれない。
iOSのプッシュ通知はひどい。
意味のある動作をするソフトウェアを開発するとき、人は必ず摩擦に出くわす。摩擦がいつどこで生じるかは出たとこ勝負だ。flowerflowerの場合、最大の摩擦は、私の交通事故とiOSのプッシュ通知だった。どちらも約2週間を空しく貪り食われた。
プッシュ通知を使うアプリを作ろうとする方々にご忠告しておくが、開発専用のデバイスをぜひとも用意すべきだ。それも複数台あるといい。デバイスを「復元」する回数がとてつもないことになるからだ。「復元」直後の状態でのテストを徹底的にみっちりとやらないと、Appleの審査を通らない。