読者です 読者をやめる 読者になる 読者になる

ミッションたぶんPossible

どこにでもいるシステムエンジニアのなんでもない日記です。たぶん。

思考実験:スマホアプリは本当にクロスプラットフォームでないと駄目なのか?

雑記


ごあいさつ

 いきなりタイトルで「スマホ」なんて単語を使っていますが「スマホ」という呼び方が死ぬほど嫌いなタキガワです。「スマホってなんだよ、オナホみたいじゃねーか!!*1とか思いません? 思いませんかそうですか。

はじめに

 オレも今の案件ではiPhoneiPadAndroidもサイズを問わず数種類を扱っています。OSもデバイスの形状も様々なので、ひっくるめて「スマートデバイス」という呼び方を主に使用しています。

 この案件では主にHTML5ベースでアプリを作っています。言わずもがな、その理由は「クロスプラットフォーム対応」。iOSだろうがAndroidだろうがWindows Phone*2だろうが同じアプリが同じように動くことを理想としています。

 あとは開発コストの削減。Objective-CJavaスマートデバイスアプリを作れる要員を調達するのは相応のコストがかかりますが、HTML5なら巷にあふれているWeb開発者ならすぐ転向できるので、間口が広くなり低コストで調達できる、という狙い。

 ネイティブアプリとHTML5でどっちがコストが割安かはもうちょっとやってみないと検証できない部分はありますが、クロスプラットフォーム対応と合わせて考えれば、HTML5は合理的な選択肢なんじゃないかと思います。…ここでは「ネイティブアプリ」とは、OSやデバイスに準拠した開発言語で開発されたアプリを指すと思ってください。iOSだとObjective-CAndroidだとJavaになります。「AndroidアプリをCで開発」とか飛躍しすぎないように(まぁそれもネイティブに相違ないですが)


 やや回りくどい言い方をしましたが、「クロスプラットフォーム対応」の為だけにHTML5を選択しているといっても過言ではありません。そうでなければ別の開発手法でもよかったはず。



 でも、「クロスプラットフォーム対応」って、そんなに重要なんですかね?


 よくよく考えてみると、「クロスプラットフォーム対応」が声高に語られるようになったのはスマートデバイスが流行りだしてからです。それ以前は筐体にアプリがロックされることはむしろ当然だった気がします。

 ゲームで言えば、Final Fantasyドラクエがどの筐体から発売されるかは、その筐体自体の運命を大きく左右しました。PS1が当時の市場イニシアティブを獲れたのも、FF7がPS1から発売されたのが大きな理由のひとつだったんじゃないかと勝手に思っています。であるならば、「○○○というキラーアプリが発売されたからあのプラットフォームは大きく伸びた」なんてのがスマートデバイスであってもおかしくないはず。でも、オレがウォッチしている限り、そういう気配は全くありません。何故でしょうか?

クロスプラットフォームのメリット:開発者

 まず、アプリをクロスプラットフォームでリリースするメリットを列挙してみます。

  • プラットフォームに関係なく多くのユーザーにリーチできる
  • 特定のプラットフォームが廃れた際の乗換コストが不要
  • 事業展開について株主に説明しやすい
  • ブランドがプラットフォームにロックされない
  • etc...

 プラットフォームを限定しないことでサービスをより多くのユーザーに届けることができる、これがクロスプラットフォーム化の最大のメリットです。他はそれに付随した効果なので説明省略。

