なんとなく綴ってみた

アクセスカウンタ

zoom RSS iOS 11では32bitアプリが動かず……Androidではこんな事態はあるのか?

<<   作成日時 : 2017/09/21 09:45   >>

なるほど(納得、参考になった、ヘー) ブログ気持玉 5 / トラックバック 0 / コメント 0

Appleはこの手の互換性をスパッと切る辺りが凄いとは思うが、その一方で開発者のコストは大きいなと思う。
結局、市場が成長していてアプリが売れる間は良いが、今のように安定期に入ると、アプリのソースをアップグレードし、リコンパイルまでして提供するのは難しくなる。

AndroidやこれまでのWindowsが成功している背景は、後方、前方互換を可能な限り残し、OS上で扱えるソフトウェア資産を継承しているからこそだからかもしれない。まあ、AndroidやChrome、iOS、UWPのアプリにはクラウドベースのものも多いので、アプリの保守が終わると使えなくなるものも多いのが玉に瑕だろう。
http://www.itmedia.co.jp/mobile/articles/1709/19/news129.html


<AndroidとiOSの実行形態の違い>

Androidの一般的なアプリは、iOSと違ってコンパイル(機械語変換)の必要がない。これは、Javaベースの仮想マシンでコンパイル実行するためだ。これはAndroid 4.xまでのDalvikが採用していたJITのお陰でもある。

分かり易く言えば、ブラウザ上で動くHTML5ゲームや、FlashゲームはHTML5に対応したブラウザやFlashがインストールされていれば、動くということを考えればよい。ブラウザが64bitまたはFlash Playerが64bitならそこで動くゲームも64bitで動く。これらは、ソースコードと呼ばれる人が読み取れる記述コードまたはその中間子(オブジェクトモジュールやコードの集まりをまとめたアーカイブモジュール)などを、そのまま、プレーヤーやブラウザが読み取りプログラムコードとして識別変換しているから出来ることだ。

AndroidでいうARTやDalvikという通称仮想マシン(Virtual Machine/VMと略される)は、上記の例で言えば、ブラウザのようなものだ。


それに対して、コンパイラを使って予め機械語に変換する(コンパイルという)と、そのコードは既に32bitか64bitのどちらかに記述長が定まっている。簡単に言えば、一度に実行する処理桁に合わせて、命令の長さも32bit、または64bitに纏まっているわけだ。この機械語は直接OSに指示を与えるため、前変換は必要なく高速になる。
まあ、端的に上記で表せば、ブラウザ本体がそれだ。ブラウザというアプリケーションソフトには32bitと64bit版がある。これは、前処理不要でとても高速に動く上、OSそのものも無駄な変換行程が不要な分軽くなる傾向がある。

iPhoneはメモリが少なくても快適だとか、コア数が少なくても速いと言われる所以はここにある。また、間に無駄な変換行程がない分実は一部のモジュール依存がある場合を除けば、バージョンアップ時に不具合が起きたり、動かなくなるソフトは少なく抑えられるケースもある。(パーミッションが変更された場合は別)

その代わり、32bit/64bitでの互換性問題は起きやすい。また、それ以外にもOS側またはハードウェアに大きな違いが出ると、実は全く動かなくなることがある。今回のパターンはこれだ。



Androidの仮想マシン構造は、OSに直接指示を出すコマンド(ネイティブコード)を使わず、且つアプリ内で特別な優先分岐支持を掛けてなければ、32bitで処理するか、64bit処理するかは仮想マシン側が判断する。そのため、32bit/64bit問題は起きない。その代わり、仮想マシンの構造が変わると、ブラウザのバージョンアップで書式が崩れたりするのと同じように、不具合が起きたり、起動できなくなることもある。要は、バージョンアップ毎の不具合発生率は間に噛ませる仮想環境が鍵を握るため、少し高くなる。また、OS側の実行プロセスがいくつか絡むため、メモリー消費やオーバーヘッドもiOSより多少多い。

その代わり、長い目で見たときの後方互換はソースコードの仕様が変わらない限り、こちらの方が遙かに高い訳だ。また、ハード毎のアプリケーション実行を最適化しやすいのもこれの特徴である。要はOSが集めた、ハードウェア情報を元に、コンパイルの仕方を微妙に変えて最適化することもできる。


<知らないと分からない設計思想>

まあ、Appleの発想とGoogleの発想は根本的に違う。Appleの発想は基本的に自社のハードで最高のパフォーマンスを発揮することにある。しかも、そのハードが他社のそれと比べて少し低くても、他社のそれより高速に動くようOSレベルで設計することで、チューニングしている。そして、それがセキュリティや信頼性の高さを示すわけだ。

