Nuco Advent Calendar 7日目の記事です。

Design | Android Developers
Human Interface Guidelines

ちなみに上記の両記事を既にお読みの方は本記事を読む必要はありません。
ブラウザの戻るボタンをクリックしてください。

スマホアプリのデザイン

恐らくほとんどの人はAndroid、iOSのどちらか一方しか所持していないですよね?
お近くに自分と異なるOSを使っている人がいたら、是非アプリのUIを見比べてみましょう。

思っていたより違うんじゃないでしょうか?
特に有名なアプリはほぼデザインが異なるはずです。

メニューバーはiOSは画面下部、Androidは画面上部にあるのではないでしょうか?
(もちろんそうでないアプリもあると思いますが。)

あるある話なのかはわかりませんが、スマホアプリの開発を行うときにデザインが一種類しかないことがあります。
その場合、たいていはiOS風のデザインになっているかと思われます。
(デザイナーの方がiOSユーザーが多いからなのかな?)

そこでAndroid開発者は思うわけです。
「またか…」

がっかりするAndroidアプリエンジニア

もちろんデザインにかける予算には限りもあるし、必ずしも両OS向けのデザインをそれぞれつくることができるわけでないのは理解できます。
プロジェクトマネージャーやプロダクトマネージャーの方がUI/UXへの意識が薄い人だとそうなってしまうのかもしれません。
しかし私は以下の理由からスマホアプリはきちんと両OSごとにデザインを変更することをおすすめします。

  • 実装しづらい
  • 使いづらい

私が以前担当した案件ではこんなことがありました。

PM「これがクライアントから渡されたデザインね」
ワイ(またか…)
PM「Androidのデザインや仕様はiOSに合わせてね」
ワイ「(一応言っておくか…)しかし、iOSにデザイン合わせるとAndroidユーザー的には使いづらいと思いますよ」
PM「そうかもしれないけど、iOSに合わせてってのはクライアントからの指定だから合わせてね」
ワイ(思考停止かよ…)
ワイ「はい」

渡された仕様書にはいくつか実装しづらい仕様がありました。(ほんの一部だよ!!)

  • ステータスバーをタップしたらリストの最上段までスクロールする
  • リストをスワイプすると削除ボタンが表示される

この仕様があると一体どうなるのでしょうか。

使いづらい

Androidはステータスバーをタッチすると通知パネルが降りてきます。
アプリ使用中にwifiにつなぎたくなるかもしれません、逆に回線が重いのでwifiを切りたくなるかもしれません。
Android端末のデフォルトの挙動を改変するとユーザーは混乱してしまうでしょう。
(そもそもAndroidはステータスバー操作時の挙動をアプリ側で奪うのは簡単にはできない。)

また、Androidユーザーの方々は基本的にリスト中のアイテムに対して何か操作をしたいときは、
経験的にアイテムを長押ししてコンテキストビューが表示されることを期待するはずです。
まさかリストのアイテムを削除するためにアイテムを横スワイプする必要があるとは思わないでしょう。

ユーザーは今までの経験によりスマホアプリの挙動に対する一般的な概念モデルを持っています。
それに反するような挙動はユーザーが混乱するだけです。

よいデザインとは単に見た目がおしゃれとか、奇抜なデザインという意味ではありません。
アプリではなくて、AndroidというOS・端末自体がユーザーにアフォードするものに沿っている必要があるのです。

実装しづらい

PMに伝えられたアイテム削除の仕様を実現するにあたり、Androidにはコンテキストメニューという便利なToolがあるにも関わらず、AndroidSDKが提供しないリスト横スワイプ時の動作をわざわざ自分で実装する必要があります。
しかし世の中は便利なもので、githubなどを調べるとけっこうiOS風にデザインされたViewクラスがそこそこ見つかります。

AndroidSwipeLayout
↑こういうのとか。他にも結構あります。

StackOverFlowにも「Android ○○ like iOS ××」みたいなタイトルの質問結構あります。
国が違ってもエンジニアの悩みはだいたい一緒

私も当時こちらのライブラリを使って実装を行おうと思ったのですが、
一度に複数のアイテムをスワイプできるという理由で却下されました(泣)
たしかにiOSは一つのアイテムをスワイプしてから、他の領域を操作すると自然と閉じてたような。。
私は普段からAndroidユーザーなのでうろ覚えですが。。

結局隣でiOSエンジニアがささっとリストアイテム削除ボタンを実装しているのを恨めしい顔で横目に見ながら、PagerAdapterとviewpagerを使って自分でその機能を実装したのですが、

PM「iOSに比べて操作性が悪い」
PM「スワイプに反応しないときがある、なんとかしろ」
PM「他の領域タップしたらスワイプを戻せ」
ワイ「はい…」

半泣き状態で色々と改善を重ねて何とかご満足頂きました。。

結論

スマホアプリ開発に関わるのであれば、開発者やデザイナーでなくとも、
各々のOSのデザインガイドラインには目を通しておきましょう。

普通におもしろいし、勉強になります。
やはりPMやエンジニアであってもある程度デザインに関する知識があったほうが、
プロジェクトが円滑に進むと思います。

iOS風にしてってAndroidアプリエンジニアに言うのやめてね!!!!