Archives

June 2010 の記事

新しい VAIO シリーズには羨ましい機能があります。

リモートキーボード with PlayStationR3

古い type P でも使えるそうなので VAIO を Bluetooth Keyboard として
繋いでみました。
残念ながら Windows 上のキーカスタマイズは無効となるようです。

デバイスとして「 VAIO Bluetooth Driver over USB device 」が追加されており
ドライバレベルで入力をフックしているようです。
USB の HID をそのまま Bluetooth に変換しているだけかもしれません。


関連エントリ
PS3 ワイヤレスキーパッド を スマートフォン と PC で使う (5)


発売日に購入しておよそ 2ヶ月。
メインで使う端末として定着しました。

Android 2.1 / HTC Desire X06HT

iPhone と比べると気になるところがいろいろありますが、それらの動作や仕組みを
理解して克服していく感じは PC や昔の PDA を思い出します。
WindowsCE/WindowsMobile と比べると遥かに整理されていて素のままでも
使いやすく、それでいて iPhone の完成された統一感とは全く異なった世界です。

準備万端すぎる iPhone にはちょっとだけ物足りなく感じていて、
自力で使いこなす達成感をそこそこ感じつつ、実用性と流行りものの共存が可能で
最新のハードで存分に使い倒したい。
そんなわがままをバランスよくミックスしたのが今の Android だと感じました。


●ホーム画面のアイコンを消してもアプリは消えない

最初とまどうのがアプリの消し方。ホーム画面には全部のアプリが無く、長押しで
ゴミ箱にいれてもアイコンが消えるだけ。
「すべてのプログラム」の画面から消すこともできません。

設定画面から アプリケーション→アプリケーションの管理 を選んでやっと削除
することができます。

iPhone に慣れすぎていたことが原因で、思い出してみればもともと Windows も
WindowsMobile も専用のアプリケーション削除画面を持っていました。
Android もそのルールに則っています。

ホーム画面にあるアイコンはショートカットです。
WindowsMobile のスタートメニューにある プログラム と似ています。
複数の画面にアプリアイコンを置くこともできるし、あまり使わないアプリは
消しておけます。

アプリケーションの管理画面は表示が遅いので、ダウンロードしたアプリなら
マーケットから「ダウンロード履歴」を開いてアンインストールた方が楽です。


●タスクの終了機能は付いている

HOME ボタンは即座に HOME 画面を呼び出す機能です。
iPhone (iOS3以前) のようにアプリケーションを終了させる動作になりません。
アプリケーションは走ったまま一時的にバックグラウンドに切り替わります。

戻るボタン (←┐) は基本的に 1つ前の画面に戻る操作を意味していますが、
同一アプリケーション内で前の画面のスタックが存在しない場合は、プログラムの
終了を意味しています。
例えば起動直後のトップ画面で 戻る (←┐) を押すとほとんどのアプリは終了します。
ブラウザなど終了しない例外アプリも一部あるようです。

この動作に気がついてからは、アプリを戻るボタンで終了させることが多くなりました。
タスクマネージャーの類を使うこともほとんどなくなりました。

・画面下の戻る(←┐)ボタンはアプリのトップ画面(Activity)で使うとアプリ終了
・HOME はタスク切り替え。短く押して HOME 起動、長押しで履歴。


●タッチで反応する位置が若干下

ハードウエア依存かもしれませんが、タッチ時に反応する位置が iPhone 比で
感覚よりも若干下です。最初はかなり間違えました。

画面の上下は関係なく、指の先端部よりも指の腹の方が代表座標とみなされるようです。
たいていタッチしたい場所は画面に対して横長の形状なので、正面からまっすぐタッチ
するとぶれやすくなります。

画面に対して端末の横方向から指を伸ばしてタッチすると、画面を拡大しなくても
正確に押せます。


●長押しメニューがじゃまになる

解像度が高いのであまり拡大しなくても文字が読めます。
そのせいか、タッチ範囲が狭いまま操作しようとしてよく誤タッチします。

iPhone ではタッチ対象の場所の色がすぐ変わり、そのまま指をずらすなり確認しつつ
正しい場所に補正することができました。

