ハクソク

世界を動かす技術を、日本語で。

テキストベースのウェブブラウザ

概要

  • テキストベースブラウザは、現代HTMLの新機能にほとんど対応していない現状
  • ELinks, Lynx, w3mを使った検証結果のまとめ
  • HTMLの進化とテキストブラウザの対応状況のギャップ
  • 主要なHTML要素ごとの挙動と評価
  • テキストブラウザの今後と限界についての考察

テキストベースブラウザと現代HTMLのギャップ

  • browshはFirefox依存のため本記事では対象外
  • 本記事ではELinks, Lynx, w3mの3つを検証対象に選定
  • テキストベースブラウザはCSSやJSを無視し、純粋なHTMLのみを表示
  • 近年のHTML新機能に対する対応不足が顕著
  • 主要ブラウザでの「クロスブラウザ対応」とは異なる現実

テキストベースブラウザでの各HTML新要素の挙動

Details(ディスクロージャウィジェット)

  • <details>要素は常に「開いた」状態で全内容を表示
  • <summary>のみ表示する動作は未実装
  • 内容が冗長になるが、最低限の情報提示は可能
  • 評価:許容範囲

Data lists(データリスト)

  • <datalist>要素は完全に無視される
  • Lynxでは「bad HTML」として警告
  • <input>フィールドとしてのみ機能
  • アクセシビリティ面での課題も指摘
  • 評価:どうでもいい

Dialogs(ダイアログ)

  • <dialog>要素のモーダル・非モーダル表示不可
  • 全てのダイアログ内容が表示される
  • **method="dialog"formmethod="dialog"**も未対応
  • 評価:問題あり

Popovers(ポップオーバー)

  • Popover APIは全く機能せず、内容がそのまま表示
  • Invoker Commands APIも未検証だが期待薄
  • 評価:ほぼ問題あり

Inert content areas(非アクティブ領域)

  • inert属性による非アクティブ化が無効
  • インタラクティブ要素も普通に操作可能
  • 評価:悪い

Hidden content(非表示コンテンツ)

  • hidden属性の内容も全て表示されてしまう
  • CSSのdisplay: none相当の隠蔽がHTMLだけでは不可能
  • プログレッシブエンハンスメントの妨げ
  • 評価:致命的失敗

Visually hidden content(視覚的非表示)

  • HTMLのみでの視覚的非表示手段は未実装
  • .visually-hiddenや.sr-onlyなどCSS依存
  • 仮にHTML実装されてもテキストブラウザでは表示される
  • 評価:今後に期待

テキストベースブラウザの意義と今後

  • テキストベースブラウザは今も一部ユーザーに愛用されている
  • 現代HTMLとのギャップ拡大が進行中
  • w3mやLynxのようなテキストブラウザは今後さらに衰退の可能性
  • アクセシビリティやレガシー環境への配慮は必要だが、主流のWeb体験とは乖離
  • 今後のWeb技術の進化に取り残される懸念

Hackerたちの意見

