- HTMLとCSSベースの超軽量UIコンポーネントライブラリで、ビルド工程やフレームワーク依存が一切ない構成
- 6KBのCSSと2.2KBのJS(圧縮・gzip基準)のみで構成されており、Webアプリケーションに必要な主要UI要素をすぐに利用可能
<button>、<input>、<dialog> などの セマンティックHTML要素を直接スタイリングし、クラスの使用を最小限に抑えてコードの汚染を減らす
- アクセシビリティ(Accessibility) を考慮し、ARIAロールとキーボードナビゲーションを標準でサポート
- 複雑なJSエコシステムの依存関係や過剰なエンジニアリングから離れ、シンプルで標準ベースの長期利用可能なUI構成を目指している
Oat 概要
- Oatは HTML + CSSベースの超軽量セマンティックUIコンポーネントライブラリで、外部依存が一切ない
- フレームワーク、ビルドツール、開発環境の設定が不要
- 小さなCSSとJSファイルを含めるだけですぐに使用可能
- 約 8KB(6KB CSS + 2.2KB JS) のサイズで、Webアプリケーションの基本UIを素早く構築できる
- 主なコンポーネントとして Button、Card、Dialog、Table、Tabs、Tooltip、Toast、Sidebar などが含まれる
セマンティックHTMLとアクセシビリティ
- セマンティックタグと属性をベースにスタイルが自動適用されるため、クラス指定なしでも一貫したデザインを維持
- 例:
<button>、<input>、<dialog> などの基本HTML要素に直接スタイルを適用
role="button" のようなセマンティック属性も自動認識
- ARIAロール と キーボードナビゲーション をすべての構成要素でサポート
- アクセシビリティ標準を徹底適用し、ユーザー体験を向上
ゼロ依存とシンプルさ
- JSやCSSフレームワーク、ライブラリへの依存がない
- Node.jsエコシステムの複雑さと不要な依存関係の問題を完全に排除
- ビルドやパッケージ管理の工程なしにすぐ使える
- 一部の動的コンポーネントは WebComponents で実装されており、最小限のJSのみを使用
カスタマイズとテーマ
- CSS変数 により、テーマカラーやスタイルを簡単に調整可能
data-theme="dark" 属性を body に追加すると自動でダークテーマを適用
- 全体的なデザインは shadcnの美学 の影響を受けている
制作背景
- 既存の JavaScript UIフレームワークの過度な複雑さと依存性の問題 への不満から出発
- Node.jsエコシステムの “dependency hell” や “lock-in” の問題を避けることが目的
- シンプルで標準ベースの 長期的に維持可能なUIライブラリ を自ら使うために制作
- 開発者はOatを通じて 不要なビルド工程なしですぐに使えるUI構成 を実装できる
1件のコメント
Hacker Newsの意見
semantic HTML要素だけでWebアプリの適切な効果を出そうとする試みは素晴らしいと思う
「classless CSS」パラダイムを志向している点も気に入っている。ただ、コンポーネントカタログを見ると、semantic要素と基本要素、dataタグとaria属性、そしてCSSクラスが入り混じっていて、一貫性に欠けるように見える
それでも、aria属性に応じてCSSが反応してスタイリングされる点は印象的だ。Reactのような重いコンポーネントライブラリの代わりに、aria-firstアプローチで考える良い練習になりそうだ
特に、このコンポーネントライブラリにネイティブなサイドバーが含まれているのが良い。大半のライブラリは再利用可能な小さなコンポーネントにしか注目しないが、これは aside > nav > ul 構造で main の横に自然に配置されていてすっきりしている
このサイトを見て驚いた。リンクをタップした瞬間にページが即座に読み込まれ、まるでムチのように速く感じた
インターネットでこういう速さを忘れていたが、今ではWeb開発に挑戦してみたくなった
このプロジェクトは、私が DaisyUI に期待していたシンプルさを実際に形にした感じだ
ここに Datastar を組み合わせれば、Web標準に基づく強力な組み合わせになりそうだ。「エコシステム」よりも、本物のWeb技術に寄りかかるアプローチだ
fosiao/rclone-webui-oat は
既存の重くてメンテナンスされていない rclone-webui-react を置き換えるもののようだ
フロントページにリンクされているブログ記事の方が、フレームワーク自体よりも興味深い議論を引き出しそうだ
私は仕事で Angular と Next.js の両方を扱っているが、だんだんこの記事の視点に共感するようになってきた
関連記事: JavaScript ecosystem is a hot mess
当時の議論: HNスレッド
<aside>はサイドバーに常に適したsemantic要素というわけではない本文と間接的に関連するコンテンツに使うのが本来の目的だ。サイドバーがその定義に合うこともあるが、常にそうとは限らない
この手のsemanticなdrop-in CSSライブラリは本当にたくさんある。新しいプロジェクトを見るのは楽しい
品質はさまざまだが、このサイトにはsemantic HTML向けの50以上のdrop-inスタイルシートがまとめられている
リンク: Drop-in Minimal CSS集
このプロジェクトは10年前のBootstrap初期バージョンを思い出させる
今のBootstrapはかなり肥大化したが、あの頃のシンプルさを感じる
参考: Bootstrap公式サイト
古いブラウザでもテストしてくれているのはありがたい。本当に超ミニマルなライブラリだ
スクリーンショット: 画像1, 画像2
私もアプリで似たようなことを試したが、一部のsemantic/functionalタグは今でもブラウザで適切にサポートされていないと気づいた
例えばSafariでdialogタグのshowModalを使うと、ページ全体のレイアウトを再計算するため、Chromiumより59倍遅い
それでも、このアプローチ自体は依然として気に入っている