iOS7に対抗してAndroidも64bit化を計画し始めたみたいですね。
しかしAndroidの64bit化って意味あるのでしょうか?
何bitって何?
通常プロセッサにおいて「何bit」って言ったらそれはレジスタのサイズを言っています。
64bitプロセッサならレジスタのサイズが64bitと言う事ですね。
これは扱えるアドレスが大きくなる(C言語の知識がある人ならポインタについて思い出してください)事を意味します。
つまりプロセスが大容量のメモリが使えると言う事ですね。
現在のスマホで主流のプロセッサは32bitです。
プロセスは最大2GBのメモリを扱えます。
実際にはメモリは色々な用途に使われるので純粋にプログラムが利用できるメモリ(Heapメモリと言います)はもっと少ないです。
最近は4GB位のメモリを積んでいるAndroidスマホも珍しくないですが実際には4GB使い切れないんですね。
まあOSが使う分とか・・・Androidの場合バックグラウンドプロセスもマルチタスクで動くので・・・4GBのメモリも無駄では無いんですけど。
Androidのアプリはバーチャルマシンの上で動いている
iOSのアプリはプロセッサネイティブのコードで動きます。
なのでプロセッサの64bit化、iOSの64bit化はアプリの64bit化に直結します。
(intのサイズ等が変わってしまうのでアプリのコンパイルの際に64bitアプリにするか32bitアプリにするか指定する必要はあるけどね)
一方AndroidのアプリはDalvikと呼ばれるjava仮想マシンの上で動きます。
Dalvikはスマホの上でも軽快に動作するために32bitアーキテクチャに特化した設計となっています。
つまりAndroidを本気で64bit化しようとした場合Dalvikの設計思想にまで手を入れなければならないと言う事です。
これはAndroidの世代交代を意味する位大きな変更を意味します。
そもそもスマホの64bit化は必要なのか?
例えばパソコン
プロセッサがCoreiX時代になってWindowsもOS_Xも64bitOSになっています。
ですが、未だにGoogleChrome等は32bitアプリとしてビルドされて動いています。
Safariは64bit化されていますが正直以前と違いは感じません。
Safariはタブをスレッドで実現しているので64bit化によって開けるタブの数が増えた等のメリットがあるのでしょう。
一方、GoogleChromeはタブをプロセスで実現しているので64bit化する必要が無いのだと思います。
なので未だに32bitアプリなのでしょう。
例えばサーバ
企業のサーバ等はもっと保守的です。
「正常に動いている物に手を入れるな。」と言う格言は一つの真実だと思います。
大体の企業で使われている企業システムは企業のIT化が叫ばれた10〜15年前に構築されています。
セキュリティ対策やサポート期限対策の為にOSのバージョンアップを行ったり、負荷対策の為にハードウェアのリプレースは行なっていると思います。
しかし、企業システム自体はユーザの要望を取り入れて小規模な改良を行ったりする程度で10〜15年前に構築した物をそのまま使い続けている企業がほとんどだと思います。
企業システムのダウンは企業活動のダウンです。
会社の経営危機です。
特別な理由が無い限りあえてそのようなリスクを取る企業はありません。
(みずほ銀行のシステム統合に伴うトラブルを思い出してください。)
なので企業システムは32bitが未だに主流です。
話は戻ってスマホ
手のひらの上で小粋に動くガジェット。
それがスマホだと思っています。
以上で記述したようにパソコン、サーバ共に遅々として64bit化が進まない現状でスマホが64bit化を牽引して行く必要性があるのでしょうか?
正直言ってDalvikの基本コンセプトをねじ曲げてまでAndroidを64bit化する必要性は・・・私は感じません。
iOS7もiOS自体に64bit化の必要があって64bit化したとは思えません。
iOSとOS_XはDarwinと言う同じカーネルで動作しています。
OS_XのカーネルはSnowLeopardから64bit化されています。
思うにiOSの64bit化はソースコードのリファクタリングや管理のし易さ向上が目的なのではないでしょうか?
結論:マーケティング以外の目的でAndroidを64bit化する意味は無いと思う
iOSより劣っているイメージになると販売に影響するのでAndroidも64bit化するのでしょう。
しかし・・・「手のひらの上で小粋に動くガジェット」と言う意味ではAndroidの64bit化は改悪だと思います。
Appleにハメられた・・・そう思います。
「やられたらやり返す。倍返しだぁ!!」と行きますかねぇ・・・(・・?
○○は必要か?
コンピューター業界でも、(少なくとも私の知る範囲では)20年以上前から話題にはでていました。例えば、アーキテクチャが決まっているIBM/PCでWindowsは必要か?くらいの話からこの業界にいますが。私なりの結論は、技術的というよりは、商売としては、必要という、結論に達しました。
『この商品はこれ以上進化しません』となると、売れる数は自ずと決まります。(必要な所に販売したら、後は故障によるリプレイスのみ)。しかし、なにか機能がかわれば、必要でなくても買う人はいます。
ガラケーを毎年のように買い換えていた人周りにいませんでしたか?
記事でも「結論:マーケティング以外の目的でAndroidを64bit化する意味は無いと思う」と書いています。(=゚ω゚)ノ
コメント文章での「商売」は「マーケティング」と同じ意味で利用している単語と読めます。
いえいえ。64bit化は必須と考えてますよ。
2038年問題がありますので。
もちろん将来的にはその手の上限値問題はあります。
ですが現状のAndroidの場合、本文にも書いたようにJava仮想マシンが32bitのままです。
OSだけ64bit化しても将来的には動作できません。
現状は片手落ちの意味のないアップデートの入った形です。
Java仮想マシンを64bit化すれば良い話ですが、Javaの権利はOracleが持っていてGoogleは持っていないので簡単には行かないでしょう。
この記事を書いてから3年半が経っています。
Androidも世界に欠かせないくらい普及しました。
スマートフォンのハードウェアも64bitアーキテクチャが必要不可欠なほど進化しました。
そろそろ次の一手を見たいですね。(^_^)
iPhoneの開発言語がSwiftに変わったように、Androidの開発言語も次世代の言語に変更する手もありますし。