プログラマーだってSketchでUIデザインしたっていいじゃない

# About

プログラマーの皆さんだってたまにはUIをデザインしてみたくですか。
デザインまではいかなくても、もらったデザインをちょっといじったりしたいときありませんか？
最近人気のSketchについてプログラマーがどう覚えていけばよいのか、自分の事例をもとに紹介します。

# この記事でやること

- Sketchをインストールしてまずは動かしてみる
- Sketchってこんなものなんだあ、というのを知ってもらう

# この記事でやらないこと

- Sketchの使い方についての説明
    - 例えばシンボルについての説明
    - そういうのを書くとキリがないので
- よいUIデザインのやり方

# Sketchとは

SketchとはオランダのBohemian Codingという会社がつくっている主にUIやロゴをデザインするためのツールです。
以下の様な特徴があります。

- ベクター形式なのでファイルサイズが軽くて拡大縮小してもきれい
- アートボードが便利
- デザインを共有する機能が充実している (SKetch Mirror)
- シンボルとテキストスタイルで共通化

簡単に言うと、サクッとUIをデザインしてサクッと共有できるツールです。

# まずはインストール

https://www.sketchapp.com/

公式サイトからアプリをダウンロードします。
Free Trialからはじめましょう。
お気づきかもしれませんがSketchはMac版しかありません。
Windowsの人とは残念ながらここでお別れです。

# 動かしてみる

インストールしたら起動してみましょう。

<img width="1083" alt="スクリーンショット 2016-07-12 0.15.54.jpg" src="https://qiita-image-store.s3.amazonaws.com/0/20755/fbc3ea09-c358-d0cc-2c25-67ba7baffb6b.jpeg">

ここでは簡単なiPhone向けのTodoアプリをつくってみます。

# テンプレートを読み込んで新規作成

New From Template -> iOS UI Designを選びます。

