YouTube・ケーススタディ
ケーススタディ:日本のnoteの導入評価
月間9,000万人超が使う日本のnoteが、自社のデザインシステムとModern Web Guidanceの役割分担を、180回の比較評価で決めた事例です。
現場と問い
noteはNext.jsとReactで作られ、自社のReact部品ライブラリ note-ui が、ダイアログ、ツールチップ、アコーディオン、フォーム欄など、ブランドとアクセシビリティの土台を担っています。問いは2つでした。Modern Web Guidanceが一番効くのはどこか。そして、自社の部品ライブラリとどう役割を分けるかです。
評価の組み立て
- 本番のNext.jsコードベースの複製で、実在のUIの課題6件を実施しました。削除確認ダイアログ(note-uiの範囲内)、スクロールで縮むヘッダーと記事ページの高速化(範囲外)、FAQアコーディオン・プロフィールのツールチップ・会員登録フォーム(部分的に範囲内)です。
- 条件は3つです。ガイドなし、明示的にガイドを引くよう指示した場合、リポジトリに置いてあるだけ(指示なし)の場合。
- 180回の実行を、静的なコード確認だけでなく、ChromiumとWebKitの自動ブラウザで描画後のDOMとCSSを確かめ、現代的なWeb標準の19の基準で採点しました。
結果
| エージェント | ガイドなし | 置いてあるだけ | 明示的に指示 | 伸び |
|---|---|---|---|---|
| エージェントA(主力モデル) | 60.8% | 76.5%(+15.7pt) | 94.0% | +33.2pt |
| エージェントB(第2のモデル) | 75.8% | 86.2%(+10.3pt) | 90.0% | +14.2pt |
| 機能 | ガイドなし | ガイドあり |
|---|---|---|
| スクロールで縮むヘッダー | メインスレッドで動くJavaScriptのスクロールリスナー | 宣言的なCSSのスクロール連動アニメーション。リスナーのコードはゼロ |
| ツールチップ | 座標計算を自前で持つ作り | Popover API。バンドルの追加なし |
| 検索できるFAQアコーディオン | Reactの状態管理。中身がページ内検索にヒットしない | <details name="faq">。検索でブラウザが自動で開く |
| LCPの主役画像 | fetchpriority="high" と遅延読み込みの矛盾する組み合わせ | 優先付けだけを正しく付け、導入後の431件のPRで採用が28%増 |
| 登録フォーム | 自動入力の属性がなく、エラーの読み上げもない | 標準の入力とARIAの読み上げ。自動入力の採用は69%増 |
決めたこと:AGENTS.mdの優先順位
明示的に「Webのガイドに従え」とだけ指示すると、エージェントはnote-uiの部品がある場面でも標準のHTML要素を選んでしまいました。そこで、全か無かではなく、リポジトリの指示ファイルに優先順位を書く形にしました。要旨は次の3段です。
- note-uiを優先する。既にある部品(ダイアログ、トースト、ボタン、フォーム欄、ポップオーバー等)はそれを使い、既存の流儀に従う。ガイドが勧めるからといって標準の
<dialog>や素の<input>に置き換えない。 - note-uiが届かない所でModern Web Guidanceを使う。スクロール連動の効果はCSSのスクロール連動アニメーション、排他や検索可能な開閉は
<details name>とhidden="until-found"、Core Web Vitalsはfetchpriorityとcontent-visibility、フォームの属性は部品のprops経由で渡す。 - ぶつかる場合は既存部品を優先し、ガイドは部品の範囲で当てる。フォームのエラー表示は部品の仕組み(
validationState/errorMessage、またはaria-describedbyを付けたHelpText)を使い、自前の警告要素は作らない。
教訓
- デザインシステムが終わる所から、プラットフォームの機能が始まります。部品ライブラリはブランドのUIが得意で、スクロール、ポップオーバー、読み込み優先度のようなブラウザの能力はガイドが担います。
- 既存の部品ライブラリがあるコードベースでは、
AGENTS.mdのような場所に短い優先順位を書くことで、デザインシステムを守りながら標準化が進みます。 - 確認は実際のブラウザの実行環境で行います。現代的なCSSとHTMLが、バンドラやフレームワークとどう組み合わさるかがその場で分かります。
「私たちの使命は『だれもが創作をはじめ、続けられるようにする』ことです。その土台は、すべての作り手と読み手にとって速く、アクセシブルでなければなりません。AIのコーディングエージェントが書くコードが増える中で、Modern Web Guidanceは、古いJavaScriptの書き方ではなく、現代的で標準に基づく解法のほうへエージェントを向けてくれます。」— 板橋岳彦(VP of Technology, note inc.)※発言の要旨
短縮URL(投稿の記載):https://goo.gle/4zgLIys / 解決先:https://developer.chrome.com/blog/mwg-with-internal-component