React.js をコードベースから削除し、UI のインタラクティブ性を Htmx で対応させる(2023 年)

2026/07/27 18:58

React.js をコードベースから削除し、UI のインタラクティブ性を Htmx で対応させる(2023 年)

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

Misago プロジェクトは、複雑な Django/React 双アーキテクチャをサーバーサイドレンダリングおよび HTMX に置換することにより、パフォーマンスの大幅な向上とメンテナンスの簡素化を目指しています。この戦略的転換では、重厚な JavaScript フレームワークの使用ではなく、軽量な HTML ベースの動的「アイランド」——つまりページ内の小規模でインタラクティブなセクション——の利用を優先します。このアプローチを採用することで、チームは現在アプリケーションの低速化を引き起こしている不要な大規模な JavaScript ファイルと冗長なコードの重複を取り除きます。コアとなる管理パネルは標準的な Django ビューのまま、フォームの自動処理機能を維持する一方で、フォーラムのような外部公開領域は HTMX へ移行し、フルページの再読み込みなしで動的に更新を可能にします。テストでは既に成功が見られ、例えば HTMX を用いてスレッドリストを書き換えることで、主要な JavaScript ファイルサイズを 615KB から 530KB に削減することに成功しました(同様の傾向は圧縮サイズおよびベンダーライブラリにも見られます)。以前検討されていた Django ビューの完全廃止や、Next.js とようなフル SPA フレームワークへの切り替えは、このソフトウェアが部分的インタラクティブ性において既に成功を収めているため、不要と判断されました。移行は 2024 年後半を通じて小さなステップで進行し、ユーザーオプション更新などのフルページ再読み込みが必要なアクションに対して一時的な期間を設けつつ、スムーズな移行を確保します。結果として、この変化は利用者にはローディング速度の向上、開発者には 2 つの別々のコードベースを維持する必要性の削減をもたらすほか、フォーラムソフトウェアにおける軽量ウェブデザインの強力な先例を確立します。

本文

Misago のアーキテクチャ再構築:React.js から HTMX と Django ビューへ移行する

Misago の既存アーキテクチャは**「サーバー側レンダリング(Django)」と「クライアント側インタラクション(React.js)」のハイブリッド構成**でした。しかし、このアプローチには重大な問題点があり、現在は技術スタックを抜本的に見直しています。

既存の実装仕組み

現在の Misago が動作するプロセスは以下の通りです:

  • 初期リクエスト: ユーザーがサイトをアクセスすると、Django のビューがデータ収集と HTML テンプレートの生成を行います。
  • JSON データの返却: ダミーのフォーム alongside HTML に加えて、JSON 形式でデータを返します(この段階ではインタラクションは不可)。
  • クライアントサイド処理: JavaScript がダウンロードされ、ページ内の Django 生成 HTML をReact.js コンポーネントによる HTML に置き換えます
  • UI の有効化: ボタンが機能し始め、タイムスタンプなどが更新されます。

React.js アプローチの課題

この「ダブルレンダリング(二重実装)」の手法には以下の明確な問題点があります:

  • コード重複: 多くのページが Django テンプレートと React コンポーネントの両方で実装されています。
  • カスタマイズの困難さ: HTML カスタマイズを始めた者が失敗しやすくなります。Django テンプレートを修正しても、表示直後に React による置換が行われるため効果が薄れます。
  • 全ビューでの重複実装: ユーザー公開ページはすべて Django と React の両方を必要とし、API と JSON シリアライザーの整備も別途求められます。
  • パフォーマンス低下: 事前データ生成のための JSON シリアライゼーションにより応答が遅くなります。
  • 翻訳ファイルの肥大化:
    django.po
    djangojs.po
    に重複する翻訳メッセージがあり、JS ファイルサイズが増大します。
  • モバイルでの重さ: 大量の JavaScript が古くて動作の遅いデバイスでパフォーマンスを悪化させます。
  • プラグイン開発の複雑化: カスタム HTML の挿入には Django と React の両方への対応が必要で、ビルドプロセスも複雑になります。

検討された代替案と HTMX の選定

