始めに
こんにちは〜まんじです。
今回はフロントエンドエンジニアはオワコンなのか?っていうテーマを書きたいと思います。
結論から書いちゃうと、別にオワコンではない、、、というよりもリッチなUIがますます必要になってるのでニーズはむしろ高いのでは・・・?という状況です。
昔よりもフロントエンドフレーム使ってAPI通信して開発するウェブアプリケーションが増えまくってますし、最近だとMPA(サーバーサイドフレームワーク + html)でフロントエンドを補うことは少ないので、ウェブ開発においてはフロントエンドエンジニアは必須な状況です。
あとここで書くフロントエンドはウェブのフロントエンドなのでモバイルとかデスクトップアプリ含めたフロントエンドとかは多少カバー範囲から外れます。(大きくは違わないけど)
直近のウェブ開発のフロントエンドの市場感
案件サイト
- 正社員の募集要項
- フリーランス案件の募集要
「フロントエンドエンジニア フリーランス」とかで案件を調べれば分かるんですが、普通にここ2~3年の単価は変わっていなくて、それなりに高い部類です。
フリーランススタートのサイトを見てみると、月単価の中央値が70万円らしいので、フロントエンドで平均レベルの実力で年収で840万円ぐらいって感じらしい。
この単価を高いと感じるか安いと感じるかは人それぞれなんですけど、オワコンと言えるほど安くはないはず・・・。
世間的な給料の平均とかを見れば十分高いのと、リモート可能とかだし待遇は良いほうと言えるかと思います。
どこでも必要な需要が高いフロントエンド
基本的にウェブアプリ必要系になると、インフラ、バックエンド、フロントエンドの3つが必ず必要になります。
*一部を省略することもできるけど、そうすると柔軟性とか自由度は下がる。
新しく出てきているな業界や領域でもフロントエンドは必要です。
- AI系ウェブアプリ
- AIで画像生成する系ウェブアプリ
- web3系のDEX, CEX
React developer toolをchromeのextensionで入れるとReact使ってるか分かるんですけど、かなり高い確率でReactが入ってます。
ウェブのUI側に関して言うと、最近だとReactがほぼ使われてます。
AI的なお話
現状のAIで可能なカバー領域
フロントエンドでAIでカバー可能な領域だと、現状ここらへんです。
- 言語 ⇒ UIコンポーネントなどの作成
- 画像 ⇒ UIコンポーネントなどの作成
- 一部のコードの修正や提案や生成
- 実装や修正などのヒントをもらう
一方でできないこととしては全体像(アーキテクチャやバックエンドロジックなどもろもろ)を踏まえて特定の要件を満たすような実装や修正はできないのが現状の状態です。
きっちり過不足なく人間からAIに伝えらればそういった全体像を考慮したうえでの実装ができるんですけど、そもそもそこらへんになると人間も一気に言語化することができないので、AIにそういった複雑な部分を伝えることが現状だとかなり難しいです。
ただ昔に比べるとAIサポートを受けることで実装はかなり楽になった印象です。
昔: Stack OverflowやGitHubのissueやドキュメントを参照して必死に探す
最近: AIにいろんな方面から聞きつつヒントやコードをもらって試しつつ修正
あとは仮に自然言語で実装や修正ができるようになっても、結局のところコードベースになるんで生産性は上がるけれどフロントエンド開発知識が必要という。
サーバーサイドもフロントエンドも枝葉の部分はAIがめっちゃ使える現状
フロントエンドがオワコンっていうテーマなので、サーバーサイドもAI含めて現状を書いておくと、サーバーサイドもフロントエンド同様にAIがめっちゃ使えます。
たまに「フロントエンドのUI側のがAIにリプレイスされやすい」みたいなことも見たり聞いたりしなくはないですが、バックエンド側の多少のアルゴリズムっぽい計算やクエリ生成などそういった部分含め枝葉の部分はAIが十分にサポートしてくれます。
ただ、フロントエンド同様にビジネス的な要件やアーキテクチャなど含めて複雑に複数の要素が絡み合うような実装だとサーバーサイドでも人間がAIにいろいろ伝えるのが現状だと厳しいです。
なので、AIに関して「プログラミングオワコン感」みたいなところに関して言うと、フロントエンドもサーバーサイドもたいして変わりません。
そもそもモダンなフロントエンドは難しいお話
API通信、状態管理、UIの描画、フレームワークの作法
モダンなフロントエンドだとAngular,Vue,Reactあたりが定番のフレームワークでどれかしらを使うことになります。
そんでどれかのフレームワークを使った時にもれなく、API通信、状態管理、UIの描画、フレームワークの作法の大きく分けて4つの知識が必要になります。
もっと厳密に言えば、TypeScriptなどの言語的な部分やデータ操作にはアルゴリズムのような知識も必要になりますし、バックエンド側を考慮した実装も必要になりますけど全部列挙するとキリがないので、大きく分ければ上に書いた4つの知識ってことにしておきます。
そんで、API通信、状態管理、UIの描画、フレームワークの作法(慣れ)がどれもそれなりに学習コストは高いです。
0から数ヶ月で余裕って状態にはなかなかならなくて、1年ぐらいそこそこ本気で仕事でやってようやくかなり慣れてきて1人称での開発ができるかなーってぐらいです。
ぶっちゃけ1年ぐらいだとそれなりに本気でやっていても、まだまだって感じではあるかなと実際やってみて思ってはいます。
ウェブ版のYoutube, Notion, TikTok
Notionだけメモアプリじゃね?というツッコミはありつつも、Youtube,TikTokやらNotionやらのUIをウェブ版で見てみれば分かる通り、クソリッチです。
フロントエンドエンジニアの仕事はざっくりとしたイメージで言えば、こういったUIを作ることが仕事になります。
ざっくりと書くならこんな感じでしょうか。
- ユーザーが特定のページを開く
- API通信してデータをサーバーサイドから持ってくる
- UIをそのデータを使って描画する
- UI上にあるユーザーとのインタラクティブな処理をハンドリングしてAPIと通信
UIを作るにしてもグローバルな状態管理や共通化されたコンポーネントやらデータを最新にする作業(optimisticやrefetchなど)も含めると、考慮することはクソ多いです。
プロダクトの複雑さによりますが、一言で言えば、フロントエンドの作業はおそらく簡単ではなくて「難しい」です。
特にアプリケーションがでかくなっていくとコンポーネントの共通化やらグローバルな状態管理が増えたりしていきがちなので複雑さは増していきます。
補足: ウェブ制作側のフロントエンドはややオワコンぎみかも
最後にウェブ制作に関しても書いておきたいと思います。
ウェブ制作ぐらいのコーディングはイケてるウェブデザイナーができたりする
例えば、wordpressでLP作ったり素のhtmlにcssで装飾したり簡単にjavascript使ったりする系なんですけど、ここらへんのプログラミングはコーディングもできるイケてるウェブデザイナーがハンドリングできます。
ウェブのフロントエンドエンジニアっていうくくりではほぼないと個人的には思っていて、コーダーって部類です。
コーダーだと、、、ウェブデザイナーの人が結構できちゃいます。
なので、いわゆるコーダーの作業をフロントエンドとして考えた場合はオワコン感というかスキルレベルとしては低めな区分になるので、会社に労働力を提供して稼ぐっていうスキームだとあまり稼げずオワコンかなとは思います。
AI出てきたので、そういった言語化しやすい部分のコード生成とかはかなり楽なのでウェブデザイナーが上位互換の存在になります。
ウェブ制作でプログラミングする場合は技術力ってよりかはビジネス力
結構このサイトでも度々書いてるんですけど、ウェブ制作で稼ぐ場合には技術力よりもビジネス力が大事です。
営業がセンターピンというか本質的な部分というかそこさえ抑えればいい感はあって、十分な単価の案件さえ取れてしまえば、あとは仕事したい人でコード書ける人なんて無数にいるので案件を取れるかってのが大事。
でもそうなると営業の人でいいじゃんってお話になるんで、いろいろと難しい。
まとめ
フロントエンドエンジニアはオワコンなのか?ってテーマで書いてみたんですけど、AI含めて考慮してもオワコンではない、、、というかAIに限って言うとフロントエンドもサーバーサイドと対して変わりません。
枝葉の部分はもうAIサポートである程度の技術力があるエンジニアならそれを上手に使ってヒントやそのまんま動くコードをもらって開発しています。
一方でどうしても自然言語にできないような部分に関していうと、そもそも自然言語に要件をすることが難しいので、AIにお願いができないってのがAIとプログラミングオワコンの繋がりというか関係性でした。
とっとりあえず、フロントエンドはオワコンではないのでは?というのが自分なりの結論です。