はじめに
あなたがサイコーにクールなAndroidWear用WatchFaceを作ったとしても、 ロケール設定で表示内容が変化するFormatを使っている場合、思わぬ表示上の問題を生み出すこととなる。 そう、↑の画像のように。
romannurik/FORMWatchFace
Google I/Oのサイトのような、モーフィングする数字をもったWatchFaceのソースコードが公開されている。
スクリーンショットを一目見て最高だと思った(自分が視認性を重視する性格のため、もう少しスリープ時の色にメリハリをつけて欲しかったかもしれない)が、実際に使ってみると致命的にダサい点が見つかった。
それが、↑のスクショの左側で示した点。
曜日が日本語で表示されている。また、よく見ると右横の日付とフォントが違う。 これは意図してそうなっているのか、気付かずそうなっているのか判断がつかなかったが、 とはいえ僕はこれをクールだと思わなかったので、ソースを修正した。
今は自分でビルドしたWatchFaceをインストールして使っている。とても良い。オープンソースばんざい。
「SimpleDateFormatは使うべきではない」という共通認識
アプリの多言語対応などを考えると、SimpleDateFormatを使うよりもDateFormatのほうがずっと楽に開発できるはずだ。 (とはいえ最近はJoda-Timeを使うことが多いけれど)
実際に僕も普通のアプリ開発をするときはDateFormatを使うようにしている。
ただ、WatchFaceのような、「世界中の全員に同じ体験を与える」という意図がある場合は、DateFormatよりもSimpleDateFormatを使うほうがベターだと思う。 (そのあたりは、上記のやんざむさんの記事でも触れられています)
というわけで無事に修正することが出来た。スクショの右側が修正後。クール。
おそらく「予期せぬ表記」だったのではないか?
ところで、FORMWatchFaceで日本語が出るのは意図したものだったのだろうか?
例えば、見た目よりもわかりやすさを重視する場合、ここで日本の曜日名が出るのは正しいと思う。 (AndroidWearの標準WatchFaceにある「Digital」はそういう意図が感じられる)
けれどこのWatchFaceで採用されているフォントは英語と数字のみ提供されている。 結果としてモトヤマルベリが表示されているので、おそらくは意図していないものだったのではないか?と僕は思っている。
まとめ
この記事を書くにあたり自家製アップローダーに画像をぶん投げようとしたら、APIが消滅していて動かなくなっていたのを直したりした。。。