けいまさんですけど

死ぬ気でやってりゃ、そりゃ死ぬわ

Which do you like?

はじめに

あなたがサイコーにクールな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が消滅していて動かなくなっていたのを直したりした。。。