You can read this blog in any language using google translate as follows:

Goto http://translate.google.com/
Paste URL in the box and select "Japanese for From Language" and "To Language". Then click "Translate".

English translated pages are here:
http://bit.ly/xPuXoy

你可以閱讀這個博客,在任何使用“Google”的語言翻譯

本ブログのアクセス統計: 60万アクセスを達成しました。ご訪問ありがとうございました。

60万アクセスまでの経過

2009年12月に始めた本blog。2011年7月ごろに10万アクセスを達成し、2011年12月13日には15万アクセスを達成。
その後、私も更新しておらず、アクセスは少し減りましたが、3月1日には18万アクセス。2012/4/18に20万アクセス、2012/8/21に25万アクセス、2013/1/18に30万アクセス、2013/12/17に40万アクセスを達成しました。しばらく見ていなかったら、2015/5/1に50万2584アクセスになっていました。またまた、しばらく更新しないうちに、2017/6/11に60万7197アクセスになっていました。久しぶりに更新します。

2012年11月8日木曜日

iOSとAndroidの本質的な差

iOSに比べると、Android (グーグル携帯・tablet)はメモリ食いで、遅いと言われている。本質的な差であり、ちゃんとした原因があるので分析したい。

Androidは重い)
そもそもAndroidのアプリの記述は、GC (Garbage collection) がある、Javaである。実行時にコード変換する機能やNativeアプリを動かす機能はあるが、基本的には、ソフトウェアがコードを解釈しながら走るインタプリタである。セキュリティ対策の側面(http://bit.ly/Z2fOkc に紹介がある)、機種依存性をなくすこと、動的型継承などがあるので、CやC++のように、事前にコード変換してしまう高速でメモリを食わないコンパイラにはしにくいと思われる。

そして、GCは重い。

Androidは、アプリ審査(後述)がないので、ソフト的に悪意のソフト(マルウェア)から守らないとならない。ファイルアクセスができない、Javaを使い。DalvikというVirtual Machine (VM)を使って、Sandbox (そのアプリだけの砂場)を作って守っている。

また、iOSは基本的にはSingle taskだが、Androidはマルチタスクに対応して作られている。これが、メモリを大食いにする理由でもあろう。
最も最近のiOSも、画面上には出ていないが、Homeボタンを2度押すとリストが出てくるように、裏でアプリが動き続けている。

http://bit.ly/UwEzRj の図を引用する。汎用のDesktop/Server OSである、Linux (これ自体でかい)のうえに、DalvikというVM(黄色)をおいて、その上にライブラリ(これはiOSでも同じ)があり、JAVAで書かれたアプリが走る仕組みである。

たとえて言えば、Macのうえで、VMware(仮想マシン)を走らせて、その中でwindowsXP走らせて、その中のブラウザの上でJava scriptを走らせるようなものなのであろう。

Androidのソフトウェアスタック
とはいえ、Androidの守りは、JavaとDalvik VMがメインなので、マルウェアに弱いようである。

http://www.anlyznews.com/2010/12/androidiphone.html には、上記をサポートするような数値比較もでている。が、コメントには、それに対する反論もある。

iOSの場合)
iOSアプリの記述は、GCはプログラマが管理するObjective-C。最近GCは入ったが、多分ほとんどのアプリでは使っていない。Objective-Cは、コンパイラなので、Javaのようなインタプリタではなく、何でも出来る。これでは、マルウエアに弱いので、Appleによる審査が入る。おかげで、iOSの上でダイレクトにアプリが走る。上記の図でいえば、赤いOSが軽くて、黄色(つまりVMとインタプリタ)が存在しない。

Application Frameworkも、緑色のライブラリと上手に融合していると思う。

iOSでは、Next Step時代から継承している、BSD系のかなり簡略化されたUnix OSのうえで、Objective-CでコンパイルしたNativeコードが走る。

GUI設計環境X-codeや言語のGUIサポート(View-Controlモデル http://bit.ly/UwFFMW に紹介がある)も良く出来ている。これが、Application Frame Workとライブラリのうまい結合を達成していると思われる。

そういう意味で、Androidは、まだまだこれからともいえる。HardwareやAppleは言語やOS単体ではなく、プログラミングやアプリの作成を含めた生態系として設計しているのである。これが本当の垂直統合である。

そして、iOSは、スマホという環境を考えて徹底的に割り切って作られている。例えば、GCがないこと、グラフィカル表示がシングルタスクであること、OSの特定のAPIしか開放しておらずATOK等のIMEの入れ替えもできないこと、などである。

iOS系に関して、画面解像度への配慮は、以下に書いた。


2012年11月8日木曜日: ちょっと怪しい最近のApple



OSの更新)
従来、ファイルやアプリなどを全て残した状態でOSを更新できた。ところが、iOSは違う。iTunesに繋いでiOSを更新すると、マイナーアップデートであっても、ファイルは消え、一旦、まっさらの状況になる。そして、iTunesからファイルやアプリを転送し直す。

じつはこれが画期的である。iBookの導入時に分かる通り、iTunesはiOSに会わせて常に更新されていく。iTunesが更新されると、母艦となるPC側のデータ構造も変わって、PC側でデータ変換したりする。

PC側で準備しなおすので、iOS装置側では互換性の為の処理が減る。新たなiOSに会わせたデータ形式で転送されるし、iOS側のファイルシステムの構造もいつでも作り替えられる。

つまり、装置としての性能が貧弱なiOS側に従来互換性の制約が減る。ファイルシステムの構造を好きな時に作り替えることも出来る。
これはOS更新としてはかなり画期的な考え方だと思う。

したがって、iOSをMacに持って行くかどうか(そういう主張もたまに聞くが)は、そう単純ではないと思う。

