スマートフォン 表示
メールフォームでよろづ質問受付中
スマートフォン速度統計への人柱ご協力をお願いします。
2011/2/18 10:00 · 事業考察

一足先に普及の域に達したiPhone、シェアこそiPhoneを抜いたもののまだまだアーリーアダプターに支えられていて普及まではもう少しのAndroid、ノキアの採用表明でようやく芽吹く可能性を見せてきたWindows Phone 7(以下WP7)、おおむねスマートフォンプラットフォームとしてはこの三つに絞られたと見て、これらの今後について軽く予想っぽいことをして見ます。

そもそもこれらのプラットフォームの特徴を、なんてことをやるとこのサイトをごらんの皆様に向けては釈迦に説法になるかもしれませんが、自分用のメモの意味もこめてまとめてみますと。

iPhone(iOS)は言わずと知れたApple独自プラットフォーム。Apple製品限定で、ハードウェアからアプリ配信まで完全垂直統合と言う、言ってみればエコシステム時代に極端に逆行したシステムです。とはいえそれが逆に汎用性を求めすぎて煩雑になった従来スマートフォンやフィーチャーフォンに対する独自性となり、大ヒットしたことはご存知のとおり。

アプリの開発言語もC言語をベースとした独自環境となっており、しかしながらC言語ベースであることから幅広い開発者の参入を可能としています。加えて、ハードウェアアーキテクチャのバリエーションを一切考慮する必要がないため、最初からネイティブコードへのコンパイルが可能となっており、動作速度と言う面では他を圧倒すると聞きます。とにかく開発者には非常に優しいプラットフォームで、これから新しくモバイル向け開発をやるというならその取っ掛かりとして最も適しているのではないかと感じます。

対するAndroidはGoogleによるきわめてオープンなプラットフォーム。ハードウェアに関しては規定範囲内であれば許容可能として自由な実装を許し、端末開発者はコードをカスタマイズしてハードウェア特化機能をサポートしてネイティブコードを作ってね、と言うスタンス。アプリ配信もある程度オープンになっているので、端末開発メーカや事業者が独自の配信サイトを公開することも可能です。

アプリは原則Javaに似たコードで書かれたオブジェクト。これを仮想マシンの上で逐次ネイティブコードに翻訳しながら実行するものです。汎用的なJavaのサブセットを使うので開発者が多く参入し易い、と目論んでいたのでしょうが、正直、C言語とJava、どっちの開発者が多いかと言うと今時点でもまだ微妙なくらいではないかと思います。加えて、VM上動作なので基本的に動作が遅いという難点があります(ただしこの点はAndroid側に事前にネイティブコード化してキャッシュしておく的なバージョンアップがあってそこそこ改善した模様)。

最後にWP7。先代のWindows Mobileからがらりとアーキテクチャを変え、アプリの互換性も失った事実上の新プラットフォーム。それに伴ってハードウェアアーキテクチャの制限も少し厳しくなっているようです。従来のスマートフォンの代名詞的存在だったWindowsCE PocketPCファミリーからブランドを引き継ぐもソフトウェア資産をほぼ全放棄状態であるため従来ユーザをそのまま取り込むのも難しいという逆境。しかしノキアがスマートフォン向けOSとしてWP7導入を決めて今後の伸びがやや期待できるかな、と思われます。

WP7のアプリは、ブラウザのプラグイン向けプラットフォームであるSilverlight。Silverlightの普及率はまだまだだと思うのですが(Silverlight必須のサイト見たことないし)、Silverlight自体は.NET frameworkのサブセットとなっているので、Windows向け開発者と言う非常に広い開発資源の裾野が見込めます。ただ正直、WMのときも.NETアプリは結構ありましたが、どれも超もっさりが基本だったので、動作速度は全く期待できそうにありません。

さて上記のとおり、いくつか的を絞って考えています。「ハードウェアの互換性」「アプリ配信」「アプリ開発の難易度」「アプリ実行速度」と言うあたりですが、個人的にはこの辺の項目がプラットフォームの普及を決める重要なポイントではないかと思っているからなんです。

なんと言っても、プラットフォームが魅力的かどうか、それは、どれだけ多くのアプリが供給されるかによると考えます。1つだけ超絶的に便利で楽しいアプリがあってもダメ。とにかくたくさんあること。Windows対MAC OSと言う構図で、実際MAC OSにはWindowsよりもはるかに便利なアプリなどがありましたが、MSDOS時代からの資源を受け継ぎつつそれを膨らませていったWindowsに数で圧倒されました。これを見て、やはり勝負は「数」ではないか、と。

