**Show HN:µJS ― 依存関係ゼロでHtmxやTurboに代わる5KBの軽量フレームワーク**

2026/03/07 17:59

**Show HN:µJS ― 依存関係ゼロでHtmxやTurboに代わる5KBの軽量フレームワーク**

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

要約

Japanese Translation:

Summary

µJS は、従来のマルチページサイトをフレームワークやビルドステップを追加せずにシングルページアプリケーション(SPA)と同様に感じさせる小型 JavaScript ライブラリです。内部リンククリックとフォーム送信をインターセプトして新しいページをバックグラウンドでフェッチし、DOM の変更部分だけを差し替えることで、ナビゲーションを高速かつスムーズに保ちます。このスクリプトは HTML を提供し、すべての標準 HTTP 動詞をサポートする任意のバックエンドと互換性があり、ホバー時にコンテンツをプリフェッチしたり、進捗バーを表示したり、View Transitions などのモダン API を使用したりできます。µJS の追加は簡単で、1 つの

<script>
タグを含めて
mu.init();
を呼び出すだけです。軽量(約5 KB gzipped)で依存関係がなく、PHP、Python、Ruby、Go、Node.js、または HTML を出力する任意の言語で構築されたサイトに適しています。

今後の計画としては、「パッチモード」を導入し複数ページフラグメントを同時に更新したり、カスタムナビゲーショントリガー用にデバウンスを設定可能にしたり、Server‑Sent Events(SSE)とパッチ更新を組み合わせてリアルタイムフラグメントストリーミングを実現することが挙げられます。これらの機能はページロード時間をさらに短縮し、UX を向上させ、開発者の既存スタックを維持しながら SPA のようなパフォーマンスを提供します。

本文

伝統的なウェブサイト

従来のウェブサイトは、リンクをクリックするたびにページ全体が再読み込みされます。
µJS はそれを変えます:内部リンクやフォーム送信を傍受し、バックグラウンドで新しいページを取得して、変更された部分だけを差し替えるのです。ブラウザは完全にはリロードせず、ナビゲーションが瞬時に行われるため、まるでシングルページアプリケーション(SPA)のように感じられます。

学習すべきフレームワークもなく、ビルドステップも不要です。既存のサイトに単一の

<script>
タグを追加し
mu.init()
を呼び出すだけで、内部リンクはすべて AJAX ナビゲーションになります。PHP・Python・Ruby・Go など、HTML を返すどんなバックエンドでも動作します。


主な特徴

  • 高速 – ホバー時にプリフェッチ、完全リロードなし、組み込みプログレスバー付き。ナビゲーションは瞬時に感じられます。
  • 軽量 – 1 ファイル(gz 圧縮で約5 KB)、依存関係ゼロ。ビルドステップ不要です。
  • 即導入 – PHP、Python、Ruby、Go、Node.js など、どんなバックエンドでも動作します。サーバー側の変更は必要ありません。
  • パッチモード – 単一リクエストで複数ページフラグメントを更新できます。ダッシュボードや複雑なレイアウトに最適です。
  • トリガー – 任意の要素・任意のイベントに対応。ライブ検索、ポーリング、フォーカスアクションなどに組み込みデバウンス機能付き。
  • HTTP 動詞 – GET、POST、PUT、PATCH、DELETE をリンク、ボタン、フォームで使用可能です。
  • SSE – Server‑Sent Events によるリアルタイム更新。パッチモードと組み合わせてマルチフラグメントストリーミングが実現できます。
  • 最新技術 – View Transitions API、idiomorph を用いた DOM モーフィング、Fetch API ベース。

クイックスタート

<!-- 1. スクリプトを読み込む -->
<script src="https://unpkg.com/@digicreon/mujs@1.4.0/dist/mu.min.js"></script>

<!-- 2. 初期化 -->
<script>mu.init();</script>

これだけで、内部リンクはすべてインターセプトされ AJAX 経由で読み込まれます。


動作概要

  1. スクリプトを追加
    ページに

    <script>
    タグを1つだけ挿入します。ビルドツールやバンドラは不要です。

  2. リンクがインターセプトされる
    µJS は内部リンクとフォーム送信のクリックイベントを監視し、外部リンクには手を加えません。

  3. コンテンツだけが差し替わる
    AJAX でページを取得し、対象部分だけを置き換えます。完全リロードは行われません。

同じ日のほかのニュース

一覧に戻る →

2026/03/08 5:43

CAS番号(化学物質登録番号)

## Japanese Translation: CasNumは、コンパスと定規を用いた幾何学的構成により任意精度算術を実装するPythonライブラリです。数値は平面上の点としてエンコードされ、加算・乗算・除算・論理ゲートなどの演算は、線/点、円、直線と円の交点などの5つの基本的な幾何学プリミティブから構築されます。最適化には、2倍による特殊ケース乗算や剰余計算で最高位ビット(2のべき乗)を除去する手法が含まれています。 このライブラリはGame BoyエミュレータのALUに組み込むことを想定しています。CasNumを統合するには、PyBoy の `opcodes_gen.py` を編集するだけで、他のエミュレータコードは変更されません。使用例としては、単純なRSA実装(`python3 -m examples.rsa`)や、幾何学ベースの算術のみで動作させるポケットモンスター 赤版(`python3 -m examples.basic`)があります。初回起動に約15分かかりますが、その後はPython の `lru_cache` によりほぼ 0.5–1 FPS で再起動できます。 ビュアースクリプト (`casnum/cas/viewer.py`) は幾何学的構成を可視化し自動ズームします。RSA例では手動ズームが必要になる場合があります。依存関係は、sympy(コア)、可視化用のオプション pyglet、テスト用 pytest‑lazy‑fixtures、RSA 用 pycryptodome、および任意で Euclid Postulate V です。インストールは `git clone --recursive` の後に `pip install -r requirements.txt` を実行します。使用している ROM(`2048.gb`)は zlib ライセンス、CasNum コアコードは MIT ライセンス、PyBoy は LGPL v3.0 でライセンスされており、このプロジェクトはオープンソースや教育プロジェクトに適しています。