ハードウェアの進化でバランスは変わる)
もちろん、どんなにハードに負荷が掛かろうが、ハードウェアが進歩しアクセラレータができたり、メモリが非常に安くなればバランス点は変わる。が、基本設計の違いは、最後まで性能や、進化のしやすさの差になってついて回る可能性もある。

一番心配なのは、Appleは、大きな利益を背景に、設計者が沢山いるが、Androidの開発リソースはあくまでGoogleが提供し、Androidの基盤としているLinuxはサーバやdesktop用のOSS(Open Source Software)である、Linuxであるところである。

つまり、以下の2つが肝心になるのではと思う。
  1. Samsungなど本当にお金を儲けているところが、十分な開発投資を投入する
  2. Desktop/ServerというLinuxという主流のなかで、端末向けLinuxを正常進化させる
Andoridには自由がある)
Androidには、windowsとMacの違い以上の違いもある。
  1. 多くの会社が作って切磋琢磨している
  2. Androidのソースは基本公開であり、LinuxのようなOpenな世界での進化が期待できる
  3. 規制で守るよりも、自由による様々な試行による進化が期待できる
と、iOSにない良さもあり、やはり競い合うことで、お互いに進化できるのだと思う。

2012年11月8日木曜日:ちょっと怪しい最近のApple


に書いたような、Appleの最近の動きがAndroidつぶしだとすると、ちょっとAppleのやっていることに疑問を感じる。独禁法の関連もあるが、IntelがAMDと競い合って進化したようなほうが望ましいのでは。。


Android端末の現状)
Androidの端末は、SamusungとGoogleが発売しているNexus7が良いらしい。Nexus7はアンドロイドの中でも出色の出来らしい。大画面でcortex A15 http://bit.ly/Uxz1px という最新のプロセッサを持ったNexus10も発表された。Nexusシリーズは、 https://play.google.com/store/devices で仕様が確認でき、購入が出来る。

従来のAndoridや安物機種は、すぐフリーズし、メモリもすぐに不足したとのことだが、AndroidもNexus7で改善したとのこと。ただし、有料アプリが壊れても自己責任。これが、iOSのような高額な有料アプリがでてこず、アプリ市場が充実しない理由かもしれない。

米Burns & Nobleが販売する、電子ブック端末Nook TouchもAndroid端末であり、これにアプリをインストールして試したことがある。iOSのように守っていないので、非常に簡単に特権ユーザになれる。以下に書いた。


2011年9月4日日曜日: Nook Touchの脱獄


アプリ審査の価値とAndroidとの違い)
iOSアプリのAppleの審査では厳しい審査をする。審査を経て、IDを与えられたアプリしか(脱獄しない限りは)、iOSに転送できない(SHA-1認証ではねられる)ため、違法流通もできない。

アプリ審査の価値をまとめると以下の通り。列挙してから解説する。
  1. マルウェア(悪意ソフト)、著作権違反ソフト、教育上悪いソフトを防ぐ
  2. 動作保証をする
  3. どのソフトも同じ操作基準に準拠していることを確認する
コストは掛かっていると思う)
Appleの思想統制と嫌われているが、素人でも安心して使えるアプリの整備には重要だと思う。以前、Appleが求人していましたが、審査のために、相当数の人を雇い金を投入していると思う。端末で大きな利益を上げているAppleだからできる手法だと思う。

動作保証による信頼感)以前、古いiOS3 でChrome syncというアプリが動かないことがあった。動くとあったのだが、iPhone3GSのApp StoreでのOSチェックをかいくぐり、インストールもできてしまったが、起動すると直ぐに落ちた。それをクレームしたらAppleは、当日中に全額返してくれた。この安心感が、情報統制の見返りである。

将来展望)
物量を投入すれば差は縮まる。コスト差も小さくなるであろうが、量が売れれば利益の差は大きく、また将来の発展性も変わってくる。

利益差で、Appleが進化を続けられることが、メーカ数で多対1の不利にあるAppleの進化のための道筋だと思う。長期的にはCPUの自製化もこれに貢献すると思う。

Appleの市場コントロール)
Appleはソフトを強く管理しており、それを嫌っている人もいる。自由がないからである。

具体的には、
  1. 画面デザイン、ユーザインターフェースの規約があり、従うことを要請している
  2. Apple StoreにおくiOSアプリは、Appleの審査を通らないとならない
  3. アプリの売り上げからAppleがもっていく、うわまえが多い
  4. 開発だけならツールが無料だが、iOSの実機で動かすには年間99ドルのライセンスを買わないとならない
  5. ATOKなどのIMEを取り付けるインターフェース(API)などが公開されていない
などである。が、これは、以下の意味を持っている。
  1. 規約により、どのアプリでも、マニュアルをみなくても使える、同じ使い勝手を保障する
  2. 審査により、Warmなどと呼ばれる悪事を働くアプリ、著作権的に問題のあるアプリ、子供達に使わせたくない性的、暴力的なアプリ を除外する。
  3. 審査により、事前に動作保証をする
  4. 上前)審査のために相当なエンジニアを雇っており、とても一つ100円程度では利益がでないが、一定量の回収はしたい
  5. ツールが有料)やる気のない開発者を排除したい。コストを多少なりとも回収する
そして、情報管制がどうしてもいやな人には、米国Millenium 著作権法で合法性が確認された、脱獄(Jail break)という方法も残っている。が、こちらは、逆に以下の問題がある。
  1. 作者が減ってきて、新作アプリが減っている。主な機能が標準のiOSに組み込まれてしまったこともある
  2. まともに動かないアプリもある
  3. 有料アプリも増え、高いものは1000円以上する
と、Appleの巨大なマーケットに載せられないがゆえの問題もはらんでいる。
blog comments powered by Disqus