Android端末の種類でGoogleカレンダの背景色が微妙に違う!?

iOS系端末とAndroidOS系端末には色々な違いがありますが、アプリ開発者にとって恐らく一番と誰もが認める違いは「端末の種類」でしょう。AndroidOS系端末は現在3000種類以上(ハードの数とOSの版数の掛け算?)あるようです。

こうした膨大な種類があるAndroidOS系で、解像度やボタン配置などのハードの仕様が違うのは当然として、ソフト面でも違うことがあり、Androidアプリを作っていると結構戸惑うことがあります。

今回は、殆どのAndroid系端末にプリインストールされているであろうGoogleカレンダについて、アプリ開発者としての体験談です。

ご存知の方は多いと思いますが、Googleカレンダは複数のカレンダを同時に表示したり検索したりして管理できるのですが、属性のひとつとして「カレンダ背景色」があります

原則的には自動割り当てされますが、仕事や家族や恋愛や信仰などでそれぞれご自分のイメージにあわせた色分けをされている場合も多いと思います。

ちなみに私の場合は、「仕事」は青、「家族」は薄青、「恋愛」関係?はオレンジ、「創造」はピンク、などにしています。今週はどういった時間を使ったかがひと目でわかるため大変重宝しています。

こうした「カレンダ背景色」について、Androidアプリを作成する際にもAPIを通して取得することができますが、私が所持するAndroidOS系端末の種類によって仕様が微妙に異なりました。

挙動に違いについて、最初は単なるバグ(Codingミス)だと思っていましたが、そうではなく「仕様」(または「仕様の周り」)が違うのだということが追々分かってきました。

ソフトウエア技術者は必要最低限の仕様については必ず守ります

仕様が違うといっても、さすがに基本的な「背景色」そのものが違っているわけではありません。ソフトウエア技術者は必要最低限の仕様については必ず守ります。違っていたらそれはバグと認識されて適切に処理されます。

問題は仕様には「陽に」表れなかったであろう「ふるまい」に関するものです。

今回でいえばα(アルファ)要素です。「透明度」と言い換えてもいいと思いますが、これがAndroidOS系端末の種類によって微妙に違っていたのです。

Codeは総取替えになりますが、これが元でテストの完了した端末にも影響がでることになりました。

こうした違いはCodeのいたるところに存在するでしょうね

これを完全に定義するには標準的なCode例を公開したり、上記のような仕様定義の漏れを駆逐していくしかありません。iOS系であまりそうした瑕疵が見られないのは、種類が圧倒的に少ないからです。技術的な戦略が上手だからでソフトウエア開発技術が優秀だからというわけではないでしょう。

以上です。