![image](https://qiita-image-store.s3.amazonaws.com/0/20755/3d38bea5-f8d4-bef2-43d7-c1a2d4ddbc5a.png)

するとiOS向けのコンポーネントを初期セットとしてセットアップしてくれます。

![image](https://qiita-image-store.s3.amazonaws.com/0/20755/026f6c43-adb0-0c4f-e10d-c53ac760d338.png)

左上のPagesと書かれたバーの右側にある「＋」をクリックして新しいページを作成してください。
Page 2という真っさらなページができたと思います。

# タスク一覧画面をつくる

それではTodoアプリとしてタスクの一覧画面をつくってみます。

## アートボードを配置する

Sketchではアートボードを配置してUIを配置していきます。
ツールバーのInsert -> Artbordもしくは `a` とタイプしてアートボードのメニューを出します。

![image](https://qiita-image-store.s3.amazonaws.com/0/20755/9f1e443b-aad9-5bbd-7f74-010f159561f7.png)

とりあえず `iPhone 6` を選択してみましょう。

![image](https://qiita-image-store.s3.amazonaws.com/0/20755/11212f19-28c9-e276-ac92-38b7656bbeb3.png)

画面上にiPhone 6と書かれたアートボードが挿入されます。
この枠組のなかでUIデザインしていきます。

## ステータスバーを配置してみる

まだ枠しかないので見た目がiPhoneアプリのそれっぽくなるようにステータスバーを配置してみます。

![image](https://qiita-image-store.s3.amazonaws.com/0/20755/425b8d5e-c6af-e7db-71a2-271a4149c6f9.png)

画像のようにInsertからStatus BarのBlackの100%のステータスバーを選択してアートボード上に配置してください。
場所は後で調整するのでテキトーでよいです。
配置できたら右側のインスペクタのPositionを入力しましょう。x, yを`0`にします。

![image](https://qiita-image-store.s3.amazonaws.com/0/20755/0a3ac546-a447-b85d-6a10-257eec4a0a7e.png)

するとステータスバーが画面上ぴったりに収まったと思います。
もしくは中央寄せや上寄せにする機能もあるのでそっちを使っても大丈夫です。

![image](https://qiita-image-store.s3.amazonaws.com/0/20755/93a90b78-e2fd-b407-de8a-ac832e64aeab.png)

こっちのが使う機会は多いかもしれません。
Sketchではコンポーネントを配置するときにマウスで場所を調整するよりも座標を直接うちこんだ方が正確に配置できます。
ちなみに `800/2` や `375+25` といった四則演算もできるのであと23px動かしたいといったときも `+23` とインスペクタに打つだけで移動してくれます。覚えておきましょう。

## ナビゲーションバーとツールバーの配置

ステータスバーと同じ要領でナビゲーションバーとツールバーも配置してみましょう。

![image](https://qiita-image-store.s3.amazonaws.com/0/20755/cf36a4e0-0286-89b6-8ffe-01f87bfdd34c.png)

こうなります。ちょっとiPhoneアプリっぽくなってきましたね。

## アプリのタイトルを変えてみる

アプリのタイトルを設定してみます。
そのためにはシンボル化を解除します。(やっと後に気付いたけど本当は解除しなくてもできます。まあせっかくなので解除しましょう)
シンボル化とは何かと疑問に思われるかもしれませんがとりあえずそれは後回しにして先に進みます。(その気になったら本を読むなりして勉強してください)
まずはナビゲーションバーを右クリックして `Detach from Symbol` をクリックします。

![image](https://qiita-image-store.s3.amazonaws.com/0/20755/75505f7e-172b-9f97-e8f1-6f86fb2662a3.png)

そうするとテキストを編集できるようになるので `Title` と書かれているところをダブルクリックしましょう。(もしくはCmd+クリックでもいけます)

![image](https://qiita-image-store.s3.amazonaws.com/0/20755/41d12b1f-5379-ab3f-8ac9-d4e1bbdb4d73.png)

テキストの編集モードになるのでテキトーなタイトルを入力します。ここではTodoアプリと入れました。

![image](https://qiita-image-store.s3.amazonaws.com/0/20755/fe39f295-9dad-319b-d8f5-10714982f90e.png)

同じ要領でCancelとDoneのアクションリンクもテキトーな名前に変えるか消すかしてしまいましょう。
ここではdeleteキーを押して消しました。

![image](https://qiita-image-store.s3.amazonaws.com/0/20755/2d070746-e941-c04f-726d-44c1ffa1ed6f.png)

## タスクの一覧を配置する

タスクを一覧表示させてみたいと思います。
SymbolsからCellというのを選択してアートボード上に配置してください。

![image](https://qiita-image-store.s3.amazonaws.com/0/20755/2fb1790b-c515-a82f-8cfe-82211fdba9cf.png)

3つほど置いてみました。

![image](https://qiita-image-store.s3.amazonaws.com/0/20755/469f6920-69a1-9714-22af-ce5280f0b9c5.png)

さて、さきほどはここでシンボル化を解除していましたが今度はOverridesを使ってみようと思います。インスペクタからOverridesという文字列を見つけてみてください。
そこにLabelというのがあるはずです。そこにテキトーなタスク名を入力してみましょう。

![image](https://qiita-image-store.s3.amazonaws.com/0/20755/b6ad001b-a3df-a503-3860-22fa58ae8fa4.png)

テキトーなタスクを設定しましょう。

![image](https://qiita-image-store.s3.amazonaws.com/0/20755/282fafaf-c256-2642-10c2-4880759f1636.png)

タスクの一覧ができましたね。

# タスク追加画面もつくってみる

タスク一覧を表示する画面ができたのでタスクを追加する画面もつくってみたいと思います。

## 新しいアートボードを追加

さきほどと同じようにアートボードをつくってください。

![image](https://qiita-image-store.s3.amazonaws.com/0/20755/768eca2e-7a16-a3b7-bca0-45705514441f.png)

## ステータスバーとナビゲーションバーを追加

同じようにステータスバーとナビゲーションバーを追加します。
今回はSubtitleというテンプレートのパーツを使いました。

![image](https://qiita-image-store.s3.amazonaws.com/0/20755/95d8f91f-ba6e-e337-4acc-9704c1ae9b43.png)

さきほどと同じようにシンボル化を解除して良い感じのテキストに置換えます。

![image](https://qiita-image-store.s3.amazonaws.com/0/20755/834c74f9-ca04-71c5-688f-bb90d2961201.png)

## タイトルとメモを入力するテキストフィールドを配置

タイトルとメモを入力するためのフィールドを配置します。
`Cell with Input` を使います。

![image](https://qiita-image-store.s3.amazonaws.com/0/20755/9ef0971a-b0d1-071b-0e92-dd7b60087d72.png)

できたらインスペクタのOverridesからテキストを変更します。

![image](https://qiita-image-store.s3.amazonaws.com/0/20755/4d5ec12d-1f90-f6fa-745d-50797615ee29.png)

## メモは複数行打ちたい

タイトルは一行でよいけど、メモは複数行入力したいですよね。なのでそれに対応させましょう。

※ ちょっと難易度が上がる操作になるのでめげずにやってください（諦めても大丈夫です）

まずはシンボル化を解除してください。
その後にメモのフィールドをCmdキーを押しながらクリックしてください。
そうすると左側のレイヤーリストがこうなって `Cell` が選択された状態になると思います．

![image](https://qiita-image-store.s3.amazonaws.com/0/20755/ba041fe1-7e63-32ea-5e09-f6db71bc4c6b.png)

その状態でインスペクタでHeightが44となっているところを88と変更します。

![image](https://qiita-image-store.s3.amazonaws.com/0/20755/8deaf947-7f7b-0ed0-4798-7c00a9d5afa1.png)


そうすると枠が縦に広がるのがわかると思います。

![image](https://qiita-image-store.s3.amazonaws.com/0/20755/0dd970d1-5937-89ea-e2c5-d441eb9a8787.png)

これでフィールドとしては広がったのですが下線がまだ移動できていません。
左側のレイヤーリストから`Separator`と`Cell`を複数選択状態にしてください。

![image](https://qiita-image-store.s3.amazonaws.com/0/20755/e890c2ac-9dea-ea0b-9e57-e0fe04121f62.png)

2つのレイヤーが選択された状態で下揃えにします。

![image](https://qiita-image-store.s3.amazonaws.com/0/20755/294633dc-028c-26a5-00d6-066adebe0206.png)


すると、下線がきれいに下に移動します。

![image](https://qiita-image-store.s3.amazonaws.com/0/20755/fbc0ae8a-99e7-7113-feb8-ac44d646dc40.png)

これで複数行のテキストエリアをつくれました。

## テキスト以外のパーツも入れてみる

テキスト以外の入力パーツもいろいろあるので試しにちょこちょこ触ってみましょう。
ここではタスクの期限とリマインドの有無を設定するためのパーツを配置してみました。

![image](https://qiita-image-store.s3.amazonaws.com/0/20755/7a78347f-6161-62bc-c358-add32ee4fa76.png)

いろいろ置いてみて自分なりに画面をつくってみましょう。

## とりあえず完成

これで完成です。

![image](https://qiita-image-store.s3.amazonaws.com/0/20755/c522a8fb-508a-85c2-9f84-6121d8ae1852.png)

使いやすいアプリかどうかは別として、Sketchを使ったUIのデザインの取っ掛かりにしていただけたら嬉しいです。

# 今後の展開

## 画面を増やしていく

一覧と追加の画面だけつくりました。
後はタスクを完了させるUIだったり、リマインドを設定するUIを追加していってみてください。
タスクを検索するUIがあってもいいですね。

## プロトタイピング

Sketchだけでは静的なUIをデザインすることしかできません。
できたら実際に動かして見てみたいですよね。
そのためのツールはこんなのがあります。
どれも簡単に使えるので試しに使ってみて合うツールを選んでください。

- [Prott](https://prottapp.com)
    - 日本のグッドパッチ社が作成している
    - Webベース
    - 主にはワイヤーフレーミング用のツールっぽい
- [inVision](https://www.invisionapp.com/)
    - 世界的に使われてるっぽい
    - Webベース
    - プロトタイプの共有方法が便利っぽい
- [Flinto](https://www.flinto.com/)
    - Sketchとの親和性が高い
    - MacアプリとWebがある
    - グリグリ動きを付けられる

個人的なおススメはFlintoです。
作者はrebuild.fmで有名なnaanさんです。
Sketchのデザインをそのまま取り込めて色んなトランジッションをビジュアルに設定できて使っていて非常に気持ちのいいツールです。
ProttやinVisionはクリックを範囲を自分で切り出さないといけないのがちょっと面倒です。(個人の感想)

# 今後の学び方

ツールはあくまでもツールなので使って覚えるのが一番の近道です。
使っている過程でいろいろわかんないことが出てくると思うのでそういう時のために参考までに自分が参考にした情報をあげておきます。

## 書籍

Sketchの使い方について
https://leanpub.com/basicofsketch-ja/read

## オンライン講座

こっちもSketchの使い方について。
動画なのでこっちのが理解しやすいかも。
https://www.udemy.com/sketch3-for-beginners/learn/v4/

## Webの記事

- プラグイン
    - `Sketch プラグイン` でググると便利なプラグインが色々紹介されています。
- 実践的な練習
    - http://noga0419.hatenablog.com/entry/trace-sketch
        - TwitterのUIをトレースして勉強しよう、という記事です
        - すみません、ぼくはまだやってないです。。

# まとめ

Sketchはプログラマーでも簡単に使えるからもっとみんな気軽に使ってみるといいよ！