ウェブブラウザの世界は長い間、少数の主要プレーヤーに支配されてきたため、新規参入者は注目に値します。自称「超高速で軽量、安全な」HTML/CSSエンジンである Vaev が最近登場し、開発者コミュニティ内でブラウザ技術の将来、セキュリティ上の考慮事項、ウェブレンダリングへの代替アプローチの実現可能性について大きな議論を巻き起こしています。
Vaev プロジェクトとその目的
Vaev は4人の貢献者によって開発されており、現在ウェブ標準のサブセットをサポートしています。これにはほとんどの表示タイプ(グリッドを除く)、標準的なCSSカスケード動作、@pageルールを使用したページネーション、PDF出力への印刷、パーセンテージ、var()、calc()などの様々なCSS単位が含まれます。現在のネットワーク機能はHTTPとファイルプロトコルに限定されていますが、このプロジェクトは一からブラウザエンジンを作成する野心的な試みを表しています。
プロジェクトの主要開発者の一人によると、Vaev は学習演習を超えた特定の実用的な用途があるとのことです。これは、人気のあるオープンソースビジネスソフトウェアスイートである Odoo で wkhtmltopdf に代わる PDF レンダリングエンジン「paper-muncher」のコアとして開発されています。この焦点を絞った使用事例により、プロジェクトが PDF 印刷機能とページネーション機能を重視している理由が説明できます。
Vaev の現在のサポート機能:
- ほとんどの表示タイプ(グリッドを除く)
- 標準的なCSSカスケード動作
- @pageルールを使用したページネーション
- PDF出力機能
- パーセンテージ、var()、calc()を含むすべてのCSS単位
- HTMLおよびXHTMLドキュメントの読み込み
- 基本的なネットワーキング(http:// と file:// のみ)
プロジェクト貢献者:
- Lou!
- LuneMercier
- Paulo Medeiros
- Sleepy Monax
主な使用目的:
- "paper-muncher" PDFレンダリングエンジンのコア
- Odoo での wkhtmltopdf の代替を目指す
言語選択に関する論争
おそらく Vaev を巡る最も白熱した議論は、C++での実装に関するものです。多くのコメンテーターがこの選択に疑問を呈し、ブラウザは本質的に設計上 RCE(リモートコード実行)の脆弱性を持ち、C++は歴史的にブラウザのコードベースにおける数多くのセキュリティ問題の原因となってきたと主張しています。
「なぜこのプロジェクトにC++が選ばれたのか興味があります。ブラウザは悪名高くセキュリティ確保が難しく、事実上RCE脆弱性になることを意図しています!C++バイナリの安全性確保は難しく、近年多くの組織や企業から多くのセキュリティ脆弱性の根本原因として指摘されています。」
この選択を擁護する人々は、開発者たちがおそらくC++の豊富な経験を持っており、ブラウザエンジンの作成には言語の深い熟練が必要だと指摘しています。また、スマートポインタやRAIIパターンを使用した高品質な現代的C++プラクティスを示すコードベースは、従来のC++セキュリティ問題の多くを軽減できるとも述べています。
Vaev チームはセキュリティ懸念に対応し、Clangのコンパイラ強制セキュリティ機能(ライフタイムチェック属性や指定ブロック外での制限されたポインタ使用など)を検討していると述べています。これらのアプローチは Rust のような言語で見られる安全性の利点の一部を提供するものです。
Smolweb に関する議論
Vaev の登場により、ウェブ技術の最小限のサブセットを標準化することに関する議論が再燃しました。多くの開発者は「smolweb標準」—代替ブラウザが完全なウェブ互換性という大海を沸騰させることなく実装できる一貫性のある限定的なウェブ標準のサブセット—を定義することに興味を示しました。
この仮想的な標準に対する提案は、HTML 4.01やCSS 2.1のような古い仕様を採用することから、不必要な複雑さを排除しながらCSSグリッドのような現代的だが不可欠な機能に焦点を当てることまで多岐にわたりました。一部はメールHTMLの互換性をベースラインとして使用することを提案し、他の人々はMarkdownレンダリングに必要な最小限の要件から始めることを提案しました。
この議論は、より単純で焦点を絞ったウェブ技術への高まる要望を浮き彫りにしています。これにより、現在の主要ブラウザと競争するために必要な膨大なエンジニアリングリソースを必要とせずに、より多様なブラウザが可能になるかもしれません。
課題と将来の展望
新しいブラウザエンジンの構築は非常に複雑な取り組みであり、多くのコメンテーターはブラウザが事実上独自のオペレーティングシステムになっていると指摘しています。基本的な機能のためだけでも必要なコード量の膨大さ(Vaev はすでに500行以上の多数のファイルを含む)は、なぜ新しいブラウザエンジンがほとんど登場しないかを示しています。
Vaev の当面の将来は一般的なウェブブラウジングよりも文書レンダリングとPDF生成に焦点を当てているようですが、開発者たちはJavaScriptやより包括的なウェブ機能のサポートを最終的に排除していません。プロジェクトのアーキテクチャは、オペレーティングシステム固有の実装から始まった他の代替ブラウザプロジェクトとは異なり、最初からクロスプラットフォームになるよう設計されています。
ウェブ技術がますます複雑になる中、Vaev のようなプロジェクトは代替アプローチや特殊な使用事例の貴重な探求を提供しています。文書レンダリング、最小限のウェブ標準、セキュリティ改善のいずれに焦点を当てるにせよ、これらの実験はウェブ技術の将来の方向性とブラウザの多様性に関するより広範な議論に貢献しています。
参考: skift-org/vaev