上記課題に対処するために検討された解決策は以下の 2 つでした:

  1. フル SPA 化: SEO を考慮した最小限のサーバーサイドレンダリングを残し、UI 全体を React.js に依存させる(API ファースト)。
  2. ハイブリッドフレームワークの採用: Django を API として使い、Next.js や Remix.run などを導入する。

しかし、これらは過剰でした。現在でも「サーバー側でレンダリングし、必要最小限のクライアントサイド処理を行う」という手法に満足しているフォーラムソフトウェアは多数存在します。モデレーション、ウォッチ登録、返信作成など、重要な機能はフルページリロードなしで実装可能です。

その代わりとして選定されたのが HTMX です。

HTMX とは?

  • 小さなライブラリ: 開発者が HTML の特定部分を「動的アイル」として指定し、インタラクションによってサーバーから新しい HTML を取得する仕組みを提供します。
  • 実装例: スレッドリストのカテゴリ変更で、選択したカテゴリのリストのみを Django から取得新 HTML で取り替え、他の要素(ナビゲーションや検索結果)は維持できます。
  • バックエンドの簡素化: 特定のアイル用 HTML を返すだけでよく、JSON シリアライゼーションも不要です。
  • 直感的な API:
    $.get("url", "#outlet")
    のような jQuery の宣言的スタイルや Rails の Turbolinks に似た挙動を提供します。
  • メリット: スクロールエンドレスの複雑さを避けつつ、シンプルさを保ちます。

移行による改善と数値データ

Misago から React.js 系ライブラリを削除し、Django ビューと HTMX を採用することで大幅な軽量化が図られました。

JavaScript サイズの削減状況(移行前 → 移行後)

ファイル移行前 (圧縮後)移行後 (圧縮後)削減量
misago.js615 KB (124 KB)530 KB (99 KB)-25 KB
vendor.js679 KB (214 KB)-(削除)
django-i18n.js102 KB (25.4 KB)-(統合/削減)

スレッドリストの書き直しによる改善

