2012年2月8日水曜日

Ice Cream SandwichのGUIが好きになれない理由

Ice Cream Sandwich(以下ICS)ではUIが大きく刷新され、見た目は随分美しくなり、使い勝手も大きく変更された。しかし、私的には変更されたUIのダメな所が目立って見えてしまう。確かにアニメーション等の細部を見ればエレガントなのかもしれないが、根本的なGUIの設計がスマートフォンの利用形態に適していないように思う。その理由を2つ、以下に挙げる。

1. 再編成された下部のボタン

ICSでは、画面下部のボタンが4ボタンから3ボタンに再編成され、そのボタン構成は大きく変動した。今まで、画面下部には「戻る」、「メニュー」、「検索」、「ホーム」の4つのボタン(端末によっては検索ボタンが省略されていることもある)が配置されていたが、ICSからはこれが「戻る」、「ホーム」、[最近使ったアプリ]の3つになった。
この再編成ははっきり言って私はよくないと思う。2.3以前ではホームのロングタップによって最近使ったアプリの機能を呼び出していたので、それを鑑みれば完全に機能の削減しか行われていないと言える。Googleは、この機能の削減について、「使用可能な機能を常に画面上に表示しておきたい(参照)」ということを理由としているが、この主張にはどうも納得がいかない。
ICSのホームアプリは、初回起動時に、画面中央下のボタンを押すとアプリケーションの一覧が表示されること、アプリの起動方法等をチュートリアルとして表示してくれる。ICSでは、本体下部のボタンも画面内に表示されるのだから、ホームをロングタップすることで最近使ったアプリの機能を呼び出せることを明示すればよいだけの話である。
メニューを非表示にした理由は、これらの機能がアクションバー内部に組み込まれたからであるが、アクションバー自体がそもそもスマートフォンにおける小さな画面内に常に表示されるというナンセンスさを孕んでいる。これについては第2項で後述する。
端末の横幅を考えれば、4つのボタンを配置するのはベストのバランスであるように思う。押し間違いが生じたり、押しにくくなったり、あるいは機能について混乱が生じない限り、ボタンの数は多ければ多い程良いと私は考える。

2. アクションバーのナンセンスさ

メニューボタンはアプリにより表示位置が異なり、右上や右下に表示される。
Honeycomb以降、Googleはユーザに分かりやすいように、使用できる機能を常に画面内に表示する、というスタンスを示した。ユーザに分かりやすいインタフェースを作ろう、というGoogleの姿勢はおおいに評価できるものであるが、アクションバーの実装ははっきり言って気に入らない。
まず、アクションバーは画面の表示領域を狭める。これは、画面の広いタブレットならまだしも、画面の狭い(あるいは、できるだけ表示領域を広くしたい)スマートフォンにおいては致命的と言える。使用できる機能を常に画面内に表示したいならば、メニューボタンに対する動作が設定されたアプリケーションではメニューボタンを表示し、メニューボタンに対する動作が設定されていないアプリケーションではこれを非表示にすればよいだけの話である。
次に、アクションバーはメニューにより呼び出されるボタン類と異なり、基本的にアイコンのみの表示であり、テキストが表示されない。このため、アプリケーションによってはそのアイコンが何を意味するのか全く分からない。Gmailのアクションバーにある既読にする、はまだしも、アーカイブ等、誰が最初に見てすぐに分かるだろうか?(そしてアーカイブを押すと警告なしにアーカイブされてしまい、元に戻すのが面倒である)。更に言えば、アクションバーのボタンは既存のメニューで表示されるボタンよりも小さく押しづらい。
最後に、アクションバーの分断問題が挙げられる。これは、HoneycombとGingerbreadを統合する上で、画面の狭さをカバーするために採られたAndroidのAPIの実装上の問題であるが、これにより、アプリケーションによって、アクションバーが分断されていたりここにさらに補足、メニューボタンが画面右上にあるために非常に押しづらい、などの問題が生じる。画面が大型化する傾向にあるスマートフォンにおいて、片手で操作する上で画面上部にあるボタン、というのは非常に押しづらい。タスクバーの引き下げ等、大雑把な操作で良いものは問題ないが、小さなボタンのタップは困難を極める。

Android版Google Chrome「Chrome Beta」レビュー

殆どTwitterのまとめですが、一応記事をば。

Chrome Betaではブックマークを同期するとパソコンのブックマーク、その他のブックマーク、モバイルのブックマークの3つのブックマークに分けて表示されます。非常によく考えられた実装ですね。

