<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Astryx on KnightLiブログ</title>
        <link>https://knightli.com/ja/tags/astryx/</link>
        <description>Recent content in Astryx on KnightLiブログ</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>ja</language>
        <lastBuildDate>Sun, 12 Jul 2026 12:15:00 +0800</lastBuildDate><atom:link href="https://knightli.com/ja/tags/astryx/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Astryx で AI 生成フロントエンドをデザインシステムへ接続する方法：React コンポーネント、テーマ、受け入れ条件</title>
        <link>https://knightli.com/ja/2026/07/12/astryx-ai-generated-frontend-react-design-system-theme-guide/</link>
        <pubDate>Sun, 12 Jul 2026 12:15:00 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/07/12/astryx-ai-generated-frontend-react-design-system-theme-guide/</guid>
        <description>&lt;p&gt;AI に1ページを生成させるのは難しくありません。難しいのは2ページ目、3ページ目も正しい色、余白、コンポーネント状態、アクセシビリティ属性、操作境界を守らせることです。Astryx は Meta のオープンソース React デザインシステムです。公式リポジトリでは Beta とされ、150以上のアクセシブルなコンポーネント、テーマ、ダークモード、テンプレート、CLI を提供し、CSS カスタムプロパティでテーマを上書きできます。&lt;a class=&#34;link&#34; href=&#34;https://github.com/facebook/astryx&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;公式リポジトリ&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Astryx を Agent に接続する目的は、モデルを自由にデザインさせることではなく、人と Agent が同じコンポーネントとドキュメントを使うことです。&lt;/p&gt;
&lt;h2 id=&#34;導入が適切かを先に判断する&#34;&gt;導入が適切かを先に判断する
&lt;/h2&gt;&lt;p&gt;次の条件があれば適しています。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;React プロジェクトに複数の管理画面があり、AI 生成 UI の見た目がぶれ始めている。&lt;/li&gt;
&lt;li&gt;ボタン、フォーム、ダイアログ、空状態、ダークモードを統一したい。&lt;/li&gt;
&lt;li&gt;Agent に CSS を毎回書かせず既存コンポーネントを組み合わせさせたい。&lt;/li&gt;
&lt;li&gt;Beta 依存を隔離検証し、バージョン固定できる。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;React ではない、または成熟した社内ライブラリがあるなら、流行のために作り直さないでください。コンポーネント優先、token 優先、スクリーンショット受け入れの方法を既存システムへ移す方が現実的です。&lt;/p&gt;
&lt;h2 id=&#34;導入と最小テーマ&#34;&gt;導入と最小テーマ
&lt;/h2&gt;&lt;p&gt;公式例のパッケージ名は次のとおりです。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install @astryxdesign/core @astryxdesign/theme-neutral
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install -D @astryxdesign/cli
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;最初に独立ブランチまたは小さなページで build、スタイル読み込み、ダークモードを確認してからアプリ入口へ広げます。Agent にグローバルスタイル、ルートシェル、既存 token ファイルを直接置換させないでください。&lt;/p&gt;
&lt;p&gt;テーマはブランド制約を表すもので、ページごとの自由な上書きではありません。変更可能な色、角丸、フォント、余白をプロジェクト規則に書き、Agent に「何を再利用すべきか」を伝えます。&lt;/p&gt;
&lt;h3 id=&#34;アプリの外枠ではなく小さなページから始める&#34;&gt;アプリの外枠ではなく小さなページから始める
&lt;/h3&gt;&lt;p&gt;設定ページ、フィルターサイドバー、詳細カードなど1ルートから始めます。現在のフォント、余白、色 token、操作状態、コンポーネントを列挙し、その一部を Astryx で再構築させます。ルーティング、データ取得、権限判定、グローバルスタイル入口は残します。デザインシステムが担うのはコンポーネントとテーマであり、業務移行ではありません。&lt;/p&gt;
&lt;p&gt;ローカル検証の順序を固定します。依存を入れて開発サーバーを起動し、ライト／ダークモードを確認し、Tab でフォーム、ダイアログ、ボタンをたどり、モバイル幅に縮め、最後に既存テストまたは build を実行します。問題はそのコンポーネントの変更に記録し、多数ページの後で token 上書き、CSS 優先順位、フォーカス競合を発見しないようにします。&lt;/p&gt;
&lt;p&gt;小ページが安定したら、許可パッケージ、テーマ入口、import 形式、変更禁止のグローバルファイルを記録し、参照実装にします。後続の Agent タスクはこれを参照します。&lt;/p&gt;
&lt;h2 id=&#34;agent-のプロジェクトレベル制約&#34;&gt;Agent のプロジェクトレベル制約
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;AGENTS.md&lt;/code&gt;、&lt;code&gt;CLAUDE.md&lt;/code&gt;、または Skill に次のような規則を置きます。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 新页面优先使用 @astryxdesign 现有组件；新增自定义组件前先说明原因。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 不新增全局 CSS reset，不修改既有主题 token。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 所有表单字段必须有可见 label、错误态和禁用态。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 完成后提供桌面和窄屏截图，并列出新增组件与交互状态。
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;- 不以截图相似为唯一验收；保留键盘操作和语义结构。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;これは「デザインシステムでダッシュボードを作る」より実行可能です。禁止事項、再利用の道筋、成果物が明確で、レビュー担当者もコンポーネントライブラリを迂回していないか確認できます。&lt;/p&gt;
&lt;h3 id=&#34;入力出力禁止事項をタスクに書く&#34;&gt;入力、出力、禁止事項をタスクに書く
&lt;/h3&gt;&lt;p&gt;実タスクにはページ範囲、利用可能なデータ、変更可能なファイル、必要なスクリーンショットを含めます。たとえば &lt;code&gt;src/features/orders/FilterPanel.tsx&lt;/code&gt; のみ変更、既存クエリパラメータを再利用、依存追加・ルート変更・&lt;code&gt;theme.ts&lt;/code&gt; 変更なし、デスクトップと狭幅画面のスクリーンショット、Button、Select、Dialog の状態一覧、という指定です。これにより Agent が見た目のために global reset、状態管理、API 層を変えることを防げます。&lt;/p&gt;
&lt;p&gt;複雑なコンポーネントでは、先に構造案を出させます。どの区画があり、どの Astryx コンポーネントに対応し、どの loading/error/empty 状態が必要かを確認してからコードに進みます。ライブラリで表現できない設計なら、設計を調整するか新コンポーネントの保守担当を決め、使い捨て CSS を入れません。&lt;/p&gt;
&lt;h2 id=&#34;4層の受け入れで-ui-のぶれを減らす&#34;&gt;4層の受け入れで UI のぶれを減らす
&lt;/h2&gt;&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;層&lt;/th&gt;
          &lt;th&gt;確認事項&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;コンポーネント&lt;/td&gt;
          &lt;td&gt;Button、Input、Dialog などを再利用し、状態が揃っているか&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;テーマ&lt;/td&gt;
          &lt;td&gt;許可された token または CSS 変数だけで見た目を変えているか&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;操作&lt;/td&gt;
          &lt;td&gt;キーボードフォーカス、loading、error、empty 状態が使えるか&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;納品&lt;/td&gt;
          &lt;td&gt;build が通り、重要ページのスクリーンショットとコンポーネント一覧があるか&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;視覚的一貫性はピクセルのコピーではありません。安定させるべきなのはアクセシブルな意味構造、状態機械、テーマの出所、保守可能なコンポーネント境界です。&lt;/p&gt;
