
2026/02/16 0:37
「Gwtar:静的で効率的な単一ファイルHTML形式」
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
Gwtar は、静的で自己完結かつ効率的という「HTMLの三項格闘(HTML trilemma)」を解決する、新しい単一ファイル HTML アーカイブ形式です。
ファイルは通常の HTML ヘッダーに加えて
window.stop() を呼び出す小さな JavaScript スニペットを含み、初期ネットワーク活動を停止します。リソースが必要になったとき、スクリプトは tarball の該当バイト範囲を HTTP Range リクエストで要求します。サーバーは byte‑range リクエストに対応している必要があり、ファイルは MIME タイプ x-gwtar(拡張子は .gwtar.html)で配信されるべきです。ブラウザーは <html> タグをコンテンツスニッフィングし、非 Gwtar ブラウザーでもページがレンダリングできるようにします。Cloudflare などのサービスは
text/html から Range ヘッダーを除去するため、カスタム MIME タイプが必要です。ローカルで Gwtar ファイルを見る場合はブラウザーのセキュリティポリシーに制限されます。標準的なマルチファイルアーカイブへ戻すことで完全機能を復元できます。作成は PHP スクリプト(
deconstruct_singlefile.php)によって自動化され、SingleFile スナップショットの再構築が可能です。画像の再圧縮や tarball の後に PAR2 前方誤り訂正データ、ASCII GPG 署名を追加することもできます。大きなバイナリ資産(例:データベース)は <object> タグで埋め込み、再現可能科学ワークフローをサポートしつつ通常のブラウザーとの互換性を維持します。この形式は HTML 本体自体を圧縮しません。生成時やサーバー側で交渉された Brotli/Gzip などの方法で圧縮する必要があります。計画中の拡張には検証ツール、積極的なプリフェッチ、SingleFile との統合、多ページ対応、および改良された重複排除が含まれます。Gwtar は CC‑0 パブリックドメインライセンスで公開されています。
この改訂要約はすべての主要ポイントを保持し、不当な推測を避け、情報を明確かつ読みやすく提示しています。
Text to translate
**
Gwtar is a new single‑file HTML archival format that solves the “HTML trilemma”—being static, self‑contained, and efficient—by lazy‑loading assets through HTTP range requests from an appended tarball.
The file begins with a normal HTML header plus a small JavaScript snippet that callsto halt any initial network activity. When a resource is needed, the script issues a range request for the relevant bytes of the tarball; the server must support byte‑range requests and the file should be served with MIME typewindow.stop()(the extension isx-gwtar). Browsers content‑sniff the.gwtar.htmltag so that non‑Gwtar browsers can still render the page.<html>
Cloudflare and similar services strip range headers from, which is why the custom MIME type is required. Local viewing of Gwtar files is limited by browser security policies; converting back to a standard multi‑file archive restores full functionality.text/html
Creation is automated via a PHP script () that can rebuild SingleFile snapshots, optionally recompressing images and appending PAR2 forward‑error‑correction data or ASCII GPG signatures after the tarball. Large binary assets (e.g., databases) may be embedded withdeconstruct_singlefile.phptags to support reproducible‑science workflows while maintaining compatibility with ordinary browsers.<object>
The format does not compress the HTML body itself; any such compression must be applied during generation or by server‑side negotiated methods like Brotli/Gzip. Planned extensions include validation tools, aggressive prefetching, integration with SingleFile, multi‑page support, and improved deduplication. Gwtar is released under a CC‑0 public‑domain license.
This revised summary retains all major key points, avoids unfounded inferences, and presents the information in a clear, reader‑friendly manner.
本文
Gwtar – 新しいポリグロット HTML アーカイブ形式
Gwtar は、単一ファイルで自己完結型の HTML アーカイブです。
モダンな Web ブラウザなら、効率的に遅延読み込み(lazy‑load)できます。
このフォーマットは 静的(static)・単一ファイル(single file)・**効率的(efficient)**という三つの望ましい特性を同時に実現しています。
仕組み
- ヘッダー+tarball
Gwtar ファイルは、JavaScript ヘッダーが付いた HTML 文書で構成され、その後ろに tar アーカイブ(元の HTML ソースとすべての資産―画像・スクリプト・スタイルシート・メディアファイル)が続きます。 - Range リクエストによる遅延読み込み
ヘッダー内の JavaScript は
を呼び出し、ブラウザが残りを一括でダウンロードすることを防ぎます。その後、必要に応じて HTTP Range リクエストを行い、tarball の所定部分だけを取得します。window.stop()
これにより、通常の Web ページと同様に表示されつつ、資産は実際に必要になった時点でのみダウンロードされます。 - 単一ファイル・静的
アーカイブ全体がひとつのファイルですので、サーバー側での処理や特殊なホスティング設定は不要です。
標準 HTTP Range リクエストをサポートしているブラウザなら、すべての環境で表示可能です。
利点
| 機能 | 意味 | Gwtar |
|---|---|---|
| 静的(Static) | 元サイトや外部リソースに依存しない | ✔︎ |
| 単一ファイル(Single File) | 配布・保管・ホスティングが簡便 | ✔︎ |
| 効率的(Efficient) | 実際に必要な資産だけをダウンロード | ✔︎ |
Gwtar の作成
リファレンススクリプト
deconstruct_singlefile.php は、既存の SingleFile スナップショットを Gwtar に変換します。
php ./static/build/deconstruct_singlefile.php \ --create-gwtar --add-fec-data \ 2010-02-brianmoriarty-thesecretofpsalm46.html
スクリプトは画像資産の再圧縮も行い、必要に応じて PAR2 前方誤り訂正データを付加します。
実装上の詳細
- Range リクエスト処理 –
により初期全体ダウンロードが停止され、以降は HTTP Range リクエストで必要部分だけ取得。window.stop() - JavaScript 無効時のフォールバック –
ブロックで Gwtar を説明し、すべての資産を一括で読み込むプレーン HTML フォールバックを提供。<noscript> - 圧縮 & FEC – tarball 自体は未圧縮ですが、画像などは JPEG/MP3 のまま圧縮済みです。オプションで PAR2 FEC データを付加し整合性チェックが可能。
制限事項
| 問題 | 説明 |
|---|---|
| ローカル閲覧 | ブラウザはローカルファイルからの Range リクエストをセキュリティ上ブロックします。ローカルで閲覧したい場合は、Gwtar を通常のマルチファイルアーカイブに戻してください。 |
| Cloudflare の Range 削除 | Cloudflare は 用に Range ヘッダーを削除します。(または他の非標準 MIME タイプ)で配信すれば、Range リクエストが通過します。 |
Gwtar の拡張
- メタデータ・署名 – ASCII GPG 署名やカスタムメタデータを tarball に追加してもフォーマットは壊れません。
- 将来のバージョン – 内蔵検証、Brotli/Gzip の圧縮サポート、多ページアーカイブ、重複排除機能などが考えられます。
使用上の注意
-
可能なら MIME タイプを
で配信し、そうでない場合はtext/html
を使用してください。x-gwtar -
Range リクエストサポートを確認するには簡単な curl コマンド:
curl --head --header "Range: bytes=0-99" \ 'https://example.com/file.gwtar.html' -
ローカルテストでは tarball を展開して (
) 内容を確認するのが便利です。tar xf file.gwtar.html
Gwtar はオープンソースでパブリックドメイン(CC‑0)です。
ご自身のアーカイブワークフローに合わせて自由に改良・統合してください。