パソコンで開いていたタブも同期できます。こちらは新新規タブの右下からアクセス出来、直接タブが同期される訳ではありません。先ほどのブックマークとよく開くページも併せて複数の機能が新規タブに統合されています。
どうやらChromeがコンピュータごとに同期しているようで、各々のChromeで現在開いているタブにアクセスできる機能のようです。PC側でスリープした場合は維持されますが終了した場合はここに表示はされません。

タブはカードのスタックというメタファで表現され、一番上や下でさらにフリックするとカードが上下に傾き、横にフリックするとタブを閉じます。そこ、webOSとか言わない!全体がICSのGUIと統一されていますね。

メニューには一通りの機能が集約されています。ヘルプは背景のページに、その他の端末はタブの同期機能にアクセスします。でも戻る・進む・ブックマークは再下段に実装すべきだったのではないかなぁ…

検索エンジンはGoogle、Yahoo!、Bingから。残念ながらフルスクリーンの機能はありません。非常に優れたGUIのページ内検索機能を内蔵しています。

Chrome Betaにおいて、AAはずれこそ殆どしませんが、ページ幅の扱いの関係からしばしば激しく改行が入ってしまう上、フルスクリーン機能も無いので、AA表示には向かないと言えるでしょう。AndroidでのAA表示にはFirefoxが向いています。
フォントサイズは極小でもあまり小さくならないので結局AA表示は困難です。

又、ICS以降の各種ブラウザの挙動同様 file://.* で端末内のファイルにアクセスできますが、ディレクトリを表示できない点も同様です。PC版のChromeではディレクトリにアクセスできるのでここは何とかしてほしいところです。

ページの保存機能は(たぶん)ありませんが、PC側でDev チャンネル版ChromeとChrome to Mobileを組み合わせることでウェブページのスナップショットを送信し、オフラインでも見ることができます。私はChrome to Phoneをアンインストールして乗り換えました。

2012年1月4日水曜日

Ice Cream Sandwichのフォント指定とAA対応

ICSからはxmlによるフォントの設定が可能になったので、今回はNexus Sを例にICSにおけるフォントの導入についてまとめる。今回は、MS Pゴシックをmonaya.ttfに置換し、通常の日本語文字にはモトヤフォントを用いることにする。
まずはSDKを導入する。Android SDK revision 16ではいつのまにかfastbootが復活していたので、必要なコンポーネントは最新のAPIのSDK Platform(これにモトヤフォントが含まれる。持っている場合は不要)、Tools->Android SDK Platform-tools(adbやfastboot)、Google USB Driver package(ドライバ)の3つを揃えれば良い。SDKの他に必要な物はClockworkMod Recooveryとmonaya.ttfの2つ(ぐぐって手に入れてください)。
ここから先はドライバの導入とパスの通しが終了していることを前提に記事を書くので、それが済んでいない人は過去記事を参照して頂きたい。
まず、フォントを指定するxmlファイルを取得する。管理者権限不要の任意のディレクトリをカレントディレクトリにし、ClockworkMod Recovery側でsystemをmountしたら、
  • adb pull /system/etc/system_fonts.xml system_fonts.xml
  • adb pull /system/etc/fallback_fonts.xml fallback_fonts.xml
と入力し、フォントを指定するxmlを取得する。
取得したxmlをUTF-8とUNIXフォーマットの改行コードを出力できるテキストエディタ(notepad++等)を用いて編集する。fallback_fonts.xmlでは先に書いたフォントが優先的に使用されるので、MTLc3m.ttfをxmlの文法にそって指定すればよい。system_fonts.xmlでは、MS Pゴシックの置換を行うように指定するので、以下のような記述をxmlの文法に沿って記述してやればよい。


    <family>
        <nameset>
            <name>MS Pゴシック</name>
            <name>MS PGothic</name>
        </nameset>
        <fileset>
            <file>monaya.ttf</file>
        </fileset>
    </family>
こうすることでMS Pゴシックをmonaya.ttfで置き換えて表示することができる。今のところ、Android上ではAA対応フォントも微妙にずれてしまうので、monaya.ttfが最もずれないで表示することができるフォントのようだ。
xmlの編集ができたら、フォントは/system/fonts/に、xmlは/system/etc/に送ってやる。

  • adb shell
  • cd system/etc
  • mv fallback_fonts.xml fallback_fonts.xml.old
  • mv system_fonts.xml system_fonts.xml.old
  • exit
  • adb push fallback_fonts.xml /system/etc
  • adb push system_fonts.xml /system/etc
  • adb push monaya.ttf /system/fonts
  • adb push MTLc3m.ttf /system/fonts
  • adb shell
  • cd system/etc
  • chmod 644 fallback_fonts.xml
  • chmod 644 system_fonts.xml
  • cd ../fonts
  • chmod 644 monaya.ttf
  • chmod 644 MTLc3m.ttf
  • exit