&lt;h2 id=&#34;繰り返せる受け入れフロー&#34;&gt;繰り返せる受け入れフロー
&lt;/h2&gt;&lt;p&gt;マージ前に diff を確認します。ライブラリを回避するグローバルスタイル、固定したブランド色、無関係なファイル変更がないかを見ます。ブラウザで通常データ、loading、空データ、API 失敗を確認し、フォームは必須、形式エラー、無効、送信中も確認します。通常状態だけのスクリーンショットでは多くの回帰を隠します。&lt;/p&gt;
&lt;p&gt;最後にキーボードで重要フローを完了します。Tab 順が理解でき、フォーカスが Dialog に入り出られ、エラーが項目に関連付き、色コントラストが十分かを確認します。PR テンプレートに置けば、Agent 生成ページも同じ基準で扱えます。&lt;/p&gt;
&lt;h2 id=&#34;よくある誤解&#34;&gt;よくある誤解
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Beta を全サイト改修の理由にする&lt;/strong&gt;：最初にバージョンを固定し、単一領域で更新コストを検証する。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Agent にコンポーネント内部を直接変更させる&lt;/strong&gt;：組み合わせとテーマ上書きを優先し、必要なときだけソースを引き継ぐ。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ページごとに一時的 CSS を書く&lt;/strong&gt;：デザインシステムはパッケージ名だけになり、後続 Agent を制約できない。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;スクリーンショットだけで受け入れる&lt;/strong&gt;：tab 順、エラー表示、押せないボタンは分からない。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;まとめ&#34;&gt;まとめ
&lt;/h2&gt;&lt;p&gt;Astryx は人と Agent が共通のフロントエンド言語を使うための制約を作れます。少数ページでコンポーネント、テーマ、受け入れフローを検証し、規則をプロジェクトファイルへ定着させてください。&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
