先日の土曜日に、はてな主催で行われたイベントで現在のチームで行っているフローを紹介しながらデザイナーがXMLを書くと良いことについて発表してきました。
そもそもXMLとは
ここではandroidのレイアウトをするためのXMLを指すこととする。androidの裏側のアルゴリズムなんかはJavaなんだけれどレイアウト自体はXMLっていうので組むことができる。
なんでXML覚えようと思ったか
大学生の頃iOSアプリのデザインをやったことがあった。そのとき一番困っていたのがエンジニアとのやりとりだった。
全てのマージンの幅は統一するけどでもここだけは意図があって多めに空ける、みたいなのを未熟ながらも精一杯考えて画面のデザインをしてエンジニアに1枚の画像として渡すというのをやっていたのだけれど、なかなか思った通りにならない。
それだけじゃ伝わらないのかなと思って、注釈として「ここの幅は●●px」みたいな細かい指示を書いたものを渡してみたこともあったのだけれど、それも「なんか違う!」というふうになっていた。そのたびに「すいませんここあと3pxだけずらしてもらえますか、あ、3pxだと行き過ぎるからもうちょっと戻してください」みたいなやりとりをしていた。
たぶんお互い「なんでわかってくれないの!」って思ってると思う。
デザイナーを仕事に選ぶ人は1pxの差を「違い」だと認識していてそこに意味を持たせたいと思うからデザイナーをやっているのだろうけど、そんな差はデザイナー以外だとなかなかわからない。(そしてすごいデザイナーが作るあか抜けた感じっていうのはこの1pxに関係するのだと思ってる)
そういうことを考えて、「わたしが考えている1px」と「エンジニアが考えている1px」はそもそも見え方が違うのではと思うようになった。画像をそのまま渡すだけではうまく伝えられないから、何か別の方法はないものかと考えた。たまたまコード書くのがちょっと好きだった私は実装の部分までやってみたいと思った。
カンプは実装と違う
カンプと実際に動くものとは全然違う。例えばタイトルと本文が動的に入るようなアプリだったとしたら、自分が想定しないくらい長いタイトルをつける人がいれば、めちゃくちゃ短い本文を連続して書く人もいるかもしれない。そういうのも最低限いい感じに見せたいわけなんだけど、PhotoshopやIllustrator上だと想像がしにくい。
それからカンプでボタンのon/offのパターンを作ったとしても、実際使ってみると色の変化が大げさだなとか、逆に差がなさすぎるとか、触ってみて初めてわかるところもあると思う。
だから、実際に動くものをたくさん触って、試して、修正して、また触って、っていうのを繰り返すのに時間を掛けるのが大事だと思っている。実際にユーザーに届けるのは動く状態のものであって、美しいカンプではない。
コミュニケーションが大事
XMLやってみようと思い立っていきなりコード書き始められたかと言われると、そうではない。環境設定は全てやってもらったし、わからないところは片っ端から全て聞いて教えてもらった。聞きやすい環境がなければ今でも実装やってみたいけどできないなあ、みたいなことを言ってたと思う。つまり色々確認したり相談できるのが大事。
それから、わたしはコード書くのが好きだからエンジニアとのやり取りに画像ではなくてコードを使うことにしたけど、全ての人たちにとってこれが一番いいとは思っていない。デザイナーでコードが好きな人そこまでいないと思うし、そのチームにとっていちばんいい方法を話し合ったり試行錯誤しながら探すのが大切だと思う。
もちろんクライアントワークであるならばなかなかこんな感じにはできないと思う。
FAQ
会場でいつくか質問されたので、覚えている範囲で書いておく。
Q, XML書くのとCSS書くのは似てる?
A, 似てると思うけど、変数をたくさん扱うのからどちらかというとSCSS(SASS)とかLESSに近い感じがします。あとHTMLの要素に直接スタイル書くのに似てる。
Q, style.xml書いてる?スタイルのまとめ方とか自分で覚えた?
A, 書いています。効率の悪い書き方をしていたとしてもコードレビューのときにエンジニアにもっと良い書き方を教えてもらえるから、それを頭に入れながら覚えています。
Q,プロトタイプツール使うのではダメなの?
A, モックに動きをつけるためにflintoを使っていたけれど、それはあくまで実装前のテストとか前提をすりあわせるために使っていました。
Q, デザイナーさんにコード覚えてもらうにはどうしたらいい?
A, これは一番難しい質問で、急に「コード書いているデザイナーも世の中にはいるから書いてくれないか」って言ってもなかなか難しいのではないかと思います。まずはデザイナーが書ける環境を完璧に整えてあげるとか、ちょっとコマンドライン教えてあげるとか、何ならエンジニアのPCの前に呼んでmarginやpaddingだけ設定してもらうところから始めるのがいいのではと個人的には思っています。今ではターミナルいろいろ設定してみたりしてるけど、わたしがコードとかCLI好きになったのも教えられるがまま見よう見まねでターミナル触り始めて、文字で命令して何かを制御する面白さを知ったからだと思っています。
そんなわけで初めてのプレゼンで緊張したけど、全然知らない人の前で発表できて良かったし楽しかった。またこんなふうに話せる機会があれば積極的に参加していきたい。何か良い会があれば誘ってください。
次はもっとうまくやれるようにしたいな。
ちなみにちょっと前にandorid用の素材の書き出しについても書いたので、よければこちらも併せてお読みください。