そして、セキュリティや信頼を考えると、一定間隔で古いものを捨てていく断捨離も重要になる。これが、Appleの方法であり、そうなると下手に中間を噛まさずネイティブにコンパイルしたコードを実行した方が、効率はよいのである。ついでに言えば、無駄を捨てればそれだけ軽くなり、速くもなる(遅くならない)とも言える。考え方としては、とにかく、ファームウェアが発展したように無駄がないOSである。

自社OSとハードであれば、互換性の問題も起きにく、数世代の後方互換は維持しやすい。


それに対して、Googleなどの発想は真逆だ。OSを作るメーカーであり、ハードウェアメーカーではない。だから、まずは互換性が第一である。しかも、ハードウェアの性能はメーカーによって異なる。そうなると、その違いをあまりハードウェアメーカーが考えることなく埋めてくれる優秀なOSが必要になる。そこで、高度な仮想マシンを使うことにした。その副産物として、64bitと32bitの差はなくなった。これは、WindowsのUWPでも言えることだ。

その代わり、オーバーヘッドは多少大きくなる。ただ開発しているメーカーが多いという点を生かして、毎年大きすぎるほどの性能を持つプロセッサやメモリー搭載モデルを出し続ければ、Appleよりも高性能を売りに出来るという強みも出てくるというそういうわけだ。


ゲームに強いiPhoneなどという人もいるが、OSの発想が違うため特定のアプリケーションで安定した性能を発揮するには、iPhoneはかなり良い。しかし、プロセッサなどが持つ絶対性能がどうなのかというと、AppleがSnapdragon 835にiOSを搭載できたと仮定した場合、もしかするとApple A11より凄い性能を発揮する可能性は大いにある。
Apple上手なところは、OSとハードが自社専用であるため、汎用で勝負する他社とは違う土俵に常に居続けているということだろう。だから、プロセッサやディスプレイなどの単価は結構安く抑えて、高い性能を出すことも不可能ではない。

実際に、ゲームに強いの背景には、ディスプレイ解像度をAppleは良く練って計算している面が見られる。Androidはアホか?というほど上位モデルの解像度を年々上げていくから、GPUが1.2倍高速になっても、ディスプレイの解像度が1.5倍になれば……という話だ。

まあ、ディスプレイの解像度問題は、バッテリーなどの面でも言えるが……。


話を戻すと、32bitと64bitの問題は、Android 5.0 Lollipop(64bit版に対応したAndroid)が出る前の時点で、15%程しかなかった。
https://www.infoq.com/jp/news/2014/07/art-runtime

しかし、Androidアプリの場合、バージョンアップによって動作しなくなるリスクは、毎回のメジャーバージョンアップである程度は現れる。もちろん、ずっとそんなことなく、使えるアプリもあるだろうし、毎回そういう問題が生じるアプリもあるかもしれない。それは、VM動作の宿命であり、利点であり欠点でもある。一つ確かな事は、長い目で見たときの後方互換は、Androidの方が高い。

一方でiOSは特定のハードに最適化している。だから、無駄にVM何か使う必要もない。速さを求めれば、間に噛ませる何かより、最速、安定性などの称号の方が重要だからだ。その代わり、捨てるときにはすっぱりと断捨離するというわけだ。

どっちが良いかというと、どっちでもあっている方を選べば良い。

後は、iOSの方式は、市場が伸びているときには良い。高い評価を得ているときには、ものすごい額の利益が出る。しかし、自社市場が縮小に転じたときに、アプリケーションの開発が減り始め、切り捨てが入ると、アプリが減少し、ユーザーが減るという傾向がある。だから、先進性を常に期待され、それが大きく評価され続けないといけないという宿命があるわけだ。特に、新しい買い手が常に現れ続けないと、汎用市場に比べて、単一OS、単一ハードのアプリ市場などは縮小しやすいので、大変なのである。



Apple iPhone 7 Jet Black【国内SIMフリー】 (128GB)
Apple Computer

amazon.co.jpで買う
Amazonアソシエイト by Apple iPhone 7 Jet Black【国内SIMフリー】 (128GB) の詳しい情報を見る / ウェブリブログ商品ポータル



Fire HD 10 タブレット (Newモデル) 64GB、ブラック
Amazon
2017-10-11

amazon.co.jpで買う
Amazonアソシエイト by Fire HD 10 タブレット (Newモデル) 64GB、ブラック の詳しい情報を見る / ウェブリブログ商品ポータル





テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ
気持玉数 : 5
なるほど(納得、参考になった、ヘー) なるほど(納得、参考になった、ヘー) なるほど(納得、参考になった、ヘー) なるほど(納得、参考になった、ヘー)
面白い

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
iOS 11では32bitアプリが動かず……Androidではこんな事態はあるのか? なんとなく綴ってみた/BIGLOBEウェブリブログ
文字サイズ:       閉じる