これでMS Pゴシックはmonaya.ttfに、その他の日本語+αはモトヤフォントに変更される。あやまって文鎮化させたり不具合が起きても自己責任で。最後になるが、AA対応フォントがその文字に対応していても、うまく表示できない文字が存在するようだ(※)。謎である。

2011/01/04追記
※FirefoxやOperaでは正常に表示されるため、Android内蔵ブラウザのレンダラーが抱える問題のようです。Operaでは文字幅こそ正常なものの、一部のフォントが別のフォントで置き換わっている(ように見える。少なくともFirefoxとは異なるレンダリング結果)症状や、勝手にメールアドレスとして解釈してしまうようです。一方Firefoxはそのようなことはないものの現行版では全画面表示が行えません(ステータスバーを非表示にできません)。一長一短ですね。
デフォルトブラウザ
Firefox
Opera
正しい表示(Google Chrome 16 Windows版)
デフォルトブラウザ
Firefox
Opera
正しい表示(Google Chrome 16 Windows版)
上記画像は誠に勝手ながら◆20L.ujnjAg氏の作品「【fallout】 人工物は善なる存在になりたいようです」を使わせていただいています。多謝。

2011年12月31日土曜日

Nexus SがUSB接続を認識しなくなってから復旧までの作業

Androidマーケット100億DL記念10円セールもあり、なんとなくアンインストールしていなかったアプリケーションのリストラも含めて完全に初期化しました。
今回生じた不具合(Nexus S側の不具合か私側が起こした問題かは不明)は、Android側、PC側共にUSB接続を認識しなくなるというもの。通常起動中は充電こそするものの、PC側もAndroid側も正常接続はおろか接続していることすら認識しなくなってしまいました。ちなみに起動中は認識しませんが、bootloaderでのfastbootコマンドやClockworkmod Recoveryでのadbコマンドは通るので、ハードウェアの故障ではなくソフトエラーであることはほぼ確定できました。
ここからDLしてきたClockworkMod Recovery 5.0.2.0をflashして
  • wipe data/factory reset
  • wipe cache partition
  • wipe dalvik-cache
  • wipe battery stats
を全て行いましたが、それでも治りませんでした。何度か色々な方法を試してみた所、一度だけ復活しましたが、いつの間にかまた認識しなくなってしまいました。
実は(分かっている人は分かっていると思いますが)これだけでは完全な初期化はできていません。完全な消去を行うには以下の手順を実行する必要があります(参考URL)。
  • wipe data/facvoery reset
  • format /system
  • format /boot
完全消去を行ったら、ここからDLしてきたzipをinstallしましょう。zipはClockwork Mod Recoveryを起動した状態でadbコマンドから送信することができます(adbコマンドの使い方はオプションコマンド無しでadbコマンドを実行することで確認可能)。/sdcardをmountした状態で行うのがベターでしょう。それなりに時間がかかる(数分程度)ので、慌てず騒がずゆっくり待ちましょう。
以上の手順で/sdcard下のディレクトリ以外のデータは失われたものの、復旧することができました。初期化されたクリーンな状態のガジェットに触ると何とも言えずニタニタしてしまいますね。

それではみなさん、良いお年を。

2011年10月26日水曜日

Nexus S 3G Ice Cream Sandwich Beta 2入れてみた。

