実装のバリエーションを増やすために

最近仕事をしながらこういうことを思っていて。

その難しさの要因の1つに、自分の中に実装のバリエーションが少ないことがあるんじゃないか、と思っていろいろ考えてみたのでまとめてみる。 筆者が Android アプリメインであるため、Android を例にご紹介。題材は最近はまっている Dropbox Paper。

play.google.com

実装のバリエーションとは

ここではエディタなどのコンポーネント、そのコンポーネント内の細かい挙動やアニメーションなどを指す。

実装のバリエーションを増やすと何が嬉しいの?

今いるチームでは、デザイナーがプロダクトとしての世界観を維持しつつ a11y などを意識してデザイン。エンジニア(自分)はそれを見つつ Material Design により準拠できるようにデザイナーと話し合いながら実装する形で進めている。

その中で、デザイナーから「こういうデザイン実現したいんだけどできそう?」という質問によく遭遇するのだが、今はそれに対して調べないとわからないことが多い。バリエーションを増やせばスパッと答えることができるし、バリエーションが多いともっと UX 的に良いデザインが提案できる(かもしれない)と思った。

やはりエンジニアとしてアプリを作っている以上、ユーザーに価値を届けられることが一番の目的であるので、その価値を届けるための近道ができるようになるのが嬉しい

バリエーションを増やす方法

Play Store で配信されているアプリ

Dropbox Paper のように配信されているアプリは、だいたい設定画面あたりにオープンソースライセンスへの導線が存在する。Dropbox Paper だとここ。

f:id:rnitame:20171112184941p:plain

それを活用して、知らなかった OSS 等を見つけたらひたすら触ってみる。ただただ触っても楽しくないのでいろんなアプリをカテゴリごとに分けて、それぞれのカテゴリから1つアプリを選んで比べながら触ってみるGoogle Play Store で配信されているアプリは必ず1つのカテゴリーに属しているため、それで判断すると良い。例えば、Dropbox Paper は仕事効率化(PRODUCTIVITY)だった。

f:id:rnitame:20171112183156p:plain

Dropbox Paper を触ってみると、 このページは ViewPager で作ってるのかなーとか。

f:id:rnitame:20171112184935p:plain

このページだとタブは TabLayout か何かで、FAB があって、RecyclerView か ListView でリスト出しつつ、EditText の onTextChanged が発火したときにリストの内容を変更するのかな?とか考える。

f:id:rnitame:20171112184939p:plain

OSS

OSS は build.gradle を見てビルドして触る。 基本ストアで配信されているアプリと同じ要領だが、気になった挙動があればコードを見ることができるのでより詳細に把握できる。 最近は各地で Droidcon が開催されているので、それの公式アプリやスライドで使われたリポジトリをよく見ている。

github.com

github.com

github.com

まとめ

実装のバリエーションを増やすために、いろんなアプリを触ってみようねというお話。 最近 Kotlin が流行ってるけど、そういう言語も含めて実装のバリエーションを常にアップデートするようにしたい。