My Profile & Blog GitHub X Zenn Qiita Wantedly note しずかな
2023-05-06

サーバーサイドエンジニアが不要になるかもしれない未来

tech
ポエム

ブログ公開して初めての記事。
Next.jsの話が出てきて内容自体は追えていないけど何年後かにまじでバックエンドにAPIとかわざわざ作らなくなるんじゃなかろうかと本気で思って今日1日もやもやしてたので頭の中を整理するがてら記事にまとめてみました。

firebaseによるサーバー不要論

何年か前にもfirebaseでサーバー不要論みたいのが出てた気がしていて、当時はテック系のYoutuberが大丈夫って言うから大丈夫なんだくらいにしか思ってなかったけど、今では不要なところは不要なんだろうなと思う。

本当に0-1のフェーズで機能もそんなになくてリリースすることが最優先ならバックエンドはfirebaseで十分というプロジェクトもあるだろうと思う。

実際、本業でも認証部分はfirebaseを使用しているし、firestoreとCloud Functionsまで使えば初期のサービスなら問題ないんじゃなかろうか、わからんが。

加えて、supabaseのようなサーバーレスで使用できるDBもでてきたし、CloudflareやVercelのいわゆるエッジコンピューティング的なトレンドが止まらなくてどんどんサーバーより手前でできることが増えてきている

Cloudflare

D1が公開されたあたりからCloudflareの未来が来るんじゃないかと思っていてTypeScriptはもう標準語として書けた方がいいだろうなと思っていた。

モバイルはまだしもwebでエッジサーバーで全部やれてしまうような未来が来るならサーバーいらないじゃん。それでパフォーマンスも上がるなら文句ないじゃんて思った。

ただ、今のところCDNの環境で何でもできるわけではないのでCDNでできない処理に関してはまだサーバーは必要だろうと思っていた。

そして、Nextの話

Nextのリリース機能についてはちゃんと確認できてないけどサーバー処理が今までよりもカバーされてもはやAPIじゃんみたいなツイートを信じているのでもしかしたら嘘かもしれないけどこのツイートを信じてる。

今までもNestJSでフロントもバックもTypeScriptみたいなプロジェクトはけっこうあったと思っていてそれやるくらいならNextで全部いいじゃんみたいなことなのか?

Vercelでkye-valueストアみたいなのもたぶん使えるようになっていたと思っていてCloudflareでできることがVercelでもけっこうできるようになってきたのかなと思ってる。エッジファンクションも使えるようになったし。

Cloudfrareの方ではremixをWorkerと組み合わせてやるみたいな流れが観測できてたけど、フロントの今の主流がたぶんNextなことを考えるとVercel + Nextの未来がこれで見え出した気がする。

何にせよ今までとそんなに流れは変わってないのかもしれないけどフロントでできることが増えるたびにサービス初期の技術選択でTypeScriptだけでとりあえずいんじゃねみたいな流れが主流になるんじゃないかと感じていてこれに関してはリアルにそうなるんじゃないかと思ってる。

サーバーエンジニアとしての生き残りを考える

何だか心が折れてもうフロントエンジニアに転向しようかとも一瞬思ったけどそんなに世の中は甘くないでしょう。

JavaでエンジニアになりKotlinを知り、生き残るためにGoをやっているがこれからの未来には不要なのだろうか。いや、まだ大丈夫だ。

怒られそうだけどこんだけ静的言語が主流になっている中phpやRubyの案件がまだまだ多いのは過去それらで作られたプロジェクトを運用していく上でまるまる書き直そうとまでは当然ならなくて、新規サービスもまあ結局知り尽くした言語の方が安パイだろう、機会があればGo使っていきたいねくらいだからなんじゃないかなと思ってる。

JVM系に関しては圧倒的にエンプラ系と言うかSIerの案件で使い倒されてるのかなと思っていてよほどJVM系が使い物にならなくならない限り使い続けられるだろうなと思っている。

個人的にはKotlin推しなのでweb系でもっとKotlin盛り上がればいいのになと思うけどGoと比べた時にあえてKotlinを選ぶ理由がほとんどないのでまあ採用率が増えていく望みは薄いだろうと思っている。Javaを使い続けるくらいならKotlinにすればいいのにとは思うけど。

