覚書:最新の開発ではフロントエンド・バックエンドの区別はなくなる
フロントエンドとバックエンドの区分けは不要
エンジニアの役割分けとしての「フロントエンド」と「バックエンド」という区分けはもはや時代遅れ。技術の進化によって、この境界線は曖昧になりつつあり、現在は「プロダクトエンジニア」や「アプリケーションエンジニア」といった名称で統一するべきだと提案。
理由として、フロントエンドフレームワーク(例: Next.js)の進化が挙げられ、従来バックエンドで行われていたタスクをフロントエンドでも担えるようになっている。これにより、両者を区分けする意味が薄れたという主張。
Next.jsなどのフレームワークの進化の話
Next.jsを中心にフロントエンドフレームワークの進化が解説される。以前の「Pages Router」に加え、新たな「App Router」が登場し、React Server ComponentsやServer Actionsなどの機能が強化。
これらにより、以下のようなバックエンドの役割をフロントエンドでカバー可能に:
データベース操作(クエリ実行など)
サーバーレス機能の利用(例: ルートハンドラー)
これが開発者体験(DX)やユーザー体験(UX)の向上にもつながる。
RESTfulでもGraphQLでもなくRPC
従来主流だったRESTful APIやGraphQLではなく、RPC(Remote Procedure Call)が今後のアプリケーション開発の中心になると予想。
RPCは、関数をフロントエンドから直接呼び出す仕組みで、以下の利点がある:
型の安全性が高い
コードの効率が良い
設計の単純化が可能
具体例としては、Next.jsのServer ActionsがRPCの一例とされる。
フロントエンドもバックエンドも歩み寄りが大事
技術の進化により、フロントエンドとバックエンドの知識が融合していく中で、エンジニアには次のことが求められる:
バックエンドエンジニア:フロントエンドフレームワーク(例: Next.js)のアーキテクチャを学ぶこと。
フロントエンドエンジニア:バックエンドの基礎知識(例: データベースや認証)を取り入れること。
特に境界が曖昧になっている領域に適応する姿勢が重要だと強調。
Vercelがよすぎるという話
Next.jsを開発したVercelが提供するクラウドプラットフォームの優位性について解説。具体的には以下の点が挙げられる:
オブジェクトストレージ(例: R2)の提供
KVS(Redis)の利用サポート
サーバーレスでの簡易デプロイ
これにより、フロントエンドエンジニアがバックエンドに依存せず、効率よくアプリケーションを構築可能に。
常時稼働サーバーの必要性について
以下のような特殊なケースを除き、常時稼働するバックエンドサーバーは必要なくなりつつある:
動画エンコーディング
大量のバッチ処理
継続的な機械学習
多くの企業ではサーバーレスアーキテクチャを採用し、効率的なリソース活用が可能と指摘。
Framework-defined infrastructureとは
「Framework-defined Infrastructure(FDI)」とは、フレームワーク自体がインフラ構成を自動的に決定する概念。
具体例:
Next.jsでReact Server ComponentsやServer Actionsを使うと、バックエンドのインフラが自動的に構築される。
このような仕組みがエンジニアリングの効率化を促進し、グローバルのエンジニアが採用するアーキテクチャの一つとして紹介。
後ろ側はプラットフォームエンジニアに統一?
バックエンドのインフラや基盤を整備する役割が「プラットフォームエンジニア」として統一される可能性がある。具体的な役割には以下が含まれる:
認証やログ基盤の構築
CI/CDパイプラインの整備
社内共通ライブラリやミドルウェアの開発
これにより、従来細分化されていたインフラエンジニアの役割が集約されると説明。