数さえあれば、その中に突然変異的にウケるアプリが出てくるわけです。それこそ、完全に徹底的に設計したソフトよりも、素人が遊び半分で投げやりに作ったものが大ブレイクするような形で。そういうモノが生まれる土壌は何よりも「数」です。なので、アプリの配信、開発難易度はプラットフォームの普及を左右すると考えます。配信方法が複数用意され登録も簡単なら開発者の意欲も向上しますし、難易度が低ければ当然より多くの開発者が参加するようになります。

また、「アプリの実効速度」も重要だと考えていて、と言うのも、大抵の素人開発者は全然最適化されていないロジックを書いてもっさりな動きに悩まされることになるし、その素人開発者も自分で納得出来ないものは手数料を払ってまで公開しないわけで、となると、素人が組んでも十分な快適性で動く、と言うのは、作られたアプリが実際に公開されるかどうかと言うところの閾値を大きく下げる効果があると私は考えています。

そしてハードウェアの問題。もちろんより多くの第三者がハードウェアを供給できるほうが良いのでしょうが、とはいえ、ハードウェアの設計指針が緩すぎる場合、これは意外とハードウェア開発を難しくします。逆のような気もしますが、プラットフォーム屋によるハードウェア基準を「設計書」と読み替えればなんとなく想像がつきますよね。より詳細に、解釈の余地を残さない形で書かれた設計書のほうが開発は楽。それこそCPUにはどこ社のどれを使え、くらいにまで書いてあれば作るのは本当に楽だと思います。仕様をオープンにしつつ詳細な基準が決められている、と言うのが、ハードウェア普及の鍵かなぁ、と。

そういう意味で見てみると、なんと言ってもiPhoneは、リリースからの時間と言う圧倒的なアドバンテージでアプリの数は十分。多くのヒット作も出ています。また、C言語似の開発言語も、素人アプリ開発者には意外と良い条件。個人的にはJavaよりも敷居は低いんじゃなかろうか、なんて思います。そしてもちろんアプリの動作速度でもおそらく他を圧倒していると思います。ただ問題はハードが専売ってことですね。もちろんそれにこそ魅力を感じる層がiPhone人気を強く下支えしているのも事実ですので、ここまで定着したiPhoneがそのシェアを落とすとしてもかなり時間がかかるはずです。5年は大丈夫かな?と言う感じ。

Androidは、アプリ数こそ増えていますが、VM上で動かすという弱点のために、どうしてもiPhone向けアプリの同等品に見劣りするという評価をされがちです。これはAndroidが普及するための大きな壁になると思います。2.2からの事前コンパイルがどのくらい効くのかはまだあまり評価を聞きませんが、個人的には、機械翻訳コードが手作業で最適化したコードにかなうはずがないと思っています。一方ハードウェアは、既に出荷数で大きくiPhoneに水をあけるほどに成長しています。比較的緩やかながらも必須となるポイントをしっかりと押さえた優れたハードウェア指針が公開されているおかげだと思います。とはいえなんとなく、まだ生活に定着するフェーズには遠そうなイメージ。生活に定着するには何よりゲームとエロですから(ミもフタもないですが)、この辺の充実が今後のAndroidの定着感増大には必須ではないかと感じています。

さて問題のWP7。アプリ実効速度もおそらく激もっさり、まだ有力なハード提供メーカは片手間の数社とノキアだけ。ちょっと普及する萌芽を見出せません。しかし一点個人的に注目しているのが、Silverlightと言うところ。VCでもVBでもなんならJavascriptでもOKと言う裾野の広さは、ひょっとすると多くのWindows向け開発者を引き込めるのではないかと思います。なんつっても、Windows向け開発者の数はiPhoneどころじゃない。フリーソフト配布サイトとか見ても、その開発者の多さに驚きます。従来VBでWindows向けお遊びソフトを作って遊んでいたような人が、iPhoneを見て頑張ってiPhone開発言語を覚えて遊んでたけど、WP7なら昔取った杵柄とソースコード資源を再利用できる、となれば、気軽に舞い戻ることも十分に考えられます。WP7が普及するとすれば、おそらくこの流れが完全にハマったときでしょうね。そのためには、マイクロソフトが開発環境の提供などで数多くの優遇をしていく必要があるような気がします。要するにマイクロソフト次第かなぁ、と。