何が言いたいかと言うと現在、フロントとサーバーの分業がそれなりにうまく機能している会社があったときに将来的にサーバーが廃れてもわざわざサーバーAPIをフロントに移植してフロントとサーバーの分業を無くしはしないんじゃないかなということ。ただの願望だけど

ただ、スタートアップなどサービス初期のプロジェクトで人的リソースも期限もないよみたいな状況では全部TypeScriptで行きますかみたいな選択は増えてくんじゃないかなと思う。だってフロントもAPIも自分で実装するのにわざわざフロントはTypeScript、APIはGoみたいなの面倒くさいでしょう。

あと、個人開発とかハッカソンとか自分1人で何か作る時とかもTypeScriptで全部書けるならそっちのが楽そう

ということで、このままフロントのできることが増えていきサーバーでAPI実装する必要なくね?みたいな未来がきたとしてもサーバーエンジニアが必要とされないプロジェクトは多くなるかもしれないが、一定数はサーバーエンジニアの居場所は残るという結論というか自分への言い聞かせみたいなところで落ち着いた。

あと、あれだ、web中心に話していたけどネイティブもあって、結局APIとして公開したいってのはあるだろうからそういったニーズでもサーバーがAPIを書く仕事は残っていくとは思う。

マイクロサービスについて

話は変わるけどサーバー側でイケてる技術スタックといえばkubernetesとgRPCを使用したマイクロサービスアーキテクチャでしょう。では、このマイクロサービスがフロントの流れにとって変わるかというとそれは話が違くて、マイクロサービスはマイクロサービスで解決したい課題があったわけでそれらを捨ててサーバーをなくすような未来はまあこないと思っている。

ただ、マイクロサービスを採用するのが今後どのくらい増えていくのかと言えば全然わかんなくて、開発したことないから適当だけどマイクロサービスを採用するくらいエンジニア組織として技術力も体力も十分ないとなかなかじゃあやりますかとはならないと思っていて今マイクロサービスをやっている組織はそのままやり続けるだろうけど、今後マイクロサービスを始める組織が増えていくかと言うとわからなくて、もし増えないならモノレポサーバーの流れになるのでじゃあフロントで全部やればよくねになってしまうかもしれない。

本当にフロント中心の開発が来るとAWSのようなインフラも使わなくなるわけどインフラエンジニアの仕事もなくなる可能性があるのか

RustやFlutterの世界線

最後にその他の世界線も考えてみた。

RustというかWasmの世界はどうなるのか興味はあって、いろんなところでWasmの話を聞くことが多くなったけど実際に開発者がWasmを書いてなんかするのはまだ来ないのかなとは思ってる。来たとするならCloudflareのようなエッジサーバー上のWasmランライムでRustやGoのコードをWorkerとして動かせるよみたいな世界で、なんならUIもRustで書くみたいなことなのかなと思ってるけど、Rustをみんな書き出す世界が想像できないのでそんなにトレンドになることはないのかなと思ってる。

あとは、意外とFlutterの世界線。WebがWasmの採用でだいぶ高速になり使い物になるようになってきたという話を聞いた時にiosもandroidもwebもFlutterで書けて、なんならサーバーもFlutterで書けるらしいから全部Flutterで行くみたいなプロジェクトは出てくるのかもしれない。

それこそ、WasmのコンパイルができるならCloudflareで動かせるんじゃないだろうか。

まあでも今ReactやNext書いてる人たちが全員Flutterやり出すかと言うとこれも想像できないので標準になることはないだろうなと思ってる。

ただ、まじでCloudflareで動くなら全部Flutterでやってますっていう層が一定層いる未来はくるかもしれない。

まとめ

サーバーの仕事は残る!!という希望的観測
本当にTypeScript頑張らないと仕事なくなるみたいな時がきたら全力でTypeScriptやろう。今はサーバーエンジニアとして生きていくために自己研鑽を続けるしかない。

今からエンジニアやるならフロントかFlutterでモバイルやったほうが将来的な不安なさそう、まだ20代だったらだけど

また気が向いたらブログ書きます🐼