Just another blog for akaiho.com
akaiho St. » Archive of 'Jul, 2008'

Androidのレンダリング No comments yet

Android Developers (Google Groups)で、「スケーラブルな画像もサポートしてないのはなぜなんだ」という意見があり、議論が起こったのですが、
Googleで実際にAndroidの開発にあたっているDianne Hackborn(hackbod)氏による返答が非常に面白かったので、勝手に訳してみました。
(多少意訳です。あえて文体は柔らかめにしてあります。)

原文は以下よりどうぞ。
scalable vector graphics scalable vector graphics scalable vector graphics

6年前、以前勤めていた会社では、開発していた携帯のリファレンスモデルは200MHz ARMの32-64MB RAMでした。

現在、AndroidプラットフォームのリファレンスはARM 200-400MHz、64-128MB RAMです。そして、ターゲットは以前と同様、ハイエンドモデルです。

携帯電話のマーケットはPCのそれとは異なります。これは紛れもない事実です。価格やサイズ、バッテリーの持続時間等は、純粋なハードのパフォーマンスより重要になる事が多く、それらは(PCと比べ)ハードウェアのデザインに大きく関与します。

「640Kもあれば、誰でも十分だろう。」という文は誇大に使われています。(訳注:3D機能よりも、2Dを充実させて欲しい、ベクタを使わせて欲しいという事に関して引き合いに出されていた。かつてビルゲイツが言った言葉。)
スケーラブルなグラフィック機能を持たない事は、プラットフォームにとって致命的な事ではありません。実際、あなたの書いた原文は非常に大げさです。

AndroidとX-WindowのAthena toolkitとの比較はおかしなことです。Androidの合成エンジン(compositing engine)はX-WindowというよりもずっとMac OS Xに近いのです。

iPhone UIに関するコメントも疑わしいです。私はiPhoneのアーキテクチャに関して詳しくありませんが、あれは3Dハードウェアアクセラレーションを促進しています。(iPhoneで使われているビットマップテクスチャの合成や変形は、OS XでかっこいいアニメーションやUIのトリックに使われているものであるため。)
これは、今日広く使われているグラフィックスアクセラレーションハードは、ビットマップテクスチャの変形や合成が非常に得意であり、2Dのスケーラブル画像のレンダリングには特化されていないから、という理由があります。

iPhone UIとAndroidのクオリティの比較はスケーラブルグラフィックスとは何の関係もありません。 iPhoneのソフトは全て統一された画質の単一のデバイス(iPhone)で動作するので、スケーラブルなグラフィックスによる恩恵はほとんどないでしょう。ウェブブラウザでズームインやズームアウトをしたいときにはスケーリング機能は便利ですね。二つとも丁度WebKitですし。
でも、スケーリングや変形効果を使ったアニメーションに関しては、スムーズに見せる為のベストな方法はビットマップ(ベクタではなく)を使うことです。iPhoneが滑らかな動作を見せる原因の一つは、それらのアニメーションを60fpsで動かすために非常に時間を費やしているから、そしてそれらは全てを3Dハードウェアアクセラレーション上のテクスチャレンダリングで行っているのです。

Androidは、レイアウトレベルでの画質解像度情報が組み込まれているので、開発者が様々な単位(実際のピクセル数、実際のインチ、スケールされたピクセル数、フォントスケールの単位等)で指定できます。 そうすれば、レイアウトで1ピクセルの厚さのラインが欲しいすると、それは実際の画面に合わせたサイズに(1ピクセルや2ピクセル等)に自動的に変換されます。

Appleには、「多少ピクセルがぼける事を犠牲の上で、アンチエイリアスを大量に使うことで線のポジションをよりきれいに表示する」という美学があり、UIはそうデザインされています。
しかし、非常に多くの人々がこれを好む一方で、また多くの人々が、ヒンティングとアライニングを用いた事でアンチエイリアスのインパクトを減衰させたレンダリングを好んでいます。ここで「どちらが正しい方法か」を提案するのは非常に難しいです。ともかくAndroidに関しては、いくらかのヒンティングをフォントレンダリングに用いたことでクッキリしたテキストを表示する事にしています。そして同様に、解像度調整がビューレイアウト、実2Dレンダの順に行われるので、ピクセル境界が調整できます。

実際のところ、私の知る限りでは、モバイル開発者の欲求は以下の三つです。
1. 可能な限り高解像度。
2. 必要最低限のCPU。(価格やバッテリーの為)
3. 3D ハードウェアアクセラレータ

このような環境においては、スケーラブル(ベクタ)グラフィックスのものよりラスタ(ビットマップ)ベースのUIの方がはるかに優先されます。それはあらゆる滑らかなレンダリングにおいて3Dアクセラレータを使用することになるからです。CPUは非力なので十分ではないのです。この構成は効率的にベクタ画像を描画できないのです。

Google Buzz

Symbian Foundation(Nokia)の設立に対する反応の違いが面白い No comments yet

もうモバイル関連の仕事に携わっている方々ならご存知の事だとは思いますが、世界で広く携帯用のOSとして用いられているSymbian OSの開発提供元であるSymbianが、OHAのようにいくらかの携帯関連企業とアライアンスを組織し、かつOSをオープンにするという予定を発表しました。
そしてその直後に、Nokiaが買収。

Symbianは世界的にシェアはかなりもので、今ケータイ用のアプリ等作ってる開発者でも馴染みになっている方が多いと思います。それがオープンになる、ということで、当然の様にビッグニュースとなったわけですが、行動そのものは確かにGoogleによるAndroidと似ています。

しかし意味合いが違うのは、Symbianは既にシェアを確立しているという点。つまり既存の開発者には既にノウハウが貯まっています。

こういった様相から、私がこれまでオンオフ共にお会いしてお聞きしたり、あるいはただ目にしただけの意見等を見ていると、日本では概ね「Androidだいじょうぶ?」とか「OHA終了」とか、Android劣勢的な意味合いの意見が多かったです。

一方で、アメリカのAndroidコミュニティを見ていると、悲観的な意見はあまりないのです。むしろ「GoogleによるAndroidの効果が早速出たね。」「統一されてくるのはありがたい」等、より良くなるねという楽天的な意見をよく見かけました。

Googleのミッションが世界をより良くするという事であるならば、既に大きな効果が現れたと言えます。それでもなお、UIや実効速度等において、競争相手がいることで開発ペースに向上が見られるなら面白い事になりますね。今後に期待せざるを得ないし、ボク自身も貢献していきたいです。

Google Buzz
Top of page / Subscribe to new Entries (RSS)