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など、用途に応じて選べる。
-
非同期処理との相性が良い:
asyncio
やuvicorn
の存在。 - AI支援との親和性が高い:自動補完、テスト生成、ドキュメント生成など。
- データ処理が得意:バックエンド+簡易分析のような用途に強い。
この変化を通じて気づいたのは、もはや単なる言語の切り替えではなく、「Web開発のスタイル全体が変化している」ということです。
SSRの復権:本当に“進化”したのか?
Maxime氏の言葉を借りると:
「昔は
.php
ファイル1つアップすればすぐにHTMLを返せた。今はビルド、ハイドレーション、ストリーミング、エッジ関数……とにかく複雑だ。」
確かに、私たちは以下のような“振り子”を経験してきました:
- 初期:SSR(PHP/ASP/JSP)全盛
- 中期:SPAブーム(React/Vue)でクライアント偏重
- 現在: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
:非同期処理の実装も簡単 -
Pyodide
やWASM
: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