フロントエンドへの複雑化について、一つの視点
これらの件
前提
去年は勝手Reactエヴェンジェリスト(自称)として、日本に複雑化するフロントエンド技術の海外の動静を紹介をし続けていた。
僕としても、フロントエンドは複雑化してると思ってるし、それは「目的の複雑化に対して必要なもの」だったと思っている。ここでいう目的とはSPAの構築であって、普通のウェブサイトは含んでいなかったが、普通のウェブサイトも当たり前のようにリッチ化目指しているのが現在なので、境目は曖昧ではある。
僕もフロントエンドの複雑化がだれにでも必要なものだとは思っていない。が、定期的に情勢を整理して、交通整理するのを心がけてきたし、春からはじめるモダンJavaScript / ES2015 - Qiita みたいな記事を書いたりした。
で、現在誰でもキャッチアップする価値がある技術としては
- ES2015: 仕様化済み
- npm: エコシステム
- browserify | webpack: ビルドツール
を挙げてる。まあその詳細については↑の記事を読んでくれという感じ。
それに比して、フレームワークを使うべきかは人によるとしか言いようが無い。ReactもReduxもAngularも、僕は「普通のウェブサイトを作ってる人」は無視して構わないと思う。僕は仕事、というかQiitaの開発で「普通のウェブサイト」に部分的にReact入れてるけど、これはこれでフロンティア感があって、悩ましくて毎日試行錯誤してる。(その部分についてはあとで雑誌の記事なりQiitaなりでまた書くと思う)
あとはTwitterから
フロント追ってる立場だけど、各ジャンルの深化が進んで専門化が進んでるせいもある。誰でもフルスタックになれる時代は終わった。自分もアプリケーション層までならわかるけど仮想化方面はあえて手を出してない。 / “日本のWebエンジニア…” https://t.co/cw95FWGr8c
— ダイナモポグラマ (@mizchi) 2016年4月10日
僕は僕にしかできない仕事があるんで仕事が成立してて、それに自負もあるけど、このスキルセットの学習を効率化させるために意図的にサボったジャンルも多い。興味ありつつも沼だと思うので意図的にDocker方面は手を出してない。フロント沼に使ってる以上別の沼は今の自分にはきつい。
— ダイナモポグラマ (@mizchi) 2016年4月10日
ジャンルに限らず最先端は淘汰が激しいので自分の主戦場以外では淘汰が終わったものを採用するのがよいと思うけど、淘汰が終わったかだうか、過渡期の技術かどうかを見極められるかのセンスがないと学習コストという沼にハマって死ぬので、主戦場以外は本質的な技術に投資した方が安心だとは思う。
— ダイナモポグラマ (@mizchi) 2016年4月10日
自分の場合はフロント技術以外はコンパイラ(というかトランスパイラ上のAST変形と型推論)とデザインパターンの勉強してたので、それら極めたわけじゃないけど技術的な選択肢は結構増えたと思う
— ダイナモポグラマ (@mizchi) 2016年4月10日
まーただ自分は技術力が高い会社を選んで転職してるので、大抵自分ができない部分を安心して任せられる人がいて、甘えと言われてもしゃーないアレはある。その分自分の専門性でペイしようという認識がある。
— ダイナモポグラマ (@mizchi) 2016年4月10日
注: スタートアップ界隈での話。大きな会社ほど専業化の傾向は強まる。
最近もう面倒だから言わないけど、Reactすごい!使える!って2年前から言ってて、2年前ならいざしらず、採用例これだけ増えてて、用途に向かないって理由で採用しないのはわかるけど、知見ないから使えないですね〜って理由で落とす人みるとあ〜ってなる
— ダイナモポグラマ (@mizchi) 2016年4月10日
注: さすがにポジショントークすぎますね…
サボったこと
そりゃね、可処分時間でゲームやらずにサボらなければ今苦手としているDockerやAWSの運用もMySQLの効率的なクエリも雑ではないちゃんとしたCSSもRailsのテクニックももっと高いレベルで身についたと思う。
だけど、相対的に興味ないことを、モヒカン的に全部やれって言われるの辛いんで、全てはスキルツリーと可処分時間のバランスの問題で、僕はフロントエンドのスキルに僕が必要と思うだけ時間割いた結果やっぱ他のスキルおざなりになってるのは自覚しているところですけども、その分踏み固めるんで、僕の学習成果は公開するし、他の人が効率的にそれらを消費して欲しいと思ってる。
フロントエンドエンジニアの審美眼
あとまあフロントエンドを名乗るエンジニアの平均的な技術力が低いことは僕も認めるところではあるんだけど、これはJSが元々「サーバーサイドもしくはデザイナが片手間にやる」時代の変遷から仕方なくて、そのせいでコミュニティとして技術的な審美眼が欠けてるから、使えるものと使えないものの見極めに時間掛かって収束しない、という傾向はある。これが一番悩ましい問題だとは思ってる。
で、「真っ当な」エンジニアからはJS界隈がまるごとそう見えるだろうと思われるであろうのも自覚している。じゃあ何を信用するかというと、時間による淘汰をみてくれとしか言えない。フロントエンドの複雑化の流れは2012年頃のnode.jsのフロントエンドへのフィードバックから始まるので、そこから生き残ってる奴はまあ使えるんじゃないの、って感じ。
つらさ
どのライブラリとは言わないけど、「これやばいだろ…」、ってライブラリに釣られて皆ホイホイ釣られていて、「あ〜う〜んやりたきゃいいんじゃないの、ダメだと思うけど…」みたいなスタンス僕は取ってること多いんだけど、そこでそのライブラリについて悪くいうと、僕がReact押しだったのもあって、なんか政治的な色彩とか帯びてしまって、やりづらいっすね。つらい!