複雑さを手放すためのWebフレームワーク:FastHTMLがPython開発者に支持される理由

今回は、Why FastHTML Is One of Python’s Most Exciting New Frameworks という記事を読み、FastHTMLがモダンなWeb開発の複雑さをどのように解消しようとしているのか、そのアプローチに興味を持ったので内容を整理してみました。
案外、これで十分なシステムも多いかも…。
Web開発の世界では、数年おきに「これまでの当たり前」を問い直すようなツールが登場します。FastHTMLは、単なる新しいPythonフレームワークという以上に、私たちが長年受け入れてきた「モダンなWeb開発には複雑なフロントエンド層が必要である」という前提に疑問を投げかけています。
モダンな開発が抱える「見えない複雑さ」
現在の標準的なWebアプリケーションの構成を振り返ってみると、実は多くのレイヤーが積み重なっていることに気づきます。

もちろん、この構成が適切な場合もあります。しかし、多くのビジネスアプリケーションで行っているのは、「データの表示」「フォームの入力」「レコードの更新」といった、いわゆるCRUD操作が中心です。
これらを実現するために、TypeScriptの設定、npmの膨大な依存関係、クライアントサイドのルーティング、そしてフロントエンドとバックエンドの間でデータをやり取りするためのJSONシリアライゼーションなどを構築するのは、少々過剰な「調整(コーディネーション)」コストを支払っているのではないか、というのがFastHTMLの投げかける問いです。
FastHTMLが提示する「異なる道」
FastHTMLは、フロントエンドフレームワークを導入する代わりに、Pythonから直接HTMLを生成し、HTMXを活用することでインタラクティブなUIを実現します。
このアプローチの最大の特徴は、フロントエンドとバックエンドの境界をあえて曖昧にすることで、開発フローを劇的に単純化している点にあります。

なぜこれが「速い」のか
ここで言う「速さ」とは、単にリクエストの処理速度(スループット)だけを指すのではありません。開発者がコードを書き、変更を加え、本番にデプロイするまでの「開発サイクル」の速さを意味しています。
元記事では、以下のような趣旨の言葉が引用されていました。
「最速のアプリケーションとは、CPU命令の実行数が少ないものではない。毎週金曜日にチームが自信を持って変更を加えられるもののことだ。」
FastHTMLはこの「自信を持って変更できるシンプルさ」を追求しています。
既存フレームワークとの比較
FastHTMLと、私たちがよく利用する他のフレームワークを比較してみます。

FastAPIが「APIの構築」に特化し、Djangoが「すべての機能」を提供しようとするのに対し、FastHTMLは「PythonだけでモダンなUIを持つアプリを構築すること」に焦点を当てているのがわかります。
FastHTMLを採用すべきシーン
FastHTMLは、すべてのプロジェクトにおいてDjangoやReactを置き換えるものではありません。しかし、以下のようなケースでは非常に有力な選択肢になるかと思います。
社内ツールやダッシュボード
複雑な状態管理を必要とせず、素早くデータを可視化・操作したい場合。
プロトタイピング
アイデアを形にする際に、フロントエンドのリポジトリを別に用意する手間を省きたい場合。
計算ロジックが中心のアプリ
Pythonの強力なライブラリを活用しつつ、ユーザーが直感的に操作できるインターフェースを提供したい場合。
たとえば、フォームの送信ボタンを押したときに、ページ全体をリロードせずに特定のテーブルだけを更新するような処理も、FastHTML(HTMX)なら数行のPythonコードで実装できてしまいます。これは、Reactなどで行う「APIエンドポイントの作成 → fetch呼び出し → 状態の更新 → 再レンダリング」という流れに比べると、驚くほど直感的です。
まとめ
FastHTMLは、私たちが当たり前だと思っていた「フロントエンドとバックエンドの分離」という複雑さから、一度距離を置くための手段を提供してくれます。
もちろん、大規模なチームでフロントエンドとバックエンドを完全に切り離して並行開発する必要がある場合には、従来の構成が勝ることもあるでしょう。しかし、「より少ない抽象化で、より多くの価値を届ける」というFastHTMLの哲学は、開発の現場における一つの解になるかもしれません。
もし、日々のWeb開発で「JSONのやり取りや状態管理のためにコードを書きすぎている」と感じているなら、一度FastHTMLを触ってみる価値はあるかと思います。
参照記事
Why FastHTML Is One of Python’s Most Exciting New Frameworks
We Didn’t Need HTMX. Then It Quietly Solved Our Biggest Frontend Problem.
I Mass Refactored React To HTMX — Now My Junior Devs Outperform My Seniors
詳しくはこちらをご覧ください。