youtubeなどでスマホゲーム実況をしている人を見ていると、ほとんどの人がAndroidではなくiPhoneを使用されています。
単純に持っているスマホがiPhoneだということもあるのでしょうが、実際に性能や特徴的な面で、iPhoneとAndroidどちらの方がゲームをするのに向いているのか解説いたします。
結論から言うとiPhone(iPad)に軍配が上がる
いきなり答えを出しちゃっていますが、ハッキリいってiPhone(iPad)の方がゲームをやるのには向いています!
まずiPhoneは、Appleが専門で作成しています。ハード(本体)、OSも全てAppleが行っているため、iPhoneに特化した調整が行われています。
iPhoneアプリ(ゲーム)側は、iPhoneでさえ動けばいい、iPhonenに特化したモノを作成すればいいということになります。
※その分お金も掛かるので、Apple側からもサポートしてくれたりもする。
対してAndroidは、OSはGoogleが提供していますが、その先は各会社(Google、サムスン、ソニーなどなど…)が作成しています。
各会社によってハード(本体)が異なり、それに合わせてOSの調整もしなければいけません。
Androidアプリ(ゲーム)側も、各会社が作ったAndroidで動くように調整をしなければいけないので、Androidアプリ開発側も時間も労力も掛かりますし、ひとつのスマホに特化したモノが作れないのです。
※OSは無料で提供するけど、ある程度から先は自己責任で~、という感じなのがAndroidのスタンスです。
以上の背景から、専門的・特化できるiPhoneアプリの方が、実際にゲームはサクサク動いてくれます。
では次は実際にアプリ(ゲーム)が動く仕組みから見てみましょう。
アプリ(ゲーム)が動く仕組みから既に差が付いている
ここでは専門的な話にもなってくるのですが、そもそもiPhoneとAndroidではアプリ(ゲーム)が動く仕組みの時点で差が付いていることについて解説します。
※しっかり厳密に解説すると前提知識が色々必要になるので、ザックリ説明させていただきます(汗)
まずiPhone側なのですが、アプリが動く時は「ネイティブコード」という状態になって動きます。
ネイティブコードとは、「機械語」とも呼ばれるのですが、コンピューターが理解できるコードのことを言います。
(映画「マトリックス」などで「0」「1」が沢山並んでいるモノをイメージしてください(笑))
プログラマーが書くプログラミング言語 ⇒ コンピューターに理解されやすいネイティブコード
となって実行されるので、動きが非常に速くなります。
対してAndroid側なのですが、アプリが動く時は「JavaVirtualMachin」(JVM)の上で動きます。
JVMとは、Androidアプリを作るためのJavaプログラムを、ネイティブコードに変換するためのソフトになります。
Androidは様々な会社が独自にスマホを作るということもあり、その違いを吸収するためにも、一度JVMを介してネイティブコードにしております。
(そもそものプログラミング言語の仕組みから違うのですが、一旦置いておいて…)
なので、Andoridアプリが動くときは、
プログラマーが書くプログラミング言語 ⇒ JVM ⇒ コンピューターに理解されやすいネイティブコード
の順になっているので、iPhoneアプリと比べるとAndroidアプリは、どうしても手間が1段階増えてしまっているのです。
以上のことから、アプリを開発する側から言わせてもらうと、どうしても仕組みの時点でiPhoneの方が速い、と言わざるを得ないのです。
開発側から見ても大変なAndroid
これは実際にアプリを開発している私の経験からなのですが、Androidは様々なスマホに対応しなければいけないので、どうしても手間が増えてしまいます。
アーキテクチャやネイティブ関連のことで、同じエンジニアの方々は「あ~…」と声が出るかもしれません。
iPhoneはアプリを開発する時から、Appleの方で面倒なことはある程度引き受けてくれるので、iPhoneアプリ開発からAndroidアプリ開発に入った人は、「え、コレできないの?」とか、「コレもアプリ側で解決しなきゃいけないの?」というのが出てきているかもしれません。
今はクロスプラットフォーム開発環境があるので悩みも減る場面も出てきますが、速度が求められるアプリではクロスプラットフォームは採用されにくいかと思うので、相変わらずAndroidアプリ開発は大変です。
総評
以上のことから、結局ゲームをするとなるとiPhoneの方が優れている、ということになります。
最近のAndroidでもゲーミングスマホが出てきており、高性能CPUやメモリを多く搭載していますが、エンジニア視点からすると
「パソコンの中でパソコン動かして、その中でアプリ動かしているのがAndroid」
という風に見えています。
もちろんAndroidの方がJVMのおかげで臨機応変に動かせる、ということもあったりします。
もしスマホでゲームをすることが多い方は、悩んでいるのであれば、とりあえずiPhoneを買うことをオススメします。
(値段が高いのは置いといて・・・(笑))