自分の制作環境の中での自動化を再考する
最近、自分の中で「自動化」や「ワークフロー最適化」がブームになっています。
@ahomuさんの影響もあり、自動化ツール「grunt」に興味があります。
そんな中で会社の先輩たちに、「これからはnodeですよ!gruntですよ!自動化ですよ!」とか 言いふらして・振り回したりしていました。(その節はご迷惑をおかけしました。m(__)m)
そんなこともあり、色々なブログ記事を読みあさり、あれもこれもと自動化を考え、 node製の自動化ツール「grunt」の設定ファイルを試行錯誤しながら書いていました。
気がついたら、設定ファイルはあらゆる自動化で肥大化し、 自分の中でgruntで自動化できるから、これも自動化しよう、とか考えるようになっていました。
ただ、そこである疑問を感じました。
「本当にこの自動化が(すべて)必要なのか?」ということです。
もう少し、(gruntによる)自動化を減らして、細かいタスクなら黒い画面無しでも こなせるようにした方が小回りが効くのではないか?
そう考えるようになりました。
Web制作で本当に必要な自動化は少ない
Webサービス、Webアプリ開発と比べて、Webサイト制作という業務では 本当に必要な自動化は少ない印象があります。
今、gruntを導入しているような人は先端のフロントエンドデベロッパーの 方が多く、制作よりは開発に近い人が多いです。
そのため、例として上げられるgruntタスクも開発よりのものが多い印象です。
身の丈にあった自動化をする
人の物真似ではなく、自分の身の丈にあった最適化をするためには 当たり前ですが自分のワークフローを分析するのが基本です。
step0. 普段の業務でやっていることを書き出す
- Photoshopから画像のスライス
- 静的ページやCMSテンプレートのコーディング(HTML+SCSS)
- Javascriptの実装(jQuery)→Coffee Scriptも追々やりたい
step1. 自動化したいことをやりたい順番に書き出す
- SASS(Compass)
- Livereload
- CoffeeScriptのコンパイル
- javascriptの圧縮
- 画像の最適化・軽量化
Step2.使用している制作環境を書き出す
- Sublime Text 2
- node.js + grunt + coffee
- ruby + gem + sass + compass
Step3. 役割を分担する
実際に処理されて欲しい順番と、各ツールの役割分担を考える
- SASS(Compass)→Sublime Text 2 + Compass Package
→Sublime Text 2 + Compass Package(Ruby + SASS + Compass) - Livereload
→Sublime Text 2 + Livereload Package - CoffeeScriptのコンパイル
→grunt + coffee task - javascriptの圧縮 →grunt + concat task
- 画像の最適化・軽量化 →grunt + img task
最小と最大の制作環境をつくる
最小と最大の制作環境とは、普段の業務を行うにあたり、 最低限欲しい環境と、あったら便利な環境を分けることです。
以下はWeb制作に限った話ですが。
- 最大の環境は初期構築時に欲しい環境
- 最小の環境は初期構築が終わった後にも欲しい環境
を指します。
Step3で挙げたもので考えると、1と2が最小の環境に当たります。 この環境だけで、HTMLとSCSSの簡単な修正なら十分対応することが可能です。
また、割り当てたツールの欄を見ていただくとわかると思いますが、 1と2だけであれば、表向きSublime Text 2のエディタ1本で完結しています。
実際にはRubyのインストールが必要ですが初回だけ完了すれば、2回目以降は 黒い画面は必要ありません。
最小を小さくすればするほど、技術展開がしやすくなる
制作会社では多くの場合、1つのWebサイトは複数人でメンテナンスされていきます。
そのため、あるサイトで新しいワークフローを採用した場合には、 そのサイトをメンテナンスするメンバーへの技術展開が必要になります。
その際に全員が覚える必要のある最小の環境をごく小さくしておくことで、 展開にかかるコストは激減します。
gruntをはじめ、各自動化ツールにはできることが本当に多いです。
でも、全ての制作者がその全てを必要としないのかもしれません。
自分の制作環境と、他の人も使える制作フロー、両方がイコールがあれば 言うことは無いかもしれません。
しかし、そうならない場合は「制作環境の最小化」を意識してみることをオススメします。