Googleアカウントのログイン画面。
ウェブログインもできるので、2段階認証も利用できます。
でもGoogleアカウントにログインしないと認証システムアプリをDLできないので、
2つ以上Android端末を持ってるGEEKな方しか利用できません。
このROMの仕様なのか、Nexus Sでの仕様なのか、
ステータスバーは透過しないようです。
プリインストールアプリケーションの一覧。
今回のAndroidではシステムアプリケーションの無効化できますけどね。
ギャラリー、タイル状に敷き詰められるのかと思いましたが、
そんなことはなかったです。このROMの仕様かも。
ブラウザのメニューとオプションの深い層。
待望の全画面表示がデフォルトブラウザにも追加されました。
超快適ブラウジング画面(左)。タブの表示はアプリ切り替えと同様の操作感。
フリックでタブを閉じるところも同じ感覚です。
変わらない電卓。
ホーム画面にアプリとウィジェットを敷き詰めるとこんな感じ。
上部のGoogle検索バーはデフォルトで全ての画面に表示されます。
フォルダごっつええ感じです。
横画面はこんな感じ。ちょっと縦が詰め過ぎな感じです。
このROMの仕様かもしれませんが。
ロック画面と時計。時刻のフォントはHoneycombの物に統一されたようです。
時計は未調整のためか、はみ出てますね。たぶんこのROMの仕様。
壁紙選択画面とトリミング画面。ロムの仕様か選択画面が変な感じです。
トリミング画面は横表示に対応したためにややこしくなりました。
横表示での壁紙の表示はこんな感じ。
左端の画面と右端の画面。
縦画面ではこんな感じ。
音楽アプリは画面いっぱいにアルバムアートが表示されるようになりました。
ROMの仕様か見きれてしまってますが。
新しいGmailではアドレスをタップすると連絡さきが表示されます。
登録しておけば「お前誰?」ってなりません。便利。
ATOK。入力方法の切り替えは入力ボックスのロングタップではなく、
ステータスバーから行う仕様になりました。正直結構探した。
Googleマップがフリーズしなくなった!これはでかい!
(フリーズしにくくなっただけかも)
顔認証はオミットされてました。
beta2だから仕方ないね。

2011年10月1日土曜日

Nexus S ルート化手順と各種ノウハウ

々なサイトにルート化手順が載っているが、複数のページに様々なノウハウが散らばっているのでここに整理する。

大雑把な手順は以下のとおりだ

  1. Nexus Sをデバッグ接続する
  2. bootloaderを起動
  3. recoveryにclockworkmodをフラッシュする
  4. recoveryを起動
  5. systemをマウント
  6. suとsuperuser.apkをNexus Sにコピー
  7. suのアクセス権限を変更

 フォントを変更する場合、recovery状態でPCからCUIを用いて変更する方法と、Android上でシステム領域を書き換え可能なファイラを用いて書き換える方法がある。

以下に箇条書きでノウハウを書き連ねる。

  • SDK Managerは起動時に一斉に各種パッケージをインストールしようとするが、ドライバとプラットフォームツールズだけで良い※。
  • 横着せずにtoolsplatform-toolsパスを通さないと途中で止まったりする。
  • アップデート時は再びclockworkmodからsuのアクセス権限を再設定するだけで良い。
  • アップデート時、フォントを置き換えている場合は元に戻す必要がある。戻さないとアップデートに失敗する。
  • ファイラを用いてフォントを置き換える場合、アクセス権限に注意。間違えると永久再起動ループに陥ったりする。他のフォントと同様のパーミッションにしてやれば良い。
0. 必要なファイルの用意、セットアップ
 ドライバをAndroid SDK | Android Developersから、clockworkmodのリカバリイメージをRom Managerから、Superuserを[APP] Superuser 2.3.6.1 - Now on the Market [2010-09-05] - xda-developersからダウンロード。SDK Managerを起動し、以下の画面が表示されたらキャンセル。
 Available packagesからAndroid Repository->Android SDK Platform-tools, revision 7とThird party Add-ons->Google Inc. (dl-ssl.google.com)->Google USB Driver package, revision 4にチェックを入れ、Install Selectedをクリック、手順に従ってインストールしてください。
その後、スタートメニューからシステム環境変数の編集を検索し、PATHの末尾に"android-sdk-windows\platform-toolsのフルパス;android-sdk-windows\toolsのフルパス;"を追記して下さい。C直下にandroid-sdk-windowsフォルダをおいた場合は以下のような感じになります。

1. Nexus Sをデバッグ接続する
 Nexus Sをデバッグ接続するにあたって、設定->アプリケーション->開発->USBデバッグをONにする必要がある。また、ドライバは先ほどSDKからダウンロードしたものを用いる。デバイスマネージャを開き、Android 1.0またはNexus Sと表示されているデバイスを右クリック、ドライバソフトウェアの更新を選択する。以下のスクリーンショットではウィンドウのタイトルがAndroid Composite ADB Interfaceになっているが、ここは違っていても構わない。
 コンピュータを参照してドライバーソフトウェアを検索します(R)をクリック。
 コンピューター上のデバイスドライバーの一覧から選択します(L)をクリック。
 ディスクを仕様(H)...をクリック。
 参照(B)...をクリックし、SDKからドライバを読み込み。
 互換性のあるハードウェアを表示(C)のチェックボックスをオフにし、Android Composite ADB Interfaceを選択し、次へ(N)をクリックし、手順に従ってドライバをインストール。