: https://chawan.net/
それを使ってCD Romanceから変な日本語翻訳のROMをダウンロードしてたことがあるよ。著作権者が「合法的に買え」って言う前に…これらのゲームは西側では絶対にリリースされないからね。ヨーロッパでは、ほとんどの人がエミュレーターでEarthbound(アメリカ限定のSNES/MDも)をプレイしてた。それが任天堂がSuper Smash Brosのロースターに入れた理由だよ。彼らはエミュレーションを嫌ってるって言うけど、これらのツールは他のシステムとは違ってレトロエミュレーションにしっかり根付いて、新しいサガを西側に持ってきたんだ。しかも無料でね。レトロ海賊版のせいでお金を失ったって言うけど、実際には倉庫に眠ってる物理的なゴミのために無料のマーケティングを得たってことだよ。今は100%リブレゲーム派だけど、インディーやFOSSの哲学がたくさん重なってる:FreedroidRPG、Battle for Wesnoth、Nethack/Slashem、ReTux、SuperTux2… edbrowseに戻るけど、メール、IRC、SQLクライアントとしても使えるし、ed/viみたいにスクリプトも書けるから、ここで魔法ができるんだ。
edbrowseは素晴らしい。ほとんどの人、特にこのOPみたいな人は、「TUI」(ターミナルを使ってGUIを表示する)と「CLI」(すべてのインタラクションが書かれたコマンドで出力が得られる)との違いを本当に理解してないと思う。私は視力は完璧だけど、CLIの線形性の快適さが本当に好きなんだ。コンピュータに何かを聞くと、答えが返ってくるからね。(だから自分のCLIブラウザを開発してるけど、edbrowseよりグラフィカルであまり進んでないんだ。)
かっこいいね、教えてくれてありがとう!普段はw3mを使ってるけど、これはHTTPクライアントと普通のウェブブラウザの中間的なニーズに応えてくれる感じ。これならもっと便利かもしれないね。
記事のトップコメントでも言われてるけど、chawanは本当にすごいよ。まだ独特なクセがあるサイトも多いけど、テキストブラウザが「本物」のブラウザに近づいたのはこれが初めてだと思う。CSS、JS、画像のサポート(端末によるけど)も、完璧ではないにしてもかなり印象的だよ。私の知る限り、これは実際のブラウザの実装で、browshみたいに既存のブラウザを「騙す」わけじゃないからね(それもクールだけど)。
これ!`chawan`は本当に良いよ。よく使ってるし、すごく期待できる。もし「ターミナルでウェブをブラウジング」するのが好きなら、試してみるべきだよ。
そうそう、俺のことだ。:) ブログがActivityPubのコメントを取り入れてるのはいいよね。HNで初めてchawanを見たときから好きだったよ、https://news.ycombinator.com/item?id=44293260。これがきっかけで、テキストブラウザ向けのサイトにCSS Grid APIのサポートを追加したんだ。
もう一つ印象的なTUIブラウザはこれだね: https://codeberg.org/janantos/brow6el
Cloudflareはテキストベースのブラウザをどう扱ってるのかな?すぐにボットとしてフラグを立てるの?
うん。
残念で気持ち悪いことに、昨晩lynxを起動したら、Googleがもうそれで検索できなくなったことがわかったよ。この変更は数ヶ月前に起こったみたいで、HNにスレッドもあったけど[0]、今まで気づかなかった。altavistaはまだ問題なく使えるよ(ただし、Yahooにリダイレクトされるけどね;)
EWWをEmacsで使うときは、よくDuckDuckGoのHTMLモード(https://html.duckduckgo.com/html/)を使ってるよ。
このブログ記事で言われてる機能のほとんどは、私には本当にユーザーに優しくないように思える。ポップオーバーは、実際にはブロックできないポップアップを作る方法みたいだし。隠したいコンテンツもあるの?
クッキーポップアップは必須だから、何かしら必要だよね。
> このブログ記事で言及されている機能のほとんどは、俺には本当にユーザーに優しくないように思える。ポップオーバーは、実際にブロックできないポップアップを作る方法のように見えるし、ポップオーバーは広告にとっては逆に悪化すると思う(広告ブロッカーが見つけやすいから、ページに流し込まれたランダムなdivよりも)。モーダルダイアログはリッチなウェブアプリではかなり一般的なものだしね。
> 「隠したいコンテンツがある?これはいくつかの使い道があるよ。そもそも、ユーザーにコンテンツを見せないっていうのは、HTMLでもすでにあった手法だからね。」
普段訪れるサイトの多くは、テキストベースのブラウザでも意外と問題なく動くんだ。主な不満はHTMLの構造かな。多くのサイトは、ナビゲーションを実際のコンテンツの下に移動させれば、かなり改善できると思う。最初に目に入る大きな縦メニューが画面全体を占めるのは、ちょっとイライラするよね。
別のコメントでも言ったけど、@media: grid[1]のサポートがテキストモードのユーザーエージェントを区別するのに役立つよ。 [1] https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/A...
最近、いくつかの個人プロジェクトでそれをやってみたけど、気に入ってる。クライアントのサイトでも始めようと思ってる。https://omnicarousel.dev メインのナビゲーションメニューは、HTMLドキュメントのフッターのすぐ上にあるよ。これに詳しい人に質問なんだけど、JavaScriptをサポートしていないブラウザ(例えばw3m)で、JavaScriptが必要な機能を隠すおすすめの方法って何?
TUIブラウザで動くサイトの一番いいところは、Torブラウザの「最も安全な」モードでも動くってこと。実際、これらのテキストベースのウェブサイトがアンチ機能だと言ってる人たちには反論したいな。Torブラウザの「最も安全な」モードでブラウジングできるのは安全機能だと思う。実際、すべてのウェブページは「最も安全な」モードで動くように努力すべきで、必要なときだけ装飾を加えるべきだよ。JSをオンにするだけで、サイトはもう本当に安全じゃなくなるからね。
私が手伝っている(小規模で非商業的な)サイトでは、lynxがメインブラウザだった頃から、CSSで隠された「コンテンツにジャンプ」リンクを常に一番上に置いてるよ。今は、スクリーンリーダーを使っている人たちのためにもっと役立ってるね。
記事から: 「この記事では、確かにクールなbrowshを含めないつもりだけど…これらのブラウザはクールだけど、browshのことは知らなかったんだ。[1] あれも本当にクールだね。ありがとう!」
> 「テキストベースのブラウザでウェブページを見ると、基本的にプレーンHTMLしか表示されない。CSSもJSもなし。要素のセマンティクスによる“スタイリング”はあるけど、派手なものは期待しないで。色、インデント、中央揃えのテキストだけだよ。Geminiプロトコルを思い出すな。」
ちょっと話がそれるかもしれないけど、VPSで動くミニマリストブラウザってないかな?完全なVNCサーバーをホストしたり、puppeteerやchromeのデバッグポートの魔法を設定したりする必要がないやつ。browshはテキストベースのウェブブラウザとしておすすめだけど、1対1でマッピングするわけじゃないし、まだいくつか問題があるんだ。新しい画像プロトコルをターミナルで使えるシンプルなbrowshの代替品があればいいな(kittyプロトコルとかが頭に浮かぶ)。基本的に完全なブラウザとして機能するやつね。こんなの知ってる人いる?VPSでタブを24時間開けっぱなしにしておくのも面白いデータが得られる気がするんだ。どう思う?
browshとcarbonyl[0]は飛行機のWi-Fiで本当に助かる!carbonylはbrowshよりもChromiumのレンダリングがさらに良いと思う。[0] https://github.com/fathyb/carbonyl