2012年11月26日月曜日

ブラウザに見る、各モバイルOSのデザイン哲学

 iPad miniの発表の際に、Appleのフィル・シラー氏は「iPad miniの7.9インチディスプレイは、Nexus 7の7インチより35%広く、ウェブ表示面積では最大67%も広い」(若干の意訳を含む)と述べた。個人的には、iPad miniというハードウェアについての発表をしているのに、突然iOSのSafariとAndroidのChromeを比較し始めるのは不自然に感じる(勿論、iOSとiPad miniはセットで一つの製品なので、全くおかしいとは言わないが)。この発言について、ウェブ上では様々な議論が交わされたが、これは両社のデザイン哲学の違いを表しているように思う。
 一番最初にAppleについての話をしたにも関わらず、この記事の主役はWindows 8/RTとAndroidだ。申し訳ない。

 Windows 8/RT(ここではタブレット向けUIの話をする)では、「コンテンツこそが王様」というデザイン哲学が貫かれているように思う。各種メニューは画面外に追いやられ、アプリケーションをスナップしない限り、1つのアプリケーションが画面全体を占有する。ユーザーが画面全体に表示されるコンテンツに対し没入することができるようOSのUIがデザインされている。Internet Explorer 10では画面全体にウェブサイトが表示され、広々とした画面で気持よくブラウズできる。しかし、タブを移動したり、その他各種操作を行う方法に習熟するには、些かの時間を要求される。はっきり言って、直感的に操作できるか?と言われれば答えはNOだ。Windows 8/RTのUIは、分かりやすさという観点ではあまりにもお粗末な出来と言わざるを得ない。

 一方のAndroidはWindows 8/RTとは対照的だ。分かりやすさを優先するため、画面下部には常にソフトキーとしてナビゲーションバーが表示され、各種アプリケーションではユーザが各種メニューに気付くよう、全てのメニューを出来る限り画面内のアクションバーに表示している(勿論、特にコンテンツが重要なギャラリー等のアプリについてはこの限りではない)。
 この仕様に対する私の印象は以前ほどネガティブではなくなった(慣れてしまったとも言う。分かりやすさはアプリによる)が、やはりコンテンツを広く表示したいアプリケーションにおいてはアクションバーもナビゲーションバーもステータスバーも全てを非表示にして、フルスクリーンでコンテンツを楽しみたい。そう、Chrome君、君のことだよ。

 両者は、分かりやすさを優先するかコンテンツを優先するかで対照的なUIデザインとなっている。画面内にUIエレメントを設置すればコンテンツ領域が狭くなり、画面外に追いやれば操作性が下がる。両者は二律背反的だ。

 これに対し、iOSはうまく中間的なアプローチを取っている。iOSのSafariでは、基本的に常に基本的な操作が画面下部に表示されるが、画面内にフロート表示されているフルスクリーンボタンを押すことで、表示を切り替えることができる。この点ではiOSのSafariが頭ひとつ抜けている様に思う。

 コンテンツを広く表示できることは非常に重要だが、その為にUIが分かりにくくなってはいけない。バランスを意識しつつ、自然に操作できるUIを心がけて頂きたいものだ。というかChromeはフルスクリーン表示させてくれ。頼むから。マジで。

Android 4.2でのフォント変更・AA対応

 先日Android 4.2がリリースされた。いくつかのバグ抱えていたりディレクトリ構成の変更による混乱等が起きているが、基本的にはブラッシュアップされており好ましいアップデートであるように思う。
 Android 4.2では4.1で追加されたfallback_fonts-ja.xmlが無くなり、fallback_fonts.xmlに再統合されている。これは実際にfallback_fonts.xmlを見ての予想なのだが、4.1では使用している言語によって使用するfallback_fonts-xx.xmlを変更していたものを、4.2ではfallback_fonts.xml内で言語を指定してフォントを設定するように使用変更したのだろう。
 上記の様なフォントの指定方法の変更の他、4.2ではフォント自体の種類も増えている。4.1がリリースされた際に追加された"sans-serif-light"で指定されるフォントの他に、"sans-serif-thin"で指定されるフォントが追加された。
 AAに対応させるための方法は、前回と同じように、system_fonts.xmlの先頭でシステムフォントを指定し、その次にMS Pゴシックを指定するように変更すれば良い。
 私としては、折角RobotoフォントがAndroidのために開発されたのだから、アルファベットには優先的にRobotoフォントを使いつつ、日本語には任意のフォントを指定したいので、基本的な日本語フォントについてはfallback_fonts.xml内で指定し、system_fonts.xml内ではシステムフォントにRobotoを、MS Pゴシックにtextarを指定している。細字フォントについては、文字のバランスが崩れるのを防ぐために直接日本語フォントを指定している。/system/fonts/ディレクトリに追加しているフォントは以下の通り。

 私が使用している変更済みのxmlはこちら。Rootに対応したファイラを使用して上書きし、パーミッションを644に変更するか、adb pushコマンドを使用してファイルをプッシュし、chmodコマンドでパーミッションを変更すれば良い。ここに書いていない細かい手順は関連記事を読んだりGoogleで検索する等して調べて下さい。


関連記事