0821vc.give-app.net
AIに図や画面を頼むときの言い方をまとめています。名前を知っているかどうかで、出てくるものが変わります。午後の仕上げで使いますが、研修後にご自身で作るときにも、ここを引きながら進められます。
アーサー・ディ・リトル・ジャパン株式会社様 GenAI活用スキル向上支援 第3回(2026年8月21日) S10「直す・仕上げる」で触れます。研修後も手元で引ける形にしてあります。
テキストで数行書くと、そのまま図になる記法です。Obsidian・GitHub・VS Code(拡張)がコードブロックを読んで図として描きます。図がテキストなので、差分が読めて、AIに書かせられて、あとから1行だけ直せます。
同じソースでも、表示する側が持っている Mermaid のバージョンより新しい図種は描けません。判定は単純で、導入バージョンが表示側のバージョン以下なら出ます。
| 表示先 | 同梱バージョン | 確認方法 |
|---|---|---|
| Obsidian | 11.13.0(v1.13.4、2026-07-30時点) | 公式チェンジログ |
| VS Code 拡張 vscode-mermaid-preview | 11.4.1(拡張 2.0.0、2025-04-29) | 拡張の説明欄 |
| GitHub | 非公表 | コードブロックに info とだけ書くと実行中の版が表示される |
図種の一覧です。「新」は2024年以降に追加されたものを指します。
| 図種 | キーワード | 何を描くのに向くか | 導入 | 新 |
|---|---|---|---|---|
| Flowchart | flowchart |
業務フロー、判断の分岐、体制図、システム構成 | 標準 | |
| Gantt | gantt |
工程と期間、マイルストーン | 標準 | |
| Pie | pie |
構成比(11.16.0 でドーナツ表示が追加) | 標準 | |
| Quadrant | quadrantChart |
2軸ポジショニング、施策の優先順位 | v10 系 | 新 |
| Sankey | sankey-beta |
コストや人の流量 | v10.3 系 | 新 |
| XY Chart | xychart-beta |
折れ線、棒 | v10.9 系 | 新 |
| Architecture | architecture-beta |
クラウド構成、サービス間の依存 | v11.1.0 | 新 |
| Radar | radar-beta |
多軸比較、ケイパビリティ評価 | v11.6.0 | 新 |
| Packet | packet |
ビット単位のデータ構造 | v11.0.0 | 新 |
| Kanban | kanban |
タスクボード | v11 系 | 新 |
| Treemap | treemap-beta |
階層と量(売上構成など) | v11 系 | 新 |
| Block | block-beta |
任意のブロック配置 | v11 系 | 新 |
| Venn / Ishikawa / Wardley / TreeView / Event Modeling | 各 -beta |
集合、特性要因、バリューチェーン成熟度 | v11.13.0 以降 | 新 |
| Cynefin / Railroad / Swimlane | 各 -beta ほか |
意思決定文脈、文法、レーン分けフロー | v11.16.0 | 新 |
最後の3つは Obsidian(11.13.0)では描けません。Radar と Treemap は VS Code 拡張(11.4.1)では描けません。当日の演習は Obsidian で確認するので、11.13.0 以下の図種を選んでください。
コンサルティングの資料で出番が多いのは Quadrant、Sankey、Treemap、Radar の4つです。Excel を経由せず、テキストのままバージョン管理できる図として使えます。
こういう場面で使う。作業の順番と、途中の分岐を1枚で示すとき。提案書の現状整理や、引き継ぎ資料の冒頭に置きます。
AIへの頼み方。
この作業の流れを Mermaid の flowchart LR で書いてください。
ノードは8個まで。日本語のラベルは必ず二重引用符で囲んでください。
出力は mermaid コードブロックだけにしてください。
出てくるコード。
flowchart LR
A["調査依頼を受ける"] --> B["論点を分解する"]
B --> C["一次情報を集める"]
C --> D{"裏が取れたか"}
D -->|"取れた"| E["ドラフトを書く"]
D -->|"取れない"| C
E --> F["レビュー"]
F --> G["提出"]
こういう場面で使う。条件によって答えが変わるルールを、口頭説明なしで配れる形にするとき。AIに何を渡してよいかの判断も、この形にすると迷いません。
AIへの頼み方。
この判断ルールを Mermaid の flowchart TD で書いてください。
分岐は波括弧のひし形、結論は四角にしてください。
分岐の答えは「はい」「いいえ」ではなく、実際の条件の言葉にしてください。
出てくるコード。
flowchart TD
A["渡したい資料がある"] --> B{"クライアント名が入っているか"}
B -->|"入っている"| C["渡さない"]
B -->|"入っていない"| D{"未公開の数値が入っているか"}
D -->|"入っている"| E["数値をダミーに置き換える"]
D -->|"入っていない"| F{"公開されている資料か"}
F -->|"公開済み"| G["そのまま渡してよい"]
F -->|"社内限り"| H["要約だけを自分で書いて渡す"]
E --> G
こういう場面で使う。キックオフ資料で、誰が誰と話すのかを示すとき。subgraph でクライアント側と自チームを分けます。
AIへの頼み方。
プロジェクト体制を Mermaid の flowchart TD で書いてください。
クライアント側と自チームを subgraph で分けてください。
subgraph のIDは英字、表示名は角括弧の中に日本語で書いてください。
指揮系統は矢印、窓口の対応関係は矢印なしの線にしてください。
出てくるコード。
flowchart TD
subgraph CL["クライアント側"]
S1["事業部長"]
S2["経営企画"]
S3["現場担当"]
end
subgraph US["プロジェクトチーム"]
P1["パートナー"]
P2["マネージャー"]
P3["コンサルタント"]
P4["リサーチ担当"]
end
P1 --> P2
P2 --> P3
P2 --> P4
S1 --- P1
S2 --- P2
S3 --- P3
こういう場面で使う。提案書の工程表。Excel のガントチャートを作り直すより速く、日付をずらす修正も1行で済みます。
AIへの頼み方。
この工程を Mermaid の gantt で書いてください。
開始は2026年9月1日。section は「調査」「分析」「提案」の3つ。
先行タスクの終了に紐づけたいところは after を使ってください。
タスク名にコロンと読点を入れないでください。
出てくるコード。
gantt
title 提案フェーズの工程
dateFormat YYYY-MM-DD
axisFormat %m/%d
section 調査
デスクリサーチ :a1, 2026-09-01, 7d
有識者インタビュー :a2, after a1, 5d
section 分析
市場規模の推計 :a3, after a2, 5d
競合ポジション整理 :a4, after a2, 7d
section 提案
ストーリー設計 :a5, after a4, 3d
ドラフト作成 :a6, after a5, 4d
最終レビュー :milestone, m1, after a6, 0d
こういう場面で使う。施策の優先順位づけ、競合マップ、投資判断。座標は0から1で指定します。
AIへの頼み方。
この4つの施策を Mermaid の quadrantChart で配置してください。
横軸は着手のしやすさ、縦軸は期待効果。
quadrantChart では日本語を引用符で囲まないでください。
座標は0から1の数値で、私が示した相対順を崩さないでください。
出てくるコード。
quadrantChart
title 施策の優先順位
x-axis 着手しにくい --> 着手しやすい
y-axis 効果が小さい --> 効果が大きい
quadrant-1 すぐ着手
quadrant-2 計画して着手
quadrant-3 見送り
quadrant-4 手が空いたとき
請求書の自動集計: [0.78, 0.82]
会議メモの要約: [0.85, 0.45]
需要予測の内製: [0.20, 0.88]
社内FAQの整備: [0.60, 0.30]
象限の番号は右上が1、左上が2、左下が3、右下が4です。ここを取り違えるとラベルと中身がずれます。
こういう場面で使う。作ったアプリの構成をクライアントに説明するとき。architecture-beta の標準アイコンは cloud / database / disk / internet / server の5つだけです。
AIへの頼み方。
この構成を Mermaid の architecture-beta で書いてください。
アイコンは標準の5種類だけを使ってください。
角括弧の中のラベルは英数字1語にしてください。日本語と空白は入れないでください。
矢印の向きは L R T B で指定してください。
出てくるコード。
architecture-beta
group cf(cloud)[Cloudflare]
service ui(server)[WebUI] in cf
service api(server)[API] in cf
service db(database)[DataStore] in cf
service user(internet)[User]
user:R --> L:ui
ui:R --> L:api
api:B --> T:db
ラベルに日本語を入れると崩れることがあるので、英数字で書いて、説明は図の外に文章で添えてください。日本語を図の中に入れたいときは 3-3 の flowchart と subgraph に切り替えます。
quadrantChart と gantt は行の形で構文が決まっているので、引用符は要りません。囲むとかえって崩れます。約束1は flowchart 系だけに効くと覚えてください。
崩れたときは、エラーメッセージをそのまま貼って「この行だけ直してください。ほかは変えないでください」と頼みます。全体を再生成させると、直る代わりに別物が出てきます。
Mermaid で足りなくなる境目は3つです。位置を自分で決めたいとき、AWS や Kubernetes の正式アイコンが要るとき、配ったあとに先方が編集する前提のとき。この3つに当たったら draw.io に移ります。
AIに XML を書かせる手順です。draw.io が図の自動生成向けに公式ルールを出しているので、そのまま指示に書きます。
draw.io に読み込む XML を書いてください。次の4点を守ってください。
1. mxfile と diagram で包まず、素の mxGraphModel だけを出す
2. 圧縮した XML にしない
3. mxCell id="0" と mxCell id="1" parent="0" を必ず先頭に置く
4. XML コメントを入れない
図形は vertex="1"、線は edge="1"、id は一意にしてください。
読み込ませ方は、draw.io を開いて Extras > Edit Diagram に貼り付けるか、.drawio ファイルとして保存して開きます。素の mxGraphModel で出させておくと、開いたときに draw.io 側が自動で mxfile に包みます。圧縮を禁じるのは、圧縮すると人が読めず、直したい1行を探せなくなるからです。
名簿や一覧表から起こすときは CSV ルートが速いです。Arrange > Insert > Advanced > CSV に、# で始まる設定行と CSV 本体を貼ります。組織図なら公式サンプルの # connect: {"from": "manager", "to": "name", "invert": true, "label": "manages"} の1行で階層線が自動生成されます。AIには「この表を draw.io の CSV 書式に変換してください」と頼めば済みます。
Mermaid から持ち込む道も2026年7月3日に変わりました。Arrange > Insert > Mermaid で挿入すると、SVG画像ではなく draw.io ネイティブの図形グループとして描かれます。挿入後に色やラベルを手で直しても、Mermaid ソースを編集して再生成したときにその装飾が残ります。AIに骨格を出させて、人が体裁を整える流れがそのまま通ります。
3系統あります。使い分けを間違えると、あとで直せない形で保存されます。
Mermaid はネイティブ対応です。コードブロックの言語に mermaid と書けばそのまま描画されます。ノードに class ノード名 internal-link; を足すと、図の中からノートへ飛べます。ただしグラフビューには出ません。厳密な構成図や、あとで差分を追いたい図はこれを使ってください。
Canvas はコア機能です。保存形式は JSON Canvas という公開仕様(2024年3月11日に Obsidian が策定)で、ノードは text / file / link / group の4種類、エッジは接続元・接続先・辺・矢印・ラベル・色を持ちます。テキストエディタで開ける JSON なので、AIに直接書かせられます。議論しながら箱を動かすラフスケッチはこちらです。
Excalidraw はプラグインで、最新は 2.26.2(2026年8月3日)です。手描き風の見た目になります。保存形式も JSON です。Excalidraw 本体には mermaid-to-excalidraw という公式の変換ライブラリがあるので、Mermaid で骨格を作ってから手描き風に流し込めます。
判断は2つで足ります。あとから差分を読みたいか、その場で手で動かしたいか。前者は Mermaid か draw.io、後者は Canvas か Excalidraw です。Canvas も Excalidraw もオープンな JSON なので、どちらを選んでもファイルが開けなくなることはありません。
ちなみに GitHub は Mermaid のほかに GeoJSON と TopoJSON の対話的な地図、ASCII 形式の STL による3Dモデルも表示します。拠点マップを README に置くくらいなら、画像を書き出さずに済みます。
「あの、ぴょこっと出るやつ」でも、AIは何かを出します。ただし Modal になるか Popover になるか Toast になるかは毎回変わります。これらの名前は実装ライブラリに実在するコンポーネント名なので、名指しした瞬間に候補が1つに絞られます。日本語で3行説明するより、正しい名前を1語言うほうが速い。
名称の典拠は shadcn/ui のコンポーネント一覧(https://ui.shadcn.com/docs/components )と Material Design 3 です。
| やりたいこと | この名前で頼む | 頼み方の一文 | 注意点 |
|---|---|---|---|
| 画面の前に窓を出して、背面を暗くして操作を止めたい | モーダル(Modal / Dialog) | 「入力欄をモーダルで開いてください。背面はクリックできないようにしてください。」 | 「ポップアップ」と言うと Popover や Toast と混ざります。閉じる手段(×ボタンと Esc)も一緒に指定します |
| 画面の端からパネルをせり出させたい | ドロワー(Drawer / Sheet) | 「画面の右からドロワーを出して、その中に詳細を表示してください。」 | ライブラリごとに Drawer と Sheet の向きの定義が逆になります。「右から」「下から」と方向を必ず添えます |
| 保存しましたのような短い通知を一時的に出したい | トースト(Toast、Material では Snackbar) | 「保存が終わったら画面右下にトーストを3秒間だけ出してください。」 | 表示秒数を書かないと、消えないか一瞬で消えます。エラーの通知だけは自動で消さない指定を足します |
| 読み込み中に灰色の枠を出したい | スケルトン(Skeleton) | 「データ取得中は、表の行の形をしたスケルトンを5行表示してください。」 | スピナーとの違いは形です。表やカードにはスケルトン、ボタンの中はスピナーが自然です |
| 件数や状態を小さな印で示したい | バッジ(Badge) | 「未読件数をタブの右上にバッジで出してください。99件を超えたら 99+ と表示してください。」 | 上限表記を書かないと3桁が枠からはみ出します |
| いまどの階層にいるかを上部に示したい | パンくず(Breadcrumb) | 「画面上部にパンくずを置いてください。区切りは > で、最後の階層はリンクにしないでください。」 | 階層が4つを超えると折り返します。省略記号の扱いも決めておきます |
| 同じ階層の画面を切り替えたい | タブ(Tabs) | 「案件・タスク・履歴の3つをタブで切り替えられるようにしてください。初期表示はタスクです。」 | 初期表示のタブを指定しないと、生成のたびに変わります |
| 見出しを押すと本文が開く形にしたい | アコーディオン(Accordion / Collapsible) | 「よくある質問をアコーディオンにしてください。複数を同時に開けるようにしてください。」 | 同時に1つだけ開くのか複数開けるのかで実装が変わります。必ず書きます |
| 状態ごとの列にカードを並べて移動させたい | カンバン(Kanban board) | 「未着手・進行中・完了の3列のカンバンにして、カードを列の間でドラッグできるようにしてください。」 | 列の定義を先に渡します。列名を任せると英語で出ます |
| 出来事を時系列に縦に並べたい | タイムライン(Timeline) | 「更新履歴を新しい順のタイムラインで表示してください。日付を左、内容を右に置いてください。」 | 並び順を書かないと逆になります |
| 数値の大小を色の濃淡の格子で見せたい | ヒートマップ(Heatmap) | 「曜日と時間帯のヒートマップにしてください。色は1色の濃淡だけにして、赤と緑は使わないでください。」 | 赤緑の組み合わせは読めない人がいます。1色の濃淡が安全です |
| 属性を複数掛け合わせて絞り込みたい | ファセット検索(Faceted search) | 「業種・地域・規模の3軸のファセット検索を左側に置いて、各項目に該当件数を出してください。」 | 該当件数の表示を頼まないと、0件の選択肢が並びます |
| 列見出しを押して並べ替えたい | ソート(列ヘッダーソート) | 「表の列見出しを押すと昇順と降順が切り替わるようにしてください。既定は締切の昇順です。」 | 既定の並び順は別に指定が要ります。この文書の最後にまとめてあります |
| 件数が多いのでページを分けたい | ページネーション(Pagination) | 「1ページ50件のページネーションにしてください。総件数と現在のページ番号を上部に出してください。」 | 1ページの件数を書かないと10件になりがちです |
| 下までスクロールしたら自動で読み足したい | 無限スクロール(Infinite scroll) | 「一覧は無限スクロールにして、1回あたり30件ずつ読み足してください。」 | 総件数が見えなくなります。件数表示か「ここまでです」の表示を併せて頼みます |
| 入力しながら候補を絞り込ませたい | オートコンプリート(Combobox / Autocomplete) | 「取引先名の入力欄をオートコンプリートにして、2文字目から候補を最大10件出してください。」 | 何文字目から出すか、候補の最大件数を指定します |
| 行を掴んで順番を入れ替えたい | ドラッグ&ドロップ並べ替え(Drag and drop reorder) | 「一覧の行をドラッグして順番を入れ替えられるようにして、並び順を保存してください。」 | 「保存してください」を書かないと、再読み込みで元に戻ります |
| 複数行をまとめて選んで操作したい | 一括選択(Bulk selection) | 「表の左端にチェックボックスを置き、ヘッダーで全選択、選択中は上部に一括削除ボタンを出してください。」 | 全選択が「絞り込み後の全件」なのか「表示中のページだけ」なのかを指定します |
| 直前の操作を取り消せるようにしたい | アンドゥ(Undo) | 「削除した直後にトーストを出し、その中の元に戻すボタンで5秒間だけ取り消せるようにしてください。」 | 確認ダイアログの代わりになります。破壊的な操作にはどちらかを必ず持たせます |
| データが0件のときの画面を決めたい | エンプティステート(Empty state) | 「データが0件のときは、説明文1行と、最初の1件を追加するボタンを画面中央に出してください。」 | 指定しないと真っ白な画面が出ます。この表で最も効く1語です |
| 入力の誤りをその場で知らせたい | バリデーションエラー(Validation error) | 「必須項目が空のときは、その入力欄の下に理由を出し、送信ボタンは押せるままにしてください。」 | ボタンを無効化すると、なぜ押せないかが分からなくなります。押させて理由を出すほうが親切です |
| 削除の前に確認させたい | 確認ダイアログ(Alert Dialog) | 「削除ボタンを押したら確認ダイアログを出し、削除対象の名前を文面に含めてください。」 | 対象名を入れる指定が抜けると「本当によろしいですか」だけの文面になります |
| スクロールしても上端を残したい | スティッキーヘッダー(Sticky header) | 「表のヘッダー行をスティッキーにして、スクロールしても列名が見えるようにしてください。」 | 画面が小さいと本文の領域を食います。高さの上限も添えます |
| 画面幅が変わっても崩れないようにしたい | レスポンシブ(Responsive) | 「390px、768px、1280px の3つの幅で横スクロールが出ないようにしてください。表は箱の中で横に流してください。」 | 「レスポンシブにして」だけでは範囲が決まりません。数字を入れます |
| 処理の進み具合を割合で見せたい | プログレスバー(Progress) | 「取り込み中は0から100%のプログレスバーと、処理済み件数と総件数を出してください。」 | 割合が算出できない処理はスピナーにします |
| 手順を分割して順に進めさせたい | ステッパー(Stepper / Wizard) | 「入力を3段階のステッパーに分け、前の段階に戻れるようにしてください。」 | 戻れるかどうかを書きます |
| 画面の左端に主要な導線を置きたい | サイドバー(Sidebar / Navigation rail) | 「左に幅240pxのサイドバーを置き、画面幅768px未満では折りたたんでください。」 | 折りたたんだあとの開き方も指定します |
| 情報のまとまりを枠で並べたい | カードレイアウト(Card layout) | 「上部に4枚の指標カードを横並びで置いてください。カードの中に別のカードを入れないでください。」 | 入れ子のカードは最も強いAI臭です。禁止を明記します |
| 変更前と変更後を並べて見せたい | 差分表示(Diff view) | 「修正前と修正後を左右2列の差分表示にして、変わった行だけ背景色を変えてください。」 | 追加を緑、削除を赤にしがちです。1色の濃淡で分けるよう指定できます |
| 表の内容をファイルで持ち出したい | CSVエクスポート(CSV export) | 「いま画面に出ている行を、絞り込みを反映したままCSVで書き出してください。文字コードは UTF-8 の BOM 付きにしてください。」 | BOM を指定しないと Excel で日本語が化けます |
| 入力内容をブラウザに残したい | ローカルストレージ保存(localStorage) | 「入力した内容を localStorage に保存し、再読み込みしても残るようにしてください。」 | そのブラウザにしか残りません。別のPCからは見えない前提で使います |
| オンとオフを切り替えさせたい | トグル(Switch / Toggle) | 「通知のオンとオフをトグルにして、切り替えた時点で保存してください。」 | 保存ボタンを別に置くかどうかを決めます |
| 選択した条件を小片で並べて見せたい | チップ(Chip / Tag) | 「選択中の絞り込み条件を上部にチップで並べ、×で個別に外せるようにしてください。」 | 「タグ」と言うと、データ側のタグ機能と混ざります |
| ホバーしたときに短い説明を出したい | ツールチップ(Tooltip) | 「アイコンだけのボタンに、ツールチップで機能名を出してください。」 | スマートフォンにはホバーがありません。触れる画面では別の手段が要ります |
| 要素に紐づく小さなパネルを開きたい | ポップオーバー(Popover) | 「その項目の詳細をポップオーバーで開き、外側を押したら閉じてください。」 | ツールチップとの違いは、中に操作を置けるかどうかです |
| 右クリックでメニューを出したい | コンテキストメニュー(Context menu) | 「行を右クリックしたら、複製と削除のコンテキストメニューを出してください。」 | 触れる画面では長押しでも開く指定を足します |
| 絞り込みの条件を1列に並べたい | フィルタバー(Filter bar) | 「表の上にフィルタバーを置き、期間・担当・状態の3つを並べてください。条件をすべて外すボタンも置いてください。」 | 解除手段を頼まないと、条件が残ったままになります |
| 検索語に当たった箇所を目立たせたい | 検索ハイライト(Search highlight) | 「検索語に一致した文字だけ背景色を変えてください。大文字と小文字は区別しないでください。」 | 一致部分だけと明示しないと、行全体が塗られることがあります |
| 指標をまとめた画面を1枚作りたい | ダッシュボード(Dashboard) | 「上段に指標カードを4枚、下段に表とグラフを2列で置いたダッシュボードにしてください。」 | 「ダッシュボードを作って」だけだと配置が毎回変わります。段と列の数を書きます |
| 表の行の中に極小のグラフを入れたい | スパークライン(Sparkline) | 「各行の右端に、直近12か月の推移をスパークラインで入れてください。軸と目盛りは省いてください。」 | 目盛りを省く指定がないと、普通のグラフが行の中に入ります |
| 集計値から明細へ掘り下げたい | ドリルダウン(Drill-down) | 「集計行を押したら、その内訳の明細行が下に開くようにしてください。」 | 別画面へ飛ぶのか、その場で開くのかを指定します |
上の表で名前を言えば形は出ます。ただし次の5つは、名前を言っても中身が決まりません。黙っているとAIが勝手に決めますし、生成のたびに変わります。
| 決まらないもの | 何が起きるか | 指示の一文 |
|---|---|---|
| エンプティステート | データが0件のとき、真っ白な画面が出る。壊れたと誤解されます | 「データが0件のときは、説明文1行と、最初の1件を追加するボタンを画面中央に出してください。」 |
| エラー時の表示 | 読み込みに失敗した瞬間に画面全体が白紙になります | 「読み込みに失敗したときは、直前の内容を残したまま、上部に理由と再試行ボタンを出してください。」 |
| 件数が多いときの扱い | 3,000件を一度に描画して固まります。あるいは黙って先頭20件だけ出ます | 「一覧が100件を超えたら1ページ50件のページネーションに切り替え、総件数を上部に出してください。」 |
| 日付の書式 | 同じ画面に 2026/8/21 と Aug 21, 2026 と 3日前 が混在します | 「日付は 2026-08-21 の形式で統一してください。3日前のような相対表記は使わないでください。」 |
| 並び順の既定値 | 一覧を開くたびに違う順で並びます。登録順のまま出ることが多いです | 「一覧の既定の並びは締切の昇順にしてください。並べ替えた結果は保存せず、再読み込みで既定に戻してください。」 |
ちなみに Toast と Snackbar は同じものの別名です。Google 系の資料では Snackbar、それ以外では Toast で通ります。どちらで頼んでも同じものが出るので、覚え直す必要はありません。
状態が変わったときの動きは、CSS の transition で済みます。ボタンの色が変わる、パネルが開く、行が消える。この程度なら追加のライブラリは要りません。
動かしてよいのは transform と opacity の2つだけです。width や top を動かすと画面全体の再計算が走って、カクつきます。持続時間は150〜300ms、イージングは減速系(ease-out)。この範囲を外れると、速すぎて気づかないか、遅くて待たされます。
過度なアニメーションを避ける理由は、好みではありません。WCAG 2.3.3「Animation from Interactions」(レベルAAA)が、操作起因のモーションを無効化できることを求めています。前庭障害のある人には、視差スクロールや弾むボタンで吐き気や眩暈が出ます。AAA なので法的な最低線ではありませんが、官公庁・医療・教育の調達では実質的な要件になりつつあります。実装は @media (prefers-reduced-motion: reduce) で持続時間を 0.01ms にするのが定石です(W3C の Technique C39、https://www.w3.org/WAI/WCAG22/Techniques/css/C39.html )。
線引きは「意味のある動きだけ残す」。要素がどこから来てどこへ行くかを示す遷移は残す。注意を引くためだけのループ、パララックス、スクロール連動の大きな動きは削る。
これを毎回口で言うのは無駄なので、DESIGN.md の Motion セクションに書いておきます。実際に書く行はこれだけです。
## Motion
- transition は transform と opacity のみ。width / height / top / left は動かさない
- 持続時間は 120ms(色や状態の変化)と 200ms(パネルの開閉)の2種類だけ
- イージングは ease-out に固定
- ループアニメーション、パララックス、スクロール連動の大きな動きは使わない
- @media (prefers-reduced-motion: reduce) のとき、全アニメーションを 0.01ms にする
この5行があると、以後の指示は「開閉にアニメーションを付けてください」の一言で済みます。
| 手段 | 何ができるか | 対応状況 | 頼み方 |
|---|---|---|---|
| CSS transition / animation | 状態変化とキーフレーム。動きの8割はここ | 全ブラウザ | 「CSS の transition だけで実装してください。ライブラリは追加しないでください。」 |
| View Transitions API | 画面を切り替えたとき、要素が移動したように見せる | 同一ドキュメント版(document.startViewTransition())は Chrome と Edge が 111、Safari 18.0、Firefox 144 で対応済み、グローバル利用率 88.46%。ページ遷移をまたぐ版(@view-transition)は Chrome と Edge が 126、Safari 18.2、Opera 112 で対応、Firefox は未対応で 82.01% |
「画面の切り替えに View Transitions API を使ってください。未対応のブラウザでは瞬間切り替えのままで構いません。」 |
| Motion(旧 Framer Motion) | 複数要素の連動、ドラッグ、レイアウトアニメーション | React 用。最新は 12.43.0 | 「Motion を使ってください。パッケージは motion、import は motion/react です。」 |
View Transitions は Firefox 未対応の版でも、単に瞬間切り替えになるだけで壊れません。装飾として入れる分には出荷できます。
Motion は名前が変わっています。2025年半ばに Framer から独立して Motion に改名し、パッケージ名は framer-motion から motion、React の import は motion/react になりました(https://motion.dev/ )。旧 framer-motion は動きますが開発は止まっています。「Framer Motion で」と頼むと古い import を書くことがあるので、motion/react と明示してください。
3つ目まで要る場面は多くありません。React を使っていて、複数の要素が連動する場合だけです。それ以外は1つ目で足ります。
形容詞は通じません。数字と対象を書くと通ります。
| 曖昧な言い方 | 通じる言い方 |
|---|---|
| もっと余白を取って | 要素どうしの間隔を16pxから24pxに広げてください |
| 窮屈に見える | カードの内側の余白を上下左右とも24pxにしてください |
| 文字が詰まっている | 本文の行間を1.5にしてください。見出しは1.3です |
| 区切りが分かりにくい | 行と行の間に1pxの罫線を入れてください。色は本文の文字色を20%の濃さにしたものです |
| 罫線がうるさい | 縦の罫線をすべて消して、横の罫線だけ残してください |
| もっと柔らかく | 角丸は4pxに統一してください。16px以上は使わないでください |
| 立体感が欲しい | 影は1段階だけにしてください。カードにのみ 0 1px 3px の薄い影を付け、ボタンには付けないでください |
| のっぺりしている | 背景とカードを同じ白にして、境界は影ではなく1pxの罫線で分けてください |
| 地味なので華やかに | アクセント色を1色だけ決めて、主ボタンと選択中の項目にだけ使ってください。それ以外はグレーです |
| ビジネスライクにして | 濃紺 #1F2A44 とグレー #6B7280 の2色だけを使い、グラデーションと影は使わないでください |
最後の1組が一番よく使います。「ビジネスライクに」と何度も言い直すより、hex を2つ書くほうが1回で決まります。
紫グラデが出る理由は美意識ではありません。統計です。
#6366F1(indigo-500)、#8B5CF6(violet-500)、#A855F7(purple-500)。背景は #FFFFFF と #F9FAFB、書体は Inter か Roboto。全部 Tailwind CSS の既定色と既定書体です。2019年以降の Web デザインの中央値がそのまま訓練データを飽和させました。言語モデルは中央値を返します。Developers Digest がおこなったティアダウンでは、Show HN のローンチの半分以上が同じデザイン指紋を共有していました。
もう1つの型が Cardocalypse です。何もかもカードで囲み、カードの中にカードを入れる。rounded-2xl shadow-lg p-6 という shadcn/ui の既定値が無編集で残っているのが目印です。
ここからが本題です。Anthropic 公式の frontend-design skill(https://claude.com/plugins/frontend-design 、インストール数100万規模)は「避けるべきAIの型」を3つ名指ししていますが、紫グラデはその中に入っていません。
同スキルの言い方はこうです。「一部のブリーフでは正当だが、これらは選択ではなくデフォルトだ」。3つとも、紫グラデを避けようとした人たちがたどり着いた回避策です。それがもう次の中央値になりました。回避策が普及すれば、その回避策自体が中央値になる。この構造がある限り、逃げ切りはありません。
だから、避ける側ではなく決める側に回ります。やることは3つです。
書体を替える。1時間の作業で見た目のAIっぽさを最も大きく動かします。ここだけやって残り2つをやらない、でも効果は出ます。
パレットを命名する。4〜6色の hex に役割名を付け、Tailwind v4 の @theme に流し込みます。v4 では tailwind.config.js ではなく CSS に直接 --color-primary: oklch(0.65 0.24 260) と書くと bg-primary や text-primary が生えます。DESIGN.md に書いたトークンと @theme が一対一で写るので、指示書がそのまま実装になります。なお2026年8月時点で Tailwind v5 は存在しません。最新は v4.3 系です。
参照を与える。VoltAgent/awesome-design-md(https://github.com/VoltAgent/awesome-design-md )に Apple、Stripe、Vercel、Linear、Figma など73ブランド分の DESIGN.md が揃っています(スター106.5k)。近いものを1本渡すと、出力の中央値が「汎用の中央値」から「そのブランドの中央値」へ移ります。
ちなみに DESIGN.md のテンプレートには標準セクションが9つあり、最後の Do-Not-Use Rules が一番効きます。premium や clean のような気分の言葉は、それを目に見える選択へ落とす補助ルールがない限り無意味だと明記されています。長く書きすぎるとエージェントが重要なルールを薄めるので、短さも要件です。
作ったものが自分のPCの中だけで動いているうちは、誰の判断も変えません。渡した瞬間に価値が出ます。渡し方は4つあり、難易度は等しくありません。
| 渡し方 | 相手 | 相手側に要るもの | 更新の手間 | 向く場面 |
|---|---|---|---|---|
| 自分のPCで動かす | 自分だけ | なし | なし | 試作、その場限りの検証 |
| 単一HTMLをファイルで渡す | ファイルを送れる相手 | ブラウザだけ | 送り直し。相手の手元に古い版が残る | 数人に見せる、ネットに置けないもの |
| URLで配る | URLを知る全員 | ブラウザだけ | 上書きすれば全員が最新 | 触らせる、複数人で同時に使う |
| アプリとして配る | インストールを許可された相手 | OS別のインストーラ。未署名なら許可操作 | 更新機構の実装と署名鍵の管理 | OSの機能を使う、オフラインで常用する |
上から下へ行くほど、コードを書く時間は変わらないのに、コード以外の作業が増えます。
最初の1本は Web アプリにしてください。理由は3つあります。
配布。URLを送るだけで済みます。受け取る側にインストールも承認操作も要りません。アプリとして配る場合、後述の署名と公証が丸ごと乗ってきます。
更新。Web はリロードで全員が最新になります。デスクトップアプリは更新の仕組みを実装し、更新パッケージに署名し、その鍵を失くさない運用まで込みで面倒を見ることになります。鍵を失くすと、既に配ったアプリを更新する手段が消えます。
環境差異。Web はブラウザの差だけを見ればよい。デスクトップは OS のバージョン、権限、ウイルス対策ソフト、社内プロキシが加わります。手元で動いたものが相手先で動かない理由が、一気に増えます。
もう一点、撤退コストが安い。Tauri も Electron も中身は Web のフロントエンドなので、Web で作ったものを後から包み直せます。逆方向は成立しません。先に Web を作るのが常に有利です。
Cloudflare Workers に置くのが現在の最短です。Cloudflare 公式は新規プロジェクトに Workers を指定していて、Pages は廃止されていないものの新機能は Workers 側に付いています。
無料枠の実数(2026年8月時点)。リクエストは1日10万件、CPU 時間は1呼び出しあたり10ms、メモリ128MB、Worker サイズは gzip 後3MB、静的アセットは2万ファイルまで・1ファイル25MiB まで。
効いてくるのはここです。静的アセットへのリクエストは無料かつ無制限で、ストレージ料金もかかりません。課金対象は Worker スクリプトが起動した分だけです。画面だけの資料アプリなら、アクセスが跳ねても請求は動きません。
手順は当日デモで通しで見せます。手を動かす前に確認してほしいのは3点だけです。
3つめを飛ばす人が多い。消し方を知らないまま出したものは、後から必ず面倒になります。
Tauri と Electron のどちらを選ぶかは、性能ではなく構造で決まります。断言できる違いは1点、ブラウザエンジンを同梱するかどうかです。Electron は Chromium と Node.js をアプリごとに丸ごと同梱し、Tauri は同梱せず OS 側の WebView を借ります。Windows は WebView2、macOS は WKWebView を使います。
容量やメモリの数値は出回っていますが、公式ベンチマークが存在しないので判断材料にしないでください。構造から言えるのはトレードオフの向きだけです。Electron は全ユーザーが同じ Chromium を実行するので動作差異が原理的に出ません。Tauri は OS の WebView を借りる以上、OS ごとに挙動が割れます。軽さの代わりに、ブラウザ差のテストを買い戻すことになります。
もう一つ、クロスコンパイルができません。macOS アプリは Mac でしかビルドできず、Windows の exe は Windows でしか作れません。全 OS 分を配るなら、OS 別のビルド環境を並べる必要があります。
ここが本題です。Windows と macOS で難易度が非対称になっています。
Windows は未署名でも動きます。SmartScreen の警告を1回踏めば実行できます。Tauri 公式も「署名がないと警告が出る」とは書きますが、実行不能とは書いていません。
macOS は動きません。ブラウザ経由でダウンロードされた未署名の .app は「壊れているので開けません」と表示され、起動すらしません。しかも ad-hoc 署名(自己署名)で逃げても警告は消えず、ユーザーはプライバシーとセキュリティ設定での明示的な許可を求められます。ここは Tauri 公式が明記しています。自己署名は警告を消す手段ではありません。
正規に署名する道は、どちらの OS も組織の契約行為です。
macOS は Developer ID Application 証明書が要り、その前提として Apple Developer Program(年額 $99 USD)への加入が必要です。公証自体は xcrun notarytool submit --wait の1コマンドで終わります。詰まるのは契約の側です。
Windows で公的に信頼される証明書を取る条件は、2026年に悪化しました。CA/Browser Forum の Ballot CSC-31 により、コード署名証明書の最大有効期間が39か月から460日へ短縮され、2026年3月1日から適用されています(DigiCert は2026年2月24日から459日を上限に設定)。秘密鍵は FIPS 準拠の HSM またはハードウェアトークンでの保管が必須で、鍵をファイルで持つ運用はもう選べません。トークンの郵送を待つ時間が発生します。さらに OV 証明書で署名しても SmartScreen の警告は消えません。消したければ EV 証明書を取るか、実行実績を積んでレピュテーションが蓄積されるのを待つことになります。
安い代替として Azure Artifact Signing(月額 $9.99 から、ハードウェアトークン不要)がありますが、2026年4月の GA 時点で対象は米国・カナダ・EU・英国の法人に限られています。日本法人が今すぐ使えるかは確認が要ります。
まとめます。AI はビルドが通るところまで数分で連れて行きます。Apple Developer Program の契約、ハードウェアトークンの郵送、法人審査、SmartScreen の実行実績は1分も短縮されません。組織の契約行為と物理と時間だからです。コードは数分で書けますが、信頼の獲得は連れて行ってくれません。
Web アプリのまま、アイコンからアプリのように起動できる形にする道もあります。
インストール可能にする条件は、manifest に name(または short_name)、192px と 512px を含む icons、start_url、display があること、そして HTTPS で配信されていること。Service Worker は推奨ですが、インストールの必須要件ではありません。
2026年時点の対応状況。デスクトップは Chrome / Edge / Opera がアドレスバーからインストールでき、Firefox は非対応です。macOS の Safari は Sonoma 以降、manifest がなくても「Dock に追加」でアプリ化できます。iOS は 16.4 以降、Safari 以外のブラウザからも共有メニュー経由でホーム画面に追加できます。ただし Safari は beforeinstallprompt を実装していないため、ワンタップのインストールバナーは原理的に出せません。iOS のインストールは全件が手動操作になります。プッシュ通知は、ホーム画面に追加された状態でのみ動きます。
署名も公証も要らない一方で、相手に手順を説明する必要は残ります。
URL で配れるなら URL にする。認証が要るなら、アクセス制御を先に付けてから公開する。
どうしてもファイルで配るなら、単一 HTML にして「ダブルクリックでブラウザが開く」形にする。インストーラを作らずに済みます。
macOS で未署名の .app を数人に渡すだけなら、xattr -dr com.apple.quarantine /Applications/アプリ名.app を手順書に書く。ダウンロード時に付いた検疫属性を外すだけで、Gatekeeper も SIP も無効化しません。
ちなみに macOS の「このまま開く」ボタンは、アプリを開こうとしてから約1時間だけシステム設定に表示されます。手順書を書くときは「まずダブルクリックして怒られる」を最初の手順に入れてください。順序を逆にすると、ボタンが出ません。