技術の流行についてゆくこと
以下の記事とはてブを受けての所感。
- 【翻訳】 2016年にJavaScriptを学んでどう感じたか - Endo Tech Blog
- はてなブックマーク - 【翻訳】 2016年にJavaScriptを学んでどう感じたか - Endo Tech Blog
JavaScript による Web フロントエンド開発環境について総括する記事があると、はてブでは拒否反応が多く見られる。特にフレームワークやライブラリの乱立や JavaScript/CSS の Transpiler 周りに忌避感があるようだ。
確かに複雑である。しかし「それが何の問題を解決しているのか?」に注目すれば単純な要素技術の集合であることが理解できるはず。
例えば Browserify、webpack、Babel などの Transpiler/Bundler 系と ES2015 や TypeScript の関係は、JVM や .NET Framework のような共通ランタイムとその上で動く言語を当てはめてみればよい。Web ブラウザで動作する JavaScript という共通ランタイムがあり、これらのツールや言語はランタイムがサポートしていない構文や機能を提供してくれる。好きな言語で書いて、それを共通ランタイムたる JavaScript に変換しているだけだ。
npm も単なるパッケージ管理システム。いまやどのプラットフォームでも当たり前のように使用されている。こういうのに縁遠そうな Microsoft ですら NuGet を提供している。
こうやって「XXX は YYY の ZZZ だ」と当てはめてゆけば案外、簡単に理解できるものだ。適合するものがなければそれは「新しい問題を解決している」のであり、もしそれに価値があるなら、いずれ他のプラットフォームにもやってくる。例えば最近だと .NET で流行した Reactive Extensions 実装が RxJava や RxJS として移植されている。
なにか大きく複雑なものを前にすると怯んでしまう。それは大きく複雑な問題をそのまま捉えようとすることがよくないのであって、小さく分割して各個撃破すれば大したことない。
私は 2 年前、久しぶりに Web フロントエンド開発へ戻ってきたが、この考えにもとづいて既知の概念とそうでないものをより分けながら理解した。その過程で Web という難物へ取り組んでいるわりに、意外と常識的な技術や仕様策定プロセスを採用していることに感心した。これは HTML5 前夜の混乱を踏まえた反省もあるのだろうけど。
要素技術の趨勢が移り変わるはやさを危惧するとして、他のプラットフォームでも先端をながめたら同じこと。Web フロントエンド開発については、2015 年に ES2015 と以降の道筋が示されたこと、npm によるパッケージ管理が根付いたことから環境面の素地は固まったと認識している。これらが核であり、その周辺は好みによる選択でしかない。
jQuery に慣れていてプラグイン資産に魅力を感じるなら使い続けてもいい。私も以前、ES2015 で書きつつ View 部分を jQuery で組んでいた。たくさん並んだ新興技術も要素と認識すれば、このように好きなものだけ部分導入できる。
そんなわけで、未知の概念がたくさん登場して面食らったら、ひとつずつ既知の概念に変換してゆこう。これが技術の流行についてゆくコツだと思う。もしそれでも未知が多ければ、それは対象とする分野そのものが新しいか経験不足のいずれかである。
もうひとつ。
冒頭で取り上げた記事は最近の Web フロントエンド開発の複雑さに対する皮肉だが、こういうものに乗っかった批難や愚痴は不毛である。共感するにしても苦笑いで済ませるようなものであり、言及するならば否定を超えて批評を目指したい。
言及する程度に興味があるのなら批評は可能なはずである。