2026/03/08 6:56

3T ブラインドスポット:米国の非営利団体

## Japanese Translation: **概要** 米国の非営利セクターは年間 **3兆ドル** を管理しており、これはイギリスのGDPを上回る金額ですが、そのうち実際にプログラム費用に充てられるのは **約36%(1,800億ドル)** に過ぎません。残りはオーバーヘッド、スタッフ給与、資金調達に使われています。登録済み非営利団体は **180万人以上** であり、その多くは収益が5万ドル未満の場合 IRS Form 990 の提出義務から免除されているため、セクター全体の大部分が公衆の監視から隠れています。 寄付者の信頼感は低下しています。**米国の寄付者の32%が5年以上前よりも慈善団体に不信感を抱いています**(BBB Wise Giving Alliance)、世界的にも三分の一が非営利団体への信頼を失っています(Gallup)。財務的負担は顕著で、**調査対象の非営利団体の36%が2024年末に営業赤字を報告し、10年間で最高水準となりました**。また **41%しか全職員に生活賃金を支払えません**。資金提供者は通常オーバーヘッドを約15 % に抑えるよう指示しますが、多くの非営利団体は管理費に **31 % 近くを使っており、過小報告やコーナーカットが頻発する** ― これは「非営利組織の飢餓サイクル」と呼ばれる現象です。 企業会計との大きな違いは顕著です。IRS Form 990 は年間一度提出され、公開までに **12–18か月** を要し、監査済み財務諸表や詳細なプログラム内訳が欠如しています。一方で公的企業は **10-K(年次)、10-Q(四半期)、8-K(重要事象)** を提出し、60日以内に監査済みの声明を求められます。このコンプライアンス中心の枠組みが可視性の問題を生み出し、寄付者の信頼を侵食しています。 国際的には、英国で実施された研究で **ウガンダの井戸の45%が非営利団体によって資金提供されましたが、機能していませんでした**。これにより 2億1,500万〜3億6,000万ドル相当のリソースが無駄になっています—非効率性の重大さを示しています。既存技術(カメラ・センサー・衛星画像)はリアルタイムで成果を追跡できる可能性がありますが、現在の報告規則ではそのような機能は義務付けられていません。 非営利セクターの将来は、コンプライアンス重視から真の透明性と説明責任への転換にかかっています。この変革なしには、非営利団体は営業赤字と寄付者の懐疑心を続けるでしょう。変革が実現すれば、信頼を回復し持続可能な資金調達を確保できる可能性があります。

2026/03/06 16:17

既存のブリックからLEGO NXTファームウェアをダンプする(2025)

## Japanese Translation: > 著者はPybricksプロジェクトで作業している際、オリジナルのファームウェアバージョン 1.01を動作させていた中古Lego NXTを入手し、このファームウェアの保存コピーが存在しないこと(利用可能なのは新しい 1.03のみ)に気づきました。 > > NXTのAT91SAM7S256 MCU上では、SAM‑BA PEEK/POKE を呼び出すことはできますが、それを行うとファームウェアを書き換えてしまい、古いMCUにはモダンなデバッグインターフェースが欠けているためJTAGも実用的ではありません。ロボットのプログラムは制限付きメモリ内で動作するバイトコードVMで走るので、著者は低レベル機能に焦点を当てました。 > > PyUSB を介して USB 「Read IO Map」コマンドを送信し、`0x100d3d`(フラッシュの約 3 KiB)に位置するVMの書き込み可能な関数ポインタ `pRCHandler` を読み取りました。32 KiB の書き込み可能 MemoryPool は NOP とカスタム ARM コードで埋めることができ、`pRCHandler` をこのプール内のアドレスにリダイレクトすることで任意の直接コマンドをそのコードとして実行させることができます。 > > 著者は、受信パケットから4バイトのアドレスを読み取り、そのアドレス上のワードを返す組み込みアセンブリを挿入し、元のハンドラを置き換えました。この乗っ取られたハンドラを利用して、USB経由で「direct」コマンドをバイト単位で送信し、フラッシュ領域全体(`0x00100000–0x00200000`)を読み取り、完全なファームウェアとユーザーデータを `nxtpwn-dump.bin` にダンプしました。 > > この脆弱性は、ストックファームウェアを実行している任意のNXTで機能し、未改変デバイス上でもベアメタルコードが動作できることを示しています。これにより、保存ツールや自己複製型マルウェアなどの可能性が開かれ、NXTファームウェアの整合性チェックにおける脆弱性も浮き彫りになっています。