workspace-ui-kit/README.md
snc777 f6a781c47e initial commit
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-09 14:24:17 +09:00

170 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# workspace-ui-kit
「自分の思想を画面にする」月のひな形です。
画面にはサンプルとして**採用管理**の4ペイン候補者リスト・候補者の詳細・スコアカード・サイドバーが出ますが、これを自分の仕事用に作り変えるところから月3の課題が始まります。
## 起動する
```bash
git clone <このリポジトリのURL>
cd workspace-ui-kit
npm install
npm run dev
```
ブラウザで `http://localhost:3000` を開くと、採用管理のサンプル画面が表示されます。
![採用管理のサンプル画面:左から「部署/ポジション」「候補者リスト」「候補者ダッシュボード」「選考ステージ詳細」の4ペイン構造](docs/screenshot-workspace.png)
## 構成
### 技術スタック
- **Next.js 16** / **React 19** / **TypeScript**strict
- **Tailwind CSS v4**`app/globals.css` の `@theme` で CSS 変数を一元管理)
- **shadcn/ui**`base-nova` スタイル / `@base-ui/react` ベース)
- **lucide-react**(アイコン)/ **zod**(実行時の型検証)
### ディレクトリ構成
```
app/ Next.js App Router の画面エントリ
page.tsx トップページ(ここから Workspace を呼んでいる)
globals.css 色・角丸・余白などのデザイントークン
components/
ui/ shadcn の UI 部品Button, Card, Dialog 等。編集 OK
primitives/ このプロジェクト独自の編集 UI 部品
workspace/ 4ペイン本体Pane1〜4 と関連ダイアログ)
data/ サンプルの種データJSON
hooks/ React のカスタムフック
lib/ 型定義zod スキーマ)・ユーティリティ
openspec/ 設計の決定記録ADR、参考資料
__tests__/ テスト
```
> 道A踏襲ルートでよく触る場所は **`components/workspace/`**(画面の中身)と **`app/globals.css`**(色や角丸)です。
### 開発コマンド
| コマンド | 役割 |
|---|---|
| `npm run dev` | 開発サーバー起動 |
| `npm run build` | 本番ビルド |
| `npm run lint` | ESLint チェック |
| `npm run test` | スモークテストVitest |
| `npm run format` | Prettier で整形 |
| `npm run check:radius` | 角丸ドリフト検出(独自スクリプト) |
## 同梱されている "AI への操縦マニュアル"
このリポジトリには、UI を作る作業を AI が手伝ってくれるように、あらかじめ「お手本」と「ルール集」が同梱されています。これを **スキル**と呼びます。
スキルとは、AI が作業を始めるときに自動で読みに行く**指示書**のことです。たとえば「ボタンを変えて」と頼むと、該当するスキルを AI が見つけて、「このプロジェクトでの正しい書き方はこれ」「やってはいけないことはこれ」を読んだ上で作業します。AI が暴走しにくくなります。
このリポジトリに入っているスキルは2種類:
- **`shadcn` スキル(純正)**
shadcn/uiこのリポジトリで使っている UI ライブラリを使うときの一般的なルール集。「新しい部品を入れる」「使い方を調べる」など、shadcn 操作全般に効きます。shadcn/ui の中身を覚えていなくても、AI が代わりに調べてくれます。
なお、中身は英語のままです。これは shadcn の **公式が配布しているものをそのまま置いている**だけだからです特別にカスタマイズはしていません。誰でも同じ手順で導入できます。AI が読むので、人間が読む必要はありません。読みたくなったら AI に翻訳してもらえば OK です。
- **`designing-workspace-ui` スキル(このプロジェクト固有)**
この採用管理サンプルの **4ペイン構造**を尊重するためのルール集。「ペインの責務」「色や角丸の階層」「インライン編集の保存規約」など、このサンプルが採っている思想を AI に守らせます。
両者は独立しており、AI が片方を起動しても、もう片方は自動では起動しません。**どちらを使うかは、あなたが進む "道" によって決まります**。
## 2つの道踏襲ルート / 自由ルート
このサンプルを使った課題には、2つの進め方があります。正解はひとつではありません。**自分の業務と性格に合う方を選んでください**。
### 道A: 踏襲ルート(このリポジトリで改造)
採用管理のサンプル UI を**土台にして**、自分の業務(顧客管理 / 在庫管理 / プロジェクト管理など)に作り変える道です。
- 使うスキル: `designing-workspace-ui` がメイン。必要に応じて `shadcn` も併用
- 立ち上がり: 速い。Day1 から動くものがある状態でスタート
- 規律: 強い。スキルが「サンプルの思想」を守らせる
- 自由度: 中。**4ペイン構造**と既存の色・角丸ルールに沿う必要がある
- 向いている人:
- 業務が「リスト + 詳細 + サブパネル」的な構造で表現できる
- まず動かしてから考えたい
- AI 開発に慣れていない
### 道B: 自由ルート(別リポジトリでゼロから)
このリポジトリは**参考資料**として残し、**別の空のリポジトリ**で shadcn/ui を使ってゼロから作る道です。
- 使うスキル: `shadcn`(純正)がメイン。自分でプロジェクトを初期化する
- 立ち上がり: 遅い。Next.js セットアップ、shadcn 初期化から自分でやる
- 規律: 弱い(=自由)。サンプルの規律はないので、**自分で決める**
- 自由度: 高。**4ペイン構造に縛られない**。3ペインでも単一ページでも可
- 向いている人:
- 業務が4ペインで表現しきれないチャット型・カレンダー型・ボード型など
- 自分の思想を最初から全部決めたい
- shadcn の純正スキルで AI を操縦する練習もしたい
## どちらを選ぶか
迷ったら、以下の3問に答えてみてください。
1. **あなたの業務は「リスト → 詳細 → 操作パネル」的な構造ですか?**
- YES → 道A踏襲ルートが楽
- NO → 道B自由ルートを検討
2. **早く何か動くものを見たいですか?それとも遅くても自分の思想を貫きたいですか?**
- 早く動かしたい → 道A
- 遅くても自分の思想 → 道B
3. **AI と shadcn/ui に慣れていますか?**
- 慣れていない → 道A規律が守ってくれる
- ある程度慣れた → 道B自由を活かせる
### 途中で道を変えてもOK
最初は **道A** で立ち上げ、途中で「やっぱり構造が合わない」と感じたら **道B** に切り替える進め方も可能です。そのときは「サンプルから何を残すか」を自分で決めるので、**`designing-workspace-ui` スキルがむしろ足枷になります**。道Bへ移ったら、このスキルは無効化=`.claude/skills/designing-workspace-ui/` を削除し、shadcn 純正スキルだけで進めてください。
逆に、道Bから道Aに移るのは現実的ではないので、**最初の判断は慎重に**。迷ったら担当講師に相談してください。
## 自分の仕事に作り変える
選んだ道に応じて、Cursor または Claude Code で AI に作業させます。
### AI と一緒に UI を作るときの現実
最新の AI と shadcn/ui を使っても、「いい感じの UI を作って」という抽象的な指示で**完璧な UI が完成するわけではありません**。実際には、
- どの shadcn/ui 部品を**そのまま使う**か、**カスタマイズする**かを判断する
- 一つの変更ごとに **AI の出力を確認して微調整する**
- 言葉で表現できる粒度(例: 「Pane 3 のカードの間隔を1段詰めて」「Badge を success トークンの色に変えて」)まで噛み砕いて伝える
を**一つずつ丁寧に積み重ねる**作業になります。最初の数日は遠回りに感じるかもしれませんが、これが「自分の思想を画面にする」唯一の道です。
### 道A踏襲ルートの場合
AI に依頼するときは「`designing-workspace-ui` スキルを使って」と一言添えると、規律に沿った変更が返ってきます。
例: 「Pane 3 のカード並びを変えたい。designing-workspace-ui を使って」
### 道B自由ルートの場合
別のリポジトリで `npx shadcn@latest init` から始めてください。AI には「shadcn スキルで進めて」と頼むと、純正のレジストリ機能を使った部品検索 + 追加をやってくれます。
### 独自性を強めるなら、自分専用のデザインスキルも育てる
道B を選んだ場合、あるいは道A から始めても**採用管理のサンプル思想から離れていく**にしたがって、あなたの新しいデザイン思想を AI に教えるための **専用スキル**を作っていくのが本筋です。スキルが古いままだと、AI は「採用管理の世界観」のままコードを書き続けてしまい、せっかくの独自デザインと噛み合わなくなります。
ゼロから書く必要はありません。同梱の `.claude/skills/designing-workspace-ui/SKILL.md` を**参考雛形**として、自分のプロジェクトの言葉で書き直していくのがおすすめです。
- 「ペインの責務」 → あなたの画面構造の責務に
- 「採用管理」 → 自分の業務名に
- 角丸ルールや色のトークン規律も、自分の流派で書き換える
スキルを育てるほど、AI は**あなたの思想を理解した上で**動くようになり、独自デザインでも一貫性のある変更が積み上がります。**スキルを育てること自体が、デザインを言語化する訓練**にもなります。
課題の取り組み方の詳細は**受講生ポータル**を参照してください。
## 提出する
提出物・期限・中間発表のフォーマットは**受講生ポータル**を見てください。
## 詰まったら
エラーメッセージをそのままAIに貼り付けて聞いてください。
ほとんどのつまずきはそれで解決します。