🦔

SSRから始めるモダン全栈:バックエンド開発者としての技術シフトと実践

に公開

SSRが再注目される今、私たちは「再びPHPを発明している」だけ?

最近Mediumで話題になった記事「The Return of Server-Side Rendering: Are We Just Rebuilding PHP?」では、著者のMaxime氏がこんな主張をしていました:

「Next.jsやNuxtのようなモダンなSSRフレームワークは、実質的には“ラップされたPHP”であり、ビルドステップや抽象化が増え、バズワードで飾られているにすぎない。」

私は、長年PHPで開発をしてきて、今はPython + Vue + Nuxtで開発している者として、正直「たしかに……でも、それだけではない」と思いました。

本記事では、そんな「SSRの回帰」と「開発体験の変化」、そして「Pythonを用いた現代的なフルスタック開発」について、個人の実践ベースで共有してみます。


PHPからPythonへ:開発スタイルとツールの変化

私がWeb開発を始めた頃は、いわゆるLAMPスタック(Linux + Apache + MySQL + PHP)で、HTMLを手書きし、jQueryやSmartyを使い、Laravelの流行を体感してきました。

しかし、ここ1〜2年で私はPythonへ移行し、Vue + Nuxtと組み合わせる開発スタイルに変化。さらにGitHub CopilotなどのAIツールを活用することで、開発効率が格段に向上しました。

Pythonへ移行した理由:

  • フレームワークの選択肢が豊富:DjangoやFastAPIなど、用途に応じて選べる。
  • 非同期処理との相性が良いasynciouvicornの存在。
  • AI支援との親和性が高い:自動補完、テスト生成、ドキュメント生成など。
  • データ処理が得意:バックエンド+簡易分析のような用途に強い。

この変化を通じて気づいたのは、もはや単なる言語の切り替えではなく、「Web開発のスタイル全体が変化している」ということです。


SSRの復権:本当に“進化”したのか?

Maxime氏の言葉を借りると:

「昔は.phpファイル1つアップすればすぐにHTMLを返せた。今はビルド、ハイドレーション、ストリーミング、エッジ関数……とにかく複雑だ。」

確かに、私たちは以下のような“振り子”を経験してきました:

  1. 初期:SSR(PHP/ASP/JSP)全盛
  2. 中期:SPAブーム(React/Vue)でクライアント偏重
  3. 現在:Next.jsやNuxtが再びSSRを押し出す

しかし、今のSSRは本当により良くなったのでしょうか?

  • HTMLをリクエストごとに生成する
  • テンプレート(→コンポーネント)を使う
  • CDNキャッシュやストリーミング対応

これらは、PHP時代に既にやっていたことです。

Pythonでも同様の進化が見られます。たとえば:

  • Django + HTMX:部分更新&高速レスポンス
  • FastAPI + Jinja2:テンプレートでHTML出力
  • Islands Architectureとの共通性

つまり、“革新”とされている多くの仕組みは、「過去の再発明」であるとも言えます。


複雑化する開発環境と、私が選んだ解決策

現代のWeb開発では、もはや「.pyファイルを実行すればOK」では済みません:

  • 仮想環境 / DB / ミドルウェア
  • Node.jsや前端ビルドツール
  • .env管理、HTTPS証明書、リバースプロキシ……

私がFastAPI + Nuxt 3 + MongoDB + Redisで開発した際、環境構築だけで数日かかり、デバッグのたびに苦しみました。

そこで導入したのが「ServBay

  • Python / Node.js / Redis / MongoDB がプリセットで一括管理
  • 自動で hosts やSSL証明書を設定
  • GUIでプロセスを可視化管理
  • フロントとバックエンドを一括起動

前後の文脈を意識したい開発者にとって、こうした“統合型ローカル環境”は非常にありがたいものでした。


Python × Vue/Nuxt:リアクティブな新しいWeb開発の形

個人的に一番面白いと思っているのが、Pythonとモダン前端の組み合わせです。

  • FastAPI + Vue/Nuxt:APIベースのSPA構築に最適
  • HTMX / htm.py:局所更新やSSR強化
  • Celery + asyncio:非同期処理の実装も簡単
  • PyodideWASM:Pythonをブラウザで動かす試みも進行中

これにより、Inertia.jsのような「APIレス・リアクティブ開発」にも近いことが可能に。

また、これらの開発環境をServBayで一発起動できるのも、実践面ではかなり大きなメリットでした。


実践と選定:AI・フレームワーク・ツールの相乗効果

直近の2つの案件で使ったスタックはこちら:

  • バックエンド:FastAPI + MongoDB + Celery
  • フロントエンド:Nuxt 3 + VueUse
  • ローカル環境:ServBay
  • AI支援:GitHub Copilot + Gemini + 自作ドキュメントBot

結果的に、開発スピード・本番反映・バグ修正まで、LAMP時代と比較にならないほど快適でした。

私が感じた本質:

「技術が複雑になった」のではなく、「複雑さを吸収する仕組みが進化した」

  • ツール(ServBay等)で環境構築を抽象化
  • フレームワーク(FastAPI/Nuxt等)で設計負荷を削減
  • AIでコード補完・品質チェックを効率化

終わりに:「複雑さ」と共に歩む覚悟を持とう

私たちはよく「複雑さは敵だ」と言います。

しかし、ユーザーの期待が高まり、業務も多様化した現代では、適切に複雑性と付き合う力が求められています。

そして、その助けとなるのが:

  • 良質なフレームワーク
  • 開発体験を損なわないツール
  • 人間の思考を支えるAI

Maxime氏の言葉をもう一度引用します:

「今のSSRの“革命”とは、我々がようやくその有効性を思い出しただけなのだ。」

使用する言語がPHPでも、Pythonでも、Goでも、Javaでも構いません。

目的はいつも同じ。より早く、より確実に、価値あるプロダクトを届けること。

もしあなたも多言語開発や環境構築、SSR設計に悩んでいるなら——
この記事がヒントになれば幸いです。ぜひ意見や実践も聞かせてください。

Discussion