MovableTypeとWordPressとJekyllとHugoや、Gruntとgulp、SassとLESSとStylus、果てはjQueryなどの話はスケールやパターンを変えて繰り返される。その話はあたかも特定の何かに依存することが良くないとか新しいこっちのがすごいぞというように結論づけられることが多くて、僕にはちょっと頷けないこともあったりする。大切なのは何を解決しようとしていたかを忘れないことだと思う。複雑化しそうな場合にそこから先へ踏み込まずに我慢する期間がいるとかかも。
GNU makeでいいじゃん的な結論はそれは確かにビルドという点ではそうなんだけど、Gruntが解決しようとしていたのはそこじゃない。npmという生態系の中で完結させやすいタスク実行環境を手軽に用意することができることで、それ以上でもそれ以下でもない。実行速度以外にも腐臭を放つAPIやプラグイン間で一貫性のない設定方法など多くの欠点があるものの、ユーザーが解決したかった問題はそれなりにうまく解決できてる(よね?)。
一方gulpはGruntが抱えてしまっている実行速度の遅さとプラグインのnpmパッケージからの乖離という問題を解決しようとしたもの。その反面Node.jsにおけるStreamという概念の高い理解を要求するようになってしまった。Node.jsで開発するわけじゃないウェブサイト制作者にとってはほぼgulpのためだけに必要となるもので、Node.jsという生態系には素晴らしいものではあるけれど、実際に利用する層とは微妙にミスマッチだとも思う。
Sassの利用は今使えるCSSに足りないものを補完することが主な目的なわけだけれども、特に@extend
という強力な仕組みのおかげ(せい)でCSSに無い概念を持ち込むことに成功してしまった。私達が解決したかったもの以上の力を持つツールになってしまったということで、それによってCSSというレベルでは不必要と思われる複雑化が日常化してしまった。
WordPressやjQueryは……もう忘れたけど、なんとなく炎上した時にどうとかInternet Explorer 6がどうとかのことを想像してくれれば解決したかったものは多分そこにある。
こういった何かを解決するためのツールは、万能ではないことはもちろんだけど、解決したい何か以外にも魅力的な機能があったり、解決するために犠牲になった部分があったりしてしまう。自分が作ったツールじゃないのでそりゃそうだといえばそうなんだけど。そういった目の前においしそうにぶら下がってるけど実際には不必要な便利さや、自分が解決したい問題とはあまり関係ない欠点に惑わされずに、常に自分が何を解決したかったのかを忘れないことが大切なんじゃないかなと強く思う。
あるツールを使っていて欠点に気づくことは良くあるけど、その欠点を解決した同じようなツールが必ずしも自分の解決したかった問題とスケールや運用においてマッチしているとは限らない。もちろん問題が解決されていればそれで良く、新しいツールを学ぶ必要はないというわけではなく、目新しい機能や関係のない改善に惑わされずにツールの学習を積み重ねていくことが必要だということ。そしてその学習の間には、現実の問題を解決するために現状に踏みとどまり我慢する期間がそれなりに必要になると思う。僕にとってはSCSSやGruntはまさにこの期間にあったりする。結構長い。