と言う感じで三つのプラットフォームを比較するでもなくなんとなくどういう感じなのかまとめてみました。いろいろと認識間違いとかあると思いますので、お気軽にご指摘いただければと思います。でわ~。

いくつかのご指摘はごもっともで、何より私自身三つのプラットフォームをひとつとして持っていません(サンプルをいじくるくらいなら全部試しましたが)。ということで、あくまで上のまとめは聞きかじり情報のまとめとしてみてください。ただ、「発売から半年のWP7と3年半もたったAndroidのメーカ数を比べるのは無意味だ」という指摘にだけは反論させてください。プラットフォーム競争で「時間」というのは最大の競争資源で、絶対に取り返しのつかない資源です。同じ性能や状況なら登場が遅いというだけで圧倒的なディスアドバンテージです。遅いのだからこそ最初から相手を圧倒するラインナップで望まなければ勝負にさえなりません。WP7が3年後に今のAndroidと同じくらいに参加ベンダを増やしても、その間Android勢が立ち止まって待っていてくれる保証はないのです。常に今ある状況で勝つ要素を見出さなければならない。その点、WP7はsilverlightという開発しやすい環境とノキアでの事実上の排他的採用、という活かさなければならない差別化ポイントがある。これを活かすためには、すでに先をはしるiPhoneやAndroidのようなメーカや口コミ頼みではなくMS自身が強気の施策を打たなければならないと私は感じています。

さらに追記:いくつかさらに指摘されている方の中には完全に誤読している人が多いように思われます。すなわち私の主張を「WP7=もっさり」と誤読しているということ。私が言っているのはアプリの話ですよ?WP7の基本UIとか初期搭載アプリがぬるぬるなのは知っていますしそれは当然ですが、では、silverlight上で書いたコードが、iPhoneやAndroidで全く同じロジックで書いたコードと同じ実行速度を実現できるか?と言う点です。この点がはっきりしているのならそれを指摘いただければいいのですが、これをはっきりさせず「こいつはWP7触ったこともないだろw」と言う反応しかないのでは、私が認識間違いなのかどうかさえ分かりません。少なくとも私の中のイメージでは.NETはもっさりだし、以前VB5.0からVB.NETにフリーソフトを移植したときあまりにもっさりだったので公開を諦めたこともあったからです。この心配を払拭するデータ(つまり素の.NETとWP7のプラットフォームであるサブセットのベンチマークデータ)があれば上の記述はすべて改めることが出来るのですが、それがない以上、イメージで語るしかないわけです。

一部の方々へ>いやもう寝言だなんだはいいからさ、具体的にObject-CやJava with dalvikとSilverlightで同じロジックを書いたらSilverlightのほうが速いと断言してよ。ソースがどうとか言わないから。断言さえしてくれればいいんですよ。私のほうが間違ってる可能性は高いんだからさ。なんでその一言だけ言えないの?こっちも結論が出なくてもやもやしっぱなしなんですよ。

さて上記のように女々しくグダグダと書いていたら、きちんと解説をいただけました。ありがとうございます。
Windows Phone 7 に対する勘違いを正そう
私が懸念していたのは、Object-Cで開発していた素人プログラマが軽い気持ちでSilverlightに同じロジックを持ち込んだときにあまりにもっさりで開発する意欲をなくす→アプリが充実しない、と言う点でした。その点に関して、「絶対に速いとは言い切れないが差は縮まりつつある」との見解をいただきました。なので、懸念払拭とは行かないまでも、まぁそこそこ頑張ってるんだな、と意識を改めさせていただきます。
ちょっとだけ補足。「もっさり」について、一応私は最初からロジックの動作速度を指していました。「大抵の素人開発者は全然最適化されていないロジックを書いてもっさりな動きに悩まされることになるし」と書いたとおり。要するに素人開発者が書いたクソコードでもそこそこ速く動けば、それだけ公開される閾値が下がってアプリが充実するという論理です。.NETのプロフェッショナルな方々には我慢ならない言いっぷりだったとは思いますが、ウンコみたいなアプリを大量生産するのはクソコードを書く素人開発者なんです。私なんてその典型。だから、私の書いたクソコードは.NETではまともに動かなかった。.NETに最適化した書き方を出来ればきっとまともに動くものになるとは思うんですが、あくまで「素人プログラマ」の視点を重視しているということを、ご承知くださればと思います。気分を害した.NET関係者の方々には、お詫び申し上げます。

tweet TWEET

[Tweet]

2011/2/18 10:00 · 事業考察 · 5 comments
Written by