クロスプラットフォームのデメリット:開発者

 一方で不都合な点も列挙してみます。

  • その筐体の持つ最も尖った機能を使えない(or 使うのが困難、不具合が生じやすい
  • UIがプラットフォームの文脈を完全に再現することが出来ない
  • ネイティブアプリより大概重い(動作が遅い)
  • 3D表現等には(現状)限界がある
  • etc...


 これらは「クロスプラットフォームのデメリット」というよりは、「HTML5アプリ化のデメリット」と呼んだ様が正しいですね。現状、クロスプラットフォームを実現する為の最良の方法はHTML5ですが、これでアプリを作ることは自前でブラウザ用意してその上にWebアプリを別途構築するようなものです。

 ネイティブで実装するより当然性能は落ちますし、デバイスやOSの尖った機能を使うのは、まぁできなくはないんですが、JavaScriptとネイティブを強引に連携しているので相応に難易度があります。FW側でAPIを用意してくれてますが、FWがサポートしてくれるのは機能のリリースからしばらく時間が必要ですし、それ以前にへたくそが実装すると不具合の原因になるのも自明の理。UIもネイティブアプリを使い込んだ人には違和感のあるものになってしまいます。特にフッターとかは結構難しいですし。

クロスプラットフォーム対応分析:開発者

 要は、デバイスやOSの持つ機能を100%使い切ろうと思うとどうしてもネイティブアプリにせざるをえず、それらを使わなくてもなんとかなる、もしくはさほど機能や性能が劣っても構わない、それよりはユーザーリーチを広げたい場合にクロスプラットフォームHTML5アプリを選択することになるのでしょう。



 さて、これまで列挙してきたクロスプラットフォームのメリット・デメリットは、開発者側の視点からでした。翻って、プラットフォーム側から見ればどうでしょう?

クロスプラットフォームのメリット:プラットフォーム側

  • 既に人気が確立されたアプリが自プラットフォームでも動くようになる
  • 後発プラットフォームであってもアプリが充実しやすい(他プラットフォームから簡単に移植されるから)
  • etc...

クロスプラットフォームのデメリット:プラットフォーム側

  • 人気アプリを独占できない
  • ユーザーに他プラットフォームとの大きな差異を提示できない
  • etc...

クロスプラットフォーム対応分析:プラットフォーム側

 独自の強烈なコンテンツがあればプラットフォームにとっては強烈なアピールになりますが、裏を返せば、他の強烈なコンテンツが自プラットフォームでも動く・使えるというのも十分なメリットです。Windows Phoneのように後発プラットフォーマーにとっては、他からアプリが移植されることは、コンテンツ過疎化を防ぐ意味でも歓迎すべきことでしょう。コンテンツの独占か横並びか、どちらがメリットが大きいかを判断するのは非常に難しいです。


 ただ、個人的にはコンテンツでプラットフォームを差別化することは現状不可能なんじゃないかと思っています。


 なぜなら、どのデバイス・OSに、どんなアプリやコンテンツがあるかなんて、量が多すぎて殆どのユーザーには判断できないからです。周辺情報をヘビーウォッチしているオレでさえ全く把握できません。スマートデバイスの登場からたかだか数年ですが、コンテンツ・アプリの量は爆発的に増えました。どれがキラーアプリかなんて分かりませんし、スマートデバイスの利用方法が多様化していて、どれが誰にとって最良のコンテンツ・アプリになるかどうかさえ判別がつきません。
 そんな状況で「コンテンツ・アプリがスマートデバイスのプラットフォームを差別化する」ことはできないでしょう。事実、AppleGoogleもコンテンツやアプリで自プラットフォームを差別化する動きはみせておらず、プラットフォーム自体が持つ機能や筐体そのものが持つ魅力を前面に押し出そうとしているように感じられます。

ユーザー視点とクロスプラットフォーム

 普通、ユーザーは携帯電話を買う時にどんな事を考えるでしょうか?


 現在はナンバーポータビリティもあるので、電話番号は通信キャリアを変えても同じ番号を持ちまわることができます。そうは言ってもメールアドレスは変わってしまいますし、それまで貯めてきたポイント等、通信キャリアから受けられるサービスは一回リセットされてしまいます。「通信キャリア」は携帯電話選定上大きなファクターでしょう。


 オレは今でこそiPhone一辺倒ですが、それ以前は「サイズ(重量)」「価格」「見た目」「使い易さ」の順で優先度を付けて選定していました。優先度の付け方はともかくとして、他の特にこだわりの無いユーザーも同じだとすれば、一番の着眼点は「筐体そのものの魅力」になるんじゃないかと思います。OSとかは二の次ですね。


 一方、「俺はiPhoneしか使わねーぜ!」「Googleが世界征服するまで私はAndroidについていく!」というこだわりのある人やプラットフォーム自体のファンも当然いるでしょうが、その人たちはおそらくある程度事前知識のある状態で購入に臨むはずです。


 いづれにせよ、前述の通りどんなコンテンツやアプリがあるかは把握してないのが殆どだと思います。「Twitter / Facebookをやりたいからスマートフォンを買った」なんて笑い話みたいな恐ろしい事象も発生しているみたいですが、現状どのプラットフォームでも…というよりフィーチャーフォンでもソーシャルメディアは活用できますしねぇ。であるならばユーザーは以下のような点に重きを置いてスマートデバイスを購入しているのではないかと推測できます。

  1. 通信キャリア
  2. 筐体そのものの魅力
  3. プラットフォーム(OS)自体の魅力


 …まぁ要するに、コンテンツ・アプリがスマートデバイスの購入対象を左右することは無い、ということです。勿論、他の人に出来て自分に出来ないことがあると不満ですから、できるだけ自分の持つプラットフォーム・筐体で使えるアプリが多いことに変わりはありません。であるならば、アプリのクロスプラットフォーム対応は歓迎すべき事象でしょう。
 そういえばエンタープライズでも筐体やOSの選定は、企業間のしがらみだったり、有名だからiPad、比較的安いからAndroidタブレット、なんてのが殆どです。「これがやりたいからどうしても○○○というデバイスで!」というケースは、今のところNFC - Androidくらいしかありません*3

結論

 やや強引ですが、まとめてみます。

  • プラットフォーマーたちはどんなコンテンツ・アプリがあるかはさほど気に留めていない
  • ユーザーは「通信キャリア」「筐体そのものの魅力」「プラットフォームの魅力」でデバイスを選定。コンテンツやアプリは気に留めない。
  • 開発者としては
    • バイス・OS特有の機能をいち早く実装する、デバイスの性能をフルに生かす場合にはネイティブアプリを選択
    • 広くユーザーにリーチしたい場合にはクロスプラットフォーム対応アプリを選択


 先日のデブサミ2012でも、UX系のセッションでは頻繁に「スマートフォン向けではクロスプラットフォーム対応が重要」と語られていました。プラットフォーマーもユーザーもコンテンツ・アプリについて通常時はさほど気にしていないでしょうが、いざ「あっちのスマホではあのアプリが使えるのに、私のでは出来ない」とある日知ったら烈火の如く怒り出すか、あるいは失望してモチベーションを落とすか、ともかくネガティブな印象を与えてしまうことになるかもしれません。

 であるならば、先進的すぎる機能や、どうしても性能的・機能的に実現できない以外の場合を除いて、クロスプラットフォーム対応を前提としてアプリを提供していくことは、開発側としては頭に入れておく必要があるんじゃないかと思われます。


 極端に言えば、GREEやモバゲーのように、スマートデバイスだけじゃなくてフィーチャーフォンまで視野に入れたクロスプラットフォーム対応が望ましいんでしょうが、個人的には「う〜ん、そんなことできんのか?」「クロスプラットフォーム対応に目が行き過ぎてリリーススピードが遅くなったりコストが掛かり過ぎたら意味ないのでは?」とか色々考えたりもします。


 ともかく、オレ個人の意見としては「スマートデバイスでのクロスプラットフォーム対応はやっぱり必要」という結論で、筆を置きたいと思います。*4


*1:もしくは「スマタ」でも可。

*2:まだ試したことないけど。

*3:ちなみにアイディアだけで実現しませんでした。

*4:あ〜、良かった。ちゃんとまとまって。特に結論を出さずに書き始めたから、結論出なかったらどうしようかと不安でしょうがなかったw。