Android は長押しにメニューや範囲選択が仕込まれていることがほとんどです。
微調整の為にタッチ場所の色や選択状態を確認しようと思ってる間に、ポップアップ
メニューが出てじゃまされることがよくあります。
長押し判定時間の調整が欲しいと思いました。


●容量にはかなり気を遣う

アプリケーションを入れられる容量制限がかなり厳しいです。
機種依存ですが X06HT の場合はおよそ 147MB。

音楽データや写真、ムービーなどのデータは SD カードに入るため特に困らないものの
アプリの容量ですぐに限界になります。

もともと音楽プレイヤーが発端で大容量が当たり前の iPhone とはアプリ事情がかなり
異なっています。WindowsMobile でも常駐するシステム系以外は SD カードに
インストールすることができました。

使ってみるまでわからない制限です。
容量の大きなアプリは導入の妨げになりますし、不要なものはすぐ消すようなります。
Android 2.2 froyo で大きく改善されるとのことなので将来に期待です。

それぞれの Mobile OS の制限

 ・Adnroid 2.1 : アプリをインストールできる容量の限界 (2.2 で解消予定)
 ・iPhone OS 3 (iOS3以前) : Home 画面のアイコン数の限界 (iOS4 で解消済み)
 ・WindowsMobile 6 : プロセス数とプロセスのメモリ空間の限界 (7 で解消?)


●Home 画面で直接アプリが動く

Home 画面のアイコンはアプリではなくショートカットです。
アプリの他にも自由にウィジェットを配置することが可能です。

時計、スケジューラや着信メールの表示、音楽プレイヤーや設定変更ボタンなど、
さまざまなウィジェットを配置できます。
直接アプリケーションの画面を貼り付けているような感覚です。
メリットはアプリを起動したり画面を切り替える必要が無いということ。

モバイル OS のアプリはどれも全画面動作で、複数の情報を同時に見ることが
できません。
この点 Android のウィジェットは、任意の情報を選んでタイル状に並べて見ることが
可能となります。
ウィジェットによる自由なカスタマイズは Android の大きな魅力の一つです。


●バッテリーが減りやすい

普段プレイヤーとして使っていますが、特に音楽再生時のバッテリー寿命に
大きな開きがあります。

                   音楽再生 映像再生
----------------------------------------------
HTC Desire X06HT :  15時間   6時間半
iPhone 3GS :        30時間   10時間
iPhone 4 :          40時間   10時間

  ・参考にしたページ: iPhone 4/3GS , HTC Desire

上の数値は再生条件が同一でないかもしれませんが、実際に使ってみた印象もほぼ同じです。
iPod phone である iPhone にとって、音楽再生は重要な要素。
バッテリー寿命をのばすため専用のハードウエアを搭載しているのかもしれません。

X06HT はバッテリーが劣化してもすぐ交換できるのがメリットなので、残容量を
気にせずに充電して使うことにしています。


●マナーモード

サイドのボタンは音量スイッチのみで、iPhone のようなマナーモード切り替え
スイッチはありません。
そのかわり通常状態で音量を一番下まで下げるとマナーモードになります。


●輝度の自動調整

センサーを使った明るさの自動調整を有効にするとバー消えて全くいじれなくなります。
iPhone では自動調整+手動で基準位置を変えられるため、環境光で明るさが変わりつつ
暗めの設定にすることもできました。

結局輝度の自動調整はあきらめて、Home 画面に明るさを変えられるウィジェットを
配置して手動で切り替えています。


●オプティカルジョイスティック

ハードキーの真ん中に配置されている光学センサーのカーソルキーです。
触れなくても動くので、誤動作が困る場合は小さいシールを穴をふさぐように貼れば
反応しなくなります。

慣れたら特に困る誤動作は無くなったし、たまにカーソルキーを活用するように
なりました。

主に使うところ

・検索ヒストリの選択と再編集時

 マーケット内でのアプリ検索など、一度検索したキーワードを編集して再検索する
 ことができます。タッチだと同じキーワードのまま即座に検索してしまいます。
 カーソルキーを使ってヒストリ選択すると再編集可能となります。