ケータイニュース.net
当サイトのニュースチェック用情報収集ポータルをコメント機能付きで開放中。

5 Comments to “iPhone vs Android vs WindowsPhone7を考える”

  1. rawpepper

    iPhone での開発経験はないのですが、C 言語の方が実行スピードが速いというのには同意しますが、そんなに素人開発者に優しいですかねぇ?
    # iPhone のメインの開発言語 Objective-C はよく知りませんが。

    ポインタだとか、メモリリークだとか素人開発者には結構難しい問題が山積なんですが…

    さらに、Mac が必要だし、Apple に年会費を払わないと自分の端末でですら、開発中のアプリを実行する事が出来ませんし、公開するには Apple の検閲が入るというというのに…

    まさか C 言語で開発できるのとバリエーションが限られていると言う点だけで話されていますか?
    # ちなみに Android も C 言語で開発できます。

    後気になったのが
    > これを仮想マシンの上で逐次ネイティブコードに翻訳しながら実行するものです。
    > 事前にネイティブコード化してキャッシュしておく
    の部分なんですが、Dalvik の実行時の説明としてはちょっと間違っていると思います。

  2. […] This post was mentioned on Twitter by コータロ, 無線にゃん. 無線にゃん said: [iPhone vs Android vs Windo…] http://wnyan.jp/740 ◆一足先に普及の域に達したiPhone、シェアこそiPhoneを抜いたもののまだまだアーリーアダプターに支えられていて普及まではもう少しのA… […]

  3. スマートフォン 口コミ…

    iPhone vs Android vs WindowsPhone7を考える | 無線にゃん 一足先に普及の域に達したiPhone、シェアこそiPhoneを抜いたもののまだまだアーリーアダプターに支えられていて普及まではもう少しのAndroid、ノキアの採用表明でようやく芽吹く可能性を見せてきたWindows Phone 7(以下WP7)、おおむねスマートフォン …(続きを読む) ソニーのPSP – 毎日気まま日記 アップルの「アイフォーン」などスマートフォンで楽しめるゲームの台頭があります。 …

  4. takuya1925

    いくつか気になったことがあります
    まずなぜ自分が使ったことのないWP7端末をブログエントリーに含めたのか

    ご自分が使ったことのないデバイスのおそらく開発したことのないプラットフォームがもっさりだと言い切れるのでしょうか?

    WP7におけるSilverlightはWMにおけるWin32つまりネイティブプラットフォームなわけです

    WMの.NETがもっさりだったからSilverlightももっさりであるという理論は成り立たないのです

    だいたいWMとWPを同じ物だと思っているところがおかしいのです

    これではXPのJavaアプリケーションがもっさりしていたからWin7の.NETアプリケーションももっさりなはずだといっているようなものです

    実際WP7端末をかれこれ2週間程度使っていますが動作がもっさりしていていらいらしたことはありません

    二つ目にiPhoneのObject-CとC言語がまったく同じだと考えていること

    Object-CはC言語系列の言語ではありますが開発環境も言語そのものにも互換性はほぼありませんしけっして素人にやさしい言語ではありません

    むしろWindowsPhone7のSilverlightの方が開発しやすかったです

    私の実体験ですので人によって感じ方が違うとは思いますが少なくともObject-Cは開発しやすくはありませんでした

    最後にWP7をつくっているメーカーがすごく少ないように書いていること

    発売から半年程度しか立っていないWP7と発売されてから3年目になるAndroidの発売メーカー数を比べることになんの意味があるのでしょうか

    むしろAndroidは発売してから半年どころか3年目にはいっても端末メーカーの主要プラットフォームとなっていません

    さもアンドロイドよりWindowsPhone7を採用しているメーカーが少ないように書くことに違和感を感じます

    だいたいAndroidだってWMやWPの片手間でつくっているメーカーばかりじゃないですか

    基本的にこういう記事は触ったことのない端末を書くべきではないと思います

    人さまのブログの記事は基本的に批判しませんししたくありませんがさすがに気になったのでつい
    悪気はありません

  5. Windows Phone 7 に対する勘違いを正そう…

    ことの発端はこの記事。追記される度に酷い勘違いされているようなので、ブログでいろいろ書きます。 WP7のアプリは、ブラウザのプラグイン向けプラットフォームであるSilverlight。Silverlightの普及率はまだまだだと思うのですが(Silverlight必須のサイト見たことないし…

コメントをどうぞ

※ 次のタグが使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

CAPTCHA