スレッドリストを HTMX ベースに完全に再実装した結果:

  • misago.js: 615 KB → 530 KB(圧縮後 99 KB
  • 削減率: 約 -48 KB (圧縮後 -8 KB)

フォーラムオプションページの統合

「フォーラムオプション」ページを「アカウント設定」ページに統合し、HTMX を活用しました:

  • misago.js: 578 KB → 530 KB(圧縮後 99 KB
  • 削減率: 約 -37 KB (圧縮後 -17 KB)

オンデマンド読み込みライブラリの削減

React.js を除去したことで、不要な依存ライブラリも排除できました:

  • hljs.js: 144 KB → 必要な時にのみ読み込み可能(削減傾向)。
  • zxcvbn.js: 820 KB (圧縮後 430 KB) をオンデマンドから除外・軽量化。

移行期間中の注意喚起

完全に切り替わるまでの移行期には、以下の点にご注意ください:

  • 一部機能の一時的制限: React.js および一部の HTMX 機能が一時的に利用できない可能性があります。
  • マルチページアプリケーション(MPA)の運用:
    • ユーザー設定などの一部ページでは、リンククリックやフォーム送信時にフルページの再読み込みが発生します。
    • 投稿への「いいね」やアンケート投票など、リロードが許容できない箇所には、AJAX や HTMX を活用したプレースホルダーの配置を準備中です。

この再構築により、Misago はシンプルさを維持しつつ、より軽量で保守しやすいシステムへと進化しています。

同じ日のほかのニュース

一覧に戻る →

2026/07/28 7:03

オープンウェイトモデルに関する当社の立場

## Japanese Translation: Anthropic の CEO ダリオ・アモデイは、オープンウェイトの AI モデルに対する全面的な禁止に反対し、同社がそのような制限を支持したことはないと主張している。彼は、危険な能力を持たないオープンウェイトモデルを不可欠な公共財として位置づけ、主な国家安全保障上の懸念として、共産主義中国(CCP)などの権威主義体制が、恒久的な軍事優位や抑圧のために優れた AI を構築しようとするリスクを挙げており、このリスクは副大統領ヴァンスの最近の警告や米国当局による世界的競争力に関する情報評価によって強調されている。彼の二次的な懸念には、サイバー攻撃、生物学的脅威、またはアライメント(調整)失敗への悪用が含まれる。アモデイは、オープンウェイトモデルはガードレールの実行が難しく、リリースされた重み(weights)を回収できないため、閉鎖型モデルよりも高いリスクをもたらすと指摘している。これらの脅威を緩和しつつ有益なイノベーションを維持するため、彼は以下の目標志向戦略を提唱している:中国への高度な半導体および装備の輸出制限、モデルの密輸入や産業規模での蒸留(distillation)操作への取り締まり、そして公開前に十分に能力のあるすべてのモデルに対して安全性テストの実施を義務付ける。彼は、全面的な禁止は効果的でもなく、Anthropic が求める解決策でもないとし、代わりに回収不能なシステムにおけるリスク管理を進めつつ、安全性にコミットしている者にとってのアクセスを維持することを主張している。

2026/07/25 16:55

Go の新しいガベージコレクションがヒープを走査していく様子

## Japanese Translation: Go の新しい Green Tea ゴー・コレクター(v1.26 以降のデフォルト)と C# を比較した評価から得られる主な示唆は、CPU キャッシュ効率とメモリアン断片化の間にある明確なトレードオフである。Green Tea は連続したスパンへの割り当てを最適化することでキャッシュミスが大幅に減少するが、オブジェクトを解放する際に移動やコンパクト化を行うことはできない。その結果、C# の移動式コレクターが積極的に関与してヒープをコンパクト化し OS に散在ページを返すのと異なり、Go は大量の解放後(例:90% のオブジェクトを解放)も未解放オブジェクトがばら撒かれたままとなる。 裸の金属 x86 システムでのテストにより、この断片化は介入なしに持続することが確認された。しかし、開発者は `unsafe` ポインタを使用して残存するオブジェクトを手動でパッケージ化することでこの制限を回避し、実質的にコンパクト化を模倣してシステムリソースを取り戻すことができる。結論として、Go は真の CPU パフォーマンス向上を提供するものの、複雑な回避策なしにヒープをコンパクト化できないという Go の不具合は依然として大きな制約であり、長期的動作を必要とし効率的なメモリ回収を要求するアプリケーションにおいては、C# が優れたアーキテクチャ上の振る舞いを提供することが組織にとって認識すべき点である。

2026/07/28 4:58

HN ランチ:Rise(YC S26)——廃棄物ガスを貴重な化学物質に変える

## Japanese Translation: Rise Reforming は、シカゴ郊外の下水処理施設でパイロットプラントの建設を正式に開始し、2026 年 7 月の稼働を目指しています。2025 年 12 月には 65 万ドルの前種投資を受け、初雇用の Nina Kritikos を擁し、同社は 2026 年 4 月に 1,800 時間以上の連続運転を通じて安定した概念実証結果を達成しました。また、プロジェクトはバイオガス生産者との拘束力のある供給契約および複数の覚書(MOU)を確保しています。 同社の固有技術では、下水処理廠などの発生源から排出される国内の滞留バイオガス(廃棄ガス)をメタノール、ジメチルエーテル(DME)、ジメチルカーボネート(DMC)といったグリーン化学物質に変換します。このアプローチは、化石燃料の採掘・精製・輸送に伴う環境コストを回避する低価格な代替策を提供することで、従来の石油化学製品と直接的に競合しています。主要な革新点は、許可手続きの長期遅延なく特定の施設の要件に合わせて迅速に導入および容易にスケールアップ可能なモジュール式でコンテナサイズの設計にあります。 Rise Reforming は 2026 年 7 月、成長とスケールアップのさらなる加速のために Y Combinator の S26 バッチに参加しました。廃棄物を価値ある化学物質に変えることで、即座の財政的リターンを提供しつつクリーンなエネルギー未来を支援することを目的としています。過去のマイルストーンには、2025 年 5 月に European Aerosols Federation 2025 Start-Up Award を受賞し、George Rose が 776 Foundation から Climate Fellow に選出されたことが含まれます。

React.js をコードベースから削除し、UI のインタラクティブ性を Htmx で対応させる(2023 年) | そっか~ニュース