
2026/10/15 4:29
エレガントなカールのウェブサイトを
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
本記事では、nytpu.com のユニークで機能的な Web 端末のバージョンを紹介しており、ANSI エスケープコードを使用してコマンドライン内で直接レンダリングされます。これらのコード(
\x1b[ などという単純なテキストコマンド)は画面の色や形状を制御するため、特別なソフトウェアなしでブラウザをレトロなターミナルのように動作させることができます。著者は、複雑な外部ライブラリや ratatui などのツールに依存する代わりに、2022 年以降作成(4 年以上前に実装済み)の軽量フォーマット言語である Gemroff マークアップを使用して手動で構築しました。カスタムの静的サイト生成器が設定されており、HTTP、Gemini、Gopher プロトコルのいずれでも同時にコンテンツを配信します。特に、サーバーには curl などのクライアントとの互換性を確保するための X-Original ヘッダオーバーライドが含まれています。このプロジェクトは際立っており、trinkey のバージョンや proot.party のバージョンなど、以前試みられたものは既に 2026 年末時点で非機能的になっています。Windows ユーザーは標準のコマンドシェルがデフォルトでこれらのグラフィックをブロックするため、明示的に curl.exe を使用する必要がありますが、このセットアップはマルチプロトコルに対応したターミナル愛好家向けのシームレスなブログアクセスを提供します。ユーザーは curl nytpu.com/gemlog/2026-03-18 または curl nytpu.com を通じて curl バージョンにアクセスでき、Windows の cmd.exe は ANSI エスケープコードをデフォルトで無効にしている点、PowerShell ではエイリアスではなく curl.exe を使用する必要がある点を留意してください。本文
ターミナルで表示するための curl バージョンサイトを実現した話
📅 記事情報
- 初版公開: 2026 年 3 月 18 日
- 最終更新: 2026 年 10 月 14 日
💻 curl コマンドでのアクセス方法
以下のコマンドを実行することで、ターミナル上で動作するサイトを閲覧できます。
curl nytpu.com/gemlog/2026-03-18 # またはトップページへ curl nytpu.com
※ Windows 利用者への注意
で ANSI エスケープコードが無効なのは OS の仕様です。cmd.exe- PowerShell では
コマンドがcurlに別名割り当てられているため、明示的にInvoke-WebRequestを使う必要があります。curl.exe
📝 この記事の背景
- 以前に Fediverse 側で少しだけ投稿したが、詳細には触れていなかった。
- 「複雑そう」と考えられがちだが、実際はそれほど複雑ではない。
- 読者から「どのように実現したのか?」との質問を受け、7 ヶ月ぶりの記事として執筆するに至った。
💡 アイデアの源流
- このコンセプトは以下の curl サイトから着想を得たもの(自発案ではない):
- [
](https://curl trinkey.com) (※現在機能なし)trinkey.com - [
](https://curl proot.party) (※現在機能なし)proot.party
- [
- 両者とは異なるアプローチを採用しているが、非常に面白いコンセプトには感謝する。
🎨 クライアント向け ANSI マークアップの生成方法
1. 基本方針
- インデックスページとAbout ページは完全に手書き。
ライブラリなどオンザフライ生成ツールを使う利便性はあるが、自前で書く方が効率的だと感じた。ratatui
2. 実装の詳細
- ESC[` (\x1b[) を Vim レジスタに保存し、即座に貼り付ける。
- グラフィック用エスケープコードは Wikipedia を参照して確認。
- 統一されたスタイルを選び、Gopher バージョンのページを手本にした。
⚙️ ブログ全体を curl で閲覧する仕組み
1. Gemroff と SSG の活用
- Gemroff: 独自開発のブログ用マークアップ言語(4 年以上前)。
- 機能: プレーンテキストに ANSI マークアップを出力可能。
- 活用方法:
- ドラフトプレビュー用に導入。
- 静的サイト生成器(SSG)に統合して自動生成。
2. テンプレートと構成
- ブログ記事用・一覧用テンプレートを手書き。
- SSG の設定ファイルにわずかな追加行を記述するだけで完了。
3. 「簡単」だった理由
- 独自のカスタムマークアップ言語を使用。
- 事前に設計段階で以下の判断を行っていたため:
- HTML 単体のみをサポートしないモジュール化された SSG の採用。
- サイトを HTTP / Gemini / Gopher の 3 つで同時ホストしている実績がある。
4. 限界と展望
- 手書きページだけで完結するため、ちょっとしたトリック。
- 閲覧時間は数分程度のため、真面目な用途には向かないかもしれないが、楽しむには十分。
🔧 サーバーサイドの実装 (Nginx)
実装ポイント
- Nginx 設定をわずかに変更するだけで実現。
- 他のサーバーでも同様のアプローチが可能と推測される。
重要なヘッダー設定
add_header X-Original true;
- 目的: オバーライドヘッダーを追加し、HTTP レスポンスを無改ざんのまま取得しつつ、すべてのコンテンツを静的に配信する。
📢 結論
- 最初は「なんとなく説明つき」と思っていたが、ウェブサーバーや ANSI コードの一般的な使い方とは異なるアプローチのため、読者の困惑も当然。
- 今後もこうしたトリックを用いたサイトが増えると嬉しい。
⚠️ 三点リーダー(EM DASH)と LLM について
事実関係
- Gemroffには 2022 年 11 月以来、三点リーダー専用のマークアップ要素が存在する。
- LLM の課題:
- 人間の文章で三点リーダーが使われていない場合、LLM はそれを学習していない。
- 実際の著者からコピーされたテキストのみで訓練されているため、三点リーダーを使いこなせない。
私の見解
-一文に二十個もの傍注を挿し込む必要はない。
- それによって三点リーダーを使おうとする思考自体は考えられない! ↩︎