導入 Pattern Lab -Atomic DesignによるUIスタイルガイド作成ツール-

# 目次

- [Pattern Labとはなにか](#pattern-labとはなにか)
- [Atomic Design をざっくり説明](#atomic-design-をざっくり説明)
- [この記事の対象者](#この記事の対象者)
- [インスタレーション](#インスタレーション)

# Pattern Labとはなにか<a id="orgheadline1"></a>

[Pattern Lab](http://demo.patternlab.io/) は [Brad Frost](http://bradfrost.com/) が提唱している~~新しい~~UI設計手法 [Atomic Design](http://atomicdesign.bradfrost.com/table-of-contents/) で作成したUIセットのスタイルガイドを作るツールです。
(2018/3/1追記:1998年からそのような考え方があった http://danieldelaney.net/atomic/ )
なにができるかは [Pattern Lab Demo](http://demo.patternlab.io/) をみれば一発です。Atomic Designにしたがって設計したUIセットのスタイルガイドを確認できます。
Atomic Design のわかりやすい説明はGoogleの中の人が [このサイト](http://postd.cc/the-unicorn-workflow-design-to-code-with-atomic-design-principles-and-sketch/) で解説しています。

# Atomic Design をざっくり説明<a id="orgheadline2"></a>

ざっくり説明します。
設計の目的は、UIの再利用です。
UIを最小単位まできりつめた単位をAtomとします。これはボタンやテキストなどです。
そして、そのAtomを使って組み合わせたUIをMoleculeといいます。これはボタン付きのinputフォームなどです。
そしてMoleculeを組み合わせてつくったUIをOrganismといいます。これはヘッダーやフッターなどです。
そして上記を組み合わせて画面ワイヤーフレームを作ります。これがTemplateです。
Templateに実際のサイトのように画像やコンテンツを差し込んだもの、それがPageです。

[Googleの人の解説](http://postd.cc/the-unicorn-workflow-design-to-code-with-atomic-design-principles-and-sketch/) では[ Sketch](https://www.sketchapp.com/) とコラボレートした例がありますが、その説明は省きます(こんど時間があるときに記事かくかも)。

個人的にはデザインナーと科学者、畑は違うけども考えることは同じだよねという隠れた思考が見え隠れして非常に好きです。

# この記事の対象者<a id="orgheadline3"></a>

-   Macユーザー(Windowsでもできると思いますが、未検証です)
-   git使える
-   npmを理解している、グローバルとローカルインストールについての知識必須
-   gulp使ったことある(公式サイトでは、他にphpとgruntバージョンがあります)
-   フロントエンドエンジニア、特にデザイン部と密接に関わりがある、デザインこれから学びたい
-   デザインもコーディングも両方できるよ

※UIの設計はデザインの領域です。デザイナーとコラボすること、デザインの知識があることが必須です。

# インスタレーション<a id="orgheadline4"></a>

ここでは、公式サイトのサンプルリポジトリを使ってPattern Labを実践します。

まず公式サイトのサンプルリポジトリをクローンします。
your-local-github-directoryの箇所はローカルでgithubクローンしたい場所に置き換えてください。

```javascript
cd your-local-github-directory
git clone https://github.com/pattern-lab/edition-node-gulp.git
```

cloneされたらディレクトリ移動して、おなじみ npm startします。
ここで一点注意点です。執筆時点でbeta版のgulp 4に依存しているので、
3.X系のgulpがグローバルにインストールされている場合は、4を再インストールする必要があります。
詳細は [ここ](https://github.com/pattern-lab/edition-node-gulp/wiki/Updating-to-Gulp-4) にのっているので事前にインストールしてください。
※ここで筆者はつまづきました。3.X系だとこのあとTerminalでgulp実行してもこけます。

```javascript
cd edition-node-gulp
npm start
```

これで、pattern labのコンパイル準備が整いました。
次に、早速ビルドしてみます。

```javascript
gulp patternlab:serve
```

ここまでうまくいくと、ブラウザが立ち上がります。
もちろんまだ何もソースを準備していないので、
UIが空のページが立ち上がります。
この状態でソースを修正すると自動ビルドされブラウザ更新されます。

空のままだと面白くないので、
手っ取り早くDEMOの内容を落としてきます。
[解説サイト](https://github.com/pattern-lab/patternlab-node/wiki/Importing-Starterkits) にならって落とします。

```javascript
npm install starterkit-mustache-demo
gulp patternlab:loadstarterkit --kit=starterkit-mustache-demo
```

starterkit starterkit-mustache-demo loaded successfully と表示されたら成功です。
ルートフォルダ直下の source ディレクトリにDemoのソースがコピーされます。
再度以下のコードでビルドします。

```javascript
gulp patternlab:serve
```

ブラウザが立ち上がり、[Pattern Lab Demo](http://demo.patternlab.io/) と同じ内容が表示された成功です。
ソースファイルの実態はルート直下の source フォルダです。
試しに source/<sub>patterns</sub>/00-atoms/00-global.md を編集して保存してください。
自動でビルドされ変種した内容がブラウザのGlobalというタイトルの下に反映されるはずです。

これで 導入Pattern Lab終了です。お疲れ様です。

あくまでこれはスタイルガイド作成ツールなので、
肝心なのはAtomic Designに基づきUIを設計し、source以下にコーディングすることです。
そのコードをコンパイルすることではじめてUIがパーシャル(再利用可能)になります。

sourceフォルダ以下にどのようなファイルを作成すればいいかは
英語ですが [ここ](http://patternlab.io/docs/editing-source-files.html) に解説されています。

今後余力があれば、実践として記事アップします。

最後まで読んでいただきありがとうございます。