2. bootloaderを起動
 0. 必要なファイルの用意、セットアップ でSDK内のplatform-toolsフォルダとtoolsフォルダにパスを通してあると思うので、コマンドプロンプトを起動し、"adb reboot bootloader"と入力。

3. recoveryにclockworkmodをフラッシュする
 先ほどのドライバのインストールと同様の手順で、今度はAndroid Bootloader Interfaceをインストール。
 インストールできたら、コマンドプロンプトを起動しなおし、"fastboot oem unlock"と入力。アンロック画面が出るので、音量ボタンでYesを選択し、電源ボタンで決定。
最初にダウンロードしたclockworkmodのリカバリイメージのあるディレクトリに移動(cdコマンド等)し、"fastboot flash recovery ファイル名"と入力。拡張子まで忘れずに入力すること。

4. recoveryを起動
 音量キーでrecoveryを選択し、電源ボタンで決定。

5. systemをマウント
 同様に音量ボタンで移動、電源ボタンで決定。mounts and storage->mount /systemでsystemフォルダをマウント。

6. suとsuperuser.apkをNexus Sにコピー
 コマンドプロンプト側で最初にダウンロードしたsuperuserを解凍したディレクトリに移動、suとSuperuser.apkを同フォルダに置き、"adb push su /system/bin/"、"adb push SuperUser.apk /system/app/"と入力。

7. suのアクセス権限を変更
 "adb shell"、"cd /system/bin"、"chmod 6775 su"、"exit"と入力。

 以上でルート化は終了。フォントを変更する場合、このままの画面で変更する場合は、同じフォルダにフォントファイルも置き、"adb push DroidSans.ttf /system/fonts/"と入力してやれば良い。

2011/10/26追記
※Android SDK revision 14からfastbootが付属しなかったので古いSDKが必要。

2012/01/04追記
※Android SDK revision 16でfastboot復活してました。

2011年8月26日金曜日

Windows Phone 7は他のOSと何が違うのか

 世界初のWindows Phone 7.5端末であるIS12Tが発売された。Windows Phoneの特徴はかねがね聞いていたが、実際に触ってみることでその全貌が見えてきた(本質とまでは言わないが)ので、ここで解説を行いたい。
 Windows Phone 7はiPhoneとAndroidの良いところを兼ね備えている。Microsoftによる(Appleほどではないが)厳格な統制によって、ハードはしっかりと管理されている。また、ソフト面ではMetroUIによって、全体に統一感をもたせている。ただし、このMetroUIそのものは特別に重要な点ではない。重要な点はその開発環境にある。
 Windows Phone 7は開発環境が非常に充実している。SDKの導入は少々大変だが、IDEの完成度が非常に高く、MetroUIの特徴でもあるパノラマインタフェースと併せて他のOSに対する大きなアドバンテージと言えるだろう。
 そして、Androidから取り入れられている良いところは、ずばりAndroidの大きな特徴であるインテントだ。Windows Phone 7ではこのインテントをより一歩推し進めた物を採用している。それがPeopleハブの本質だ。Androidでは、アプリケーションがインテントを通じてデータを渡すのに対し、Windows Phone 7ではOSがインテントを通じてアプリケーションにデータを渡すイメージだ。OSが主導してデータを統合的に管理する点で、Androidとは異なるOS全体のコンセプトを形作っていると言えるだろう。
 そして、Windows Phone 7では、スマートフォンにおいて何よりも重要な部品であるブラウザが非常によくできている。体感では、Androidよりも確実に高速で、iPhoneに勝るとも劣らない高速な応答性を実現している。また、レンダリングの速度においては他のOSの追随を許さない出来だ。HTML5の機能を利用したサイトにおいて、それは特に顕著だろう。あのIEをベースにしたブラウザとは思えない、素晴らしい性能だ。IEも最近になって大規模な改善が行われたが、数値上の性能はともかくとして、体感的な速度ではまだまだ他のブラウザに劣る点が多々ある。その点、Windows Phone 7に搭載されているブラウザは、非常によくチューニングされている。Windows Phone 7に対するMicrosoftの意気込みが伝わってくるというものだ。
 Windows Phone 7はAndroidやiOSと比肩するポテンシャルを秘めている。webOSの開発者の引き込みに成功したことで、ソフトウェアの数も改善されていくことだろう。今後のWindows Phone 7にも期待したい。