・文字変換時

 文節伸縮がカーソル左右に割り当てられています。

・メニュー選択

 細かいメニュー選択でタッチしづらい場合、オプティカルジョイスティックを使った
 方が確実に選べることがあります。


●まとめ (追記)

X06HT を使っていてわかった点がひとつ。
前回も書きましたが、反応が良くて動作が速ければ細かい点はどうでも
よくなるということ。
実際使ってかなり気に入っており、非常に使いがいのある端末だと感じました。


関連エントリ
X06HT HTC Desire


OpenGL ES 2.0 / Multitouch に続いて、立体視関連まとめ。

ステレオ 3D 開発関連 (立体視)

テストできる環境もだいぶ増えてきました。



iOS 4 へのアップグレードで外付けのキーボードが使えるようになりました。
手持ちの Bluetooth キーボードをいくつか繋いでみましたが、結局純正の
Apple Wireless Keyboard MC184J/A に落ち着きました。

・PS3 ワイヤレスキーパッド
  日本語・英語モードの切り替えができない。英語配列になる。

・RBK-2100BTJ
  使えるが古いタイプは再接続に問題があるらしい。
  (http://www.reudo.co.jp/rboardk/rbk2000bt2/ios.html)


以下気がついたことなど

 (1) Apple Wireless Keyboard の特殊キーがそのまま使える
 (2) Apple Wireless Keyboard で電源が入る (Sleep 解除できる)
 (3) 一部 Emacs 風の編集キー操作が使える
 (4) 変換性能が上がっている


(1) Apple Wireless Keyboard の特殊キーがそのまま使える

音量調節、iPod (メディアプレイヤー) による再生開始や曲送り、
画面の明るさ調整キーがそのまま使えるようです。
リモコンになります。


(2) Apple Wireless Keyboard で電源が入る (Sleep 解除できる)

Sleep 状態でも何らかのキーを押すだけで電源が入ります。ロックの解除も不要。
パスコードを設定しているときはキーボードからコード入力できます。


(3) 一部 Emacs 風の編集キー操作が使える

下記の Ctrl を使った編集操作ができるようです。

Ctrl-F/B   カーソル左右移動
Ctrl-A/E   行頭、行末
Ctrl-K     行末まで削除
Ctrl-H     BS
Ctrl-M/J   改行
Ctrl-I     TAB

SHIFT を押しながらカーソル移動操作で選択範囲指定。
(SHIFT + Ctrl-F/B/A/E も使える)

標準のメモでも Safari の URL 欄でも有効です。
コピー&ペーストなどは普通に Command キー。
Ctrl-P/N が無いのは残念。


(4) 変換性能が上がっている

iPad では外付けキーボードの常用諦めましたが、iOS4 + iPhone 3GS では
ある程度長い文を変換しても大丈夫でした。
インライン変換では無いものの文節伸縮もできるようになっており
十分使えそうです。


(4) の改善が一番大きいです。その他個人的に便利だと感じたのは (3)。
キーカスタマイズソフトを作れなくても何とかなりそう。
(2) は便利な半面問題もあります。カバンに入れて持ち歩こうと思っても
すぐに電源が入ってしまう可能性が高いので。


現在使えるマルチタッチ対応 PC や同時認識点の個数、
OS 毎の各種マルチタッチ API など、調べたことを下記のページにまとめました。

Multitouch 関連情報

前回の OpenGL ES 2.0 とともにまめに更新しています。

マルチタッチと言っても 2点のみ認識可能なものが多く、3点以上取れる機種は
限られているようです。
特に 20インチ以上のタッチ対応一体型 PC の場合は、どれも同じ NextWindow の
光学式で 2点までとなっています。

ノート PC の場合は昔からある抵抗膜式をマルチタッチにしたものから、
TabletPC をマルチタッチにした 電磁誘導+静電容量 などバリエーションが豊富です。

店頭でいろいろ触ってみたところ、抵抗膜式で 5点取れる LOOX U G90、
ノートだけどペンが使えない静電容量式のみの Lenovo IdeaPad S10-3t あたりが
比較的特徴的な PC でした。

Multi touch API としてはメジャーなところで Windows 7, Android, iOS (iPhoneOS)
の 3種類試しています。


Mobile GPU の標準 API となっている OpenGL ES 2.0 関連を集めてみました。
対応端末、GPU core その他。

OpenGL ES 2.0



HTC X06HT (Desire) が手に入ったので Qualcomm Snapdragon QSD8250
(CPU core は Scorpion) を試してみました。
この CPU core は Cortex-A8 と同じ ARMv7 ですが設計が異なります。


iPhone は 3G→3GS で CPU 速度が大幅に速くなりました。
CPU Core が ARM11 (ARMv6) から Cortex-A8 (ARMv7A) へと世代交代したため
たとえ同クロックでもパフォーマンスに差が出ます。
ただし浮動小数演算に限っては例外で、むしろ速度が遅くなるケースが出てきます。

ARM11+VFP から Cortex-A8 へ変わったことで浮動小数演算命令は
VFP, NEON 2つの選択肢ができます。x86 の FPU と SSE の関係によく似ています。
以前 NetWalker (Cortex-A8 800MHz) で試した通り、Cortex-A8 の VFP は
非常に低速です。
NEON を使えば期待した速度が得られますが、過去のアプリケーションはどれも
VFP を使っていること、gcc が基本的にスカラ演算は VFP 命令しか出力
しなかったことから本来の能力が発揮されませんでした。
(新しい gcc は未確認)


Android の場合この辺の事情はまた違ってきます。
Android は iPhone よりもサポートするハードウエアの種類が多いため、
NDK も FPU 無しの ARMv5TE を基準にしています。
例えば Qualcomm MSM7201A では iPhone 3G と同じ ARM11 でも VFP がありません。
仮に Cortex-A8 な CPU 上で NDK を使って C/C++ ネイティブなコードを走らせても、
浮動小数演算では NEON どころか VFP 自体活用されていなかったことになります。

先月 (2010年5月) にリリースされた新しい Android NDK r4 ではこの辺が大幅に
改善されました。
ARMv7-A 専用のコードを使用することができ、Thumb2 も VFP も NEON 命令も
活用できるようになっています。
Android OS 2.2 と同時リリースですが、NDK r4 自体は以前の OS にも対応しています。
これで実質的に最適化時の iPhone とのパフォーマンス差は無くなったと言えます。


X06HT (Android 2.1) で NDK r4 で VFP/NEON 命令を走らせることができました。
どうやら Scorpion は Cortex-A8 と違って VFP も NEON と同じくらい速いようです。
むしろ VFP の方が速度を引き出しやすいので、スカラ演算は積極的に VFP 命令を
使った方が良いかもしれません。
よって、単純な VFP を使ったコードなら Cortex-A8 より Snapdragon (Scorpion)
の方がかなり高速に動作する可能性があります。

当初 NEON を使ったコードの速度が VFP と比べて予想よりも遅い結果となりました。
調べたところデスティネーション側のインターリーブで解消したので、参照して
いないレジスタでも、書き込み時の競合でパイプラインストールが発生している
ようです。VFP 命令では問題なかったので、NEON 命令の場合だけリネーミング
されないのかもしれません。

Cortex-A8 は単純に NEON 命令への置換えで済みましたが、Scorpion まで考慮に
入れるとそう簡単ではなさそうです。


● まとめ

・iPhone は Cortex-A8 になって浮動小数演算の速度を引き出すために工夫が必要。
・Android は別の理由で浮動小数演算が遅かったが NDK r4 で同等になった。
・VFP が遅くないので単純な浮動小数演算では Snapdragon の方が速度を引き出しやすい。
・NEON 最適化は Scorpion の特性も考慮する必要あり。


関連エントリ
ARM Cortex-A8 の NEON と浮動小数演算最適化
NetWalker PC-Z1 Cortex-A8 の NEON 命令とメモリ速度
SSE の浮動小数演算速度
NetWalker PC-Z1 Cortex-A8 浮動小数演算の実行速度
NetWalker PC-Z1 Atom と速度比較
Direct3D Mobile と T-01A の Snapdragon