この記事の動機
当方フロントエンド好きなエンジニア。
フロントエンドが嫌い という増田がホッテントリ入りしてて、中身を読んでみると正論と言える内容もあるものの、幾つか勘違いもあって悲しくなった。
勘違いされたままなのは悲しい。
そこで、フロントエンドに浅く接している人に対して、ストレスなくフロントエンド技術の変化の激しさに対処出来るよう、フロントエンドエンジニアからの弁明とも言えるメモを残すことにした。
毎年のように流行りのフレームワークやらツールやらが変化してない?
あなたが感じるこのフィーリングは正しい。
実際何が流行っているかという点では、毎年のように変化が起こっている。
ただし、"○○○が流行ってきたから、前まで使っていた△△△はクソ。"という考えは正しくないし、○○○が△△△よりも必ずしも優れているというわけではない。
フロントエンドの世界では、UXやデザインの違いによってとても分類しきれない程の要件がある。
SPAと一口に言っても、実装しなければならない要件はアプリケーションごと全く異なる。
そういった個別の要件に対して、△△△しか無かった頃は不便を感じながら作らざる得なかったものが、○○○が登場したお陰で楽になる。楽をした人はスゲェとなる。スゲェと思った人は感動を周りに伝えたい。そうすると同じような不便を感じていた人たちもスゲェとなる。これがまるで、流行しているかのように外野は感じられる。
しかし、△△△も登場した頃は同じことが言えていた。ある要件には△△△が充足し、それでOKだというアプリケーションはあるのだ。
そして、そもそもJavaScriptに関わる人はとてもたくさんいる。Webのサーバーサイド言語は山ほどあるが、Webのフロントエンド言語はJavaScriptしかない。
Webの技術者にとってJavaScriptは必修科目といえる。人が集まれば声はでかくなる。○○○が解決する問題が非常にニッチだったとして、母数が多ければ喜ぶ人の数も多くなり、この狭いWebエンジニアコミュニティの中では流行と言えるくらいの盛り上がりになるかもしれない。
でも、それら流行も実際はこれまで解決が難しかったとある要件を少し上手に解決できるようになっただけな話がほとんどである。
Fluxの登場や、React、WebpackやSASSなども、従来のアプローチだと不便が生まれていた要件に対して、よりスマートに解決出来るようになっただけの話。
MVCや、Jquery、Gulp、生のCSSだって要件に対して必要十分ならそれを選べばいいし、何も間違ってはいない。
フロントエンドのやつらはいくらなんでも新しもの好き過ぎないか?
このフィーリングも正しい。
私たちは新しもの好きだし、機会があればどんどん新しいものを実戦投入したい。
時々外の人から叩かれるくらい新しもの好きだ。
しかし、私たちはただ新しもの好きだというわけではなく、理由があって新しいものを使いたいと思っている。
意外かもしれないがJavaScriptの世界はまだまだよちよち歩きの状態で、いいものを作ろうと思えば様々な不便に直面する。
そして多くのWebサービスが、競合サービスと機能や体験の質で仁義なき戦いをしており、ユーザーにとって使いやすいものを少しでも早く作らなければ負けてしまう状況だ。
こうした不便やプレッシャーを常に抱えているため、少しでも楽をするため、少しでも早くいいものを作るために、今より良いアプローチがあるならすぐに切り替えたいと思っている。
フロントエンドの世界にはまれに、古いアプローチで作られたシステムを見るとクソだと断じるエンジニアもいるが、彼らは不便と戦い、プレッシャーを乗り越えた末にそう考えるようになった、ある意味この業界の犠牲者だ。
許してやってくれとは言わないが、私は一定の理解が出来る。
変化が激しすぎて追いつくのしんどい…もう勉強したくない…
心から同情するし、私も常々そう思っている。
IE4の頃からJSを書き始め、決定版の登場をもう10年以上待ち続けている。しかし、10年たった今も相変わらずのカオスだ。
そして10年もJSに費やしたが、通用するのはここ1年で得た知識だけだ。それくらいJSの世界は変化が激しい。パラダイムシフトも頻繁に起きているため、ある瞬間から突然過去実践してきたアプローチが不要になったりする。
しかし、私はJSと出会えたことを感謝している。
正直言って変化が起きた瞬間はゲェ…またか…と思うが、調べていくうちに私が感じていた不便をスマートに解消してくれていることに気がつく。そうするともう、自分は好奇心の虜になっている。こう言うやり方があったか…、こうすりゃよかったのか…、そんな発見と後悔の先には、知的感動が待っている。
私も30台に入り立派なオッサンとなったが、こうして知的感動が得られるのは、プログラミング以外にあまりない。
頻繁に知的感動を与えてくれるJavaScriptは、何者にも代えがたい。
変化は楽しい。フロントエンドの人間は皆そう思っていると思う。
最後に
同じエンジニアであっても、考え方は分野ごと微妙に違う。
特にフロントエンドにどっぷり浸かってる人と、JavaScriptをメインに書かない人との正義は大きく異なると思う。
しかし、お互いがお互いの正義をぶつけあい、歩み寄らないのでは物事は何も進まない。
なんとなくでいいので、我々の気持ちも汲んでくれるとありがたい。
我々もJSメインじゃないエンジニアの気持ちも汲めるようにしよう。
追記
Twitterのツッコミをみて気がついたが、1998年くらいからJSを書き始めているのでほぼ20年と言っていいのか…
当時中2。スーパーハカーになりたいとかいうクソみたいな動機のお陰でここまでやってくることになるとは。