1920 × 1080 Seen as a design The artboard itself, drawn live — sharp at any zoom Structure, margins and columns overlaid
1920 × 1080 Seen as a design The artboard itself, drawn live — sharp at any zoom Structure, margins and columns overlaid
Copy and paste, or save a file and hand it over. For a machine with no network, one “Everything” file is enough.
Everything in this panel, including the contents behind each URL, in one Markdown file — Large, so it goes as a file (copy is for 32 KB and under)
Produce one slide to the following specification. - Canvas 1920 × 1080 - Margin top 96 right 140 bottom 96 left 140 ## Type (px against a 1920px canvas) title 44px / 700 / tracking 0.01em / leading 1.3 window 20px / 500 / leading 1.5 axisLabel 22px / 500 / leading 1.4 legendLabel 22px / 500 / leading 1.4 conclusion 26px / 500 / leading 1.6 note 16px / 400 / leading 1.6 ## Colour Ground #FFFFFF / Surface #F4F6F9 / Ink #131820 / Muted #667183 / Accent #1F5FA8 / Rule #DBE1E9 ## Constraints — dropping these breaks it - Five or six axes at most. Past seven the difference between neighbouring vertices stops being readable and the shape becomes a pattern - Two polygons at most. With three, checking the key takes longer than reading the figure - Do not give now and target different hues. They are two readings of one thing; fill versus dashed outline keeps the claim that the same ruler was used - Never let the axis order mean anything. Reordering the axes changes the shape, so if the order reads as priority the figure is lying - Do not invite area comparison. Even with evenly spaced axes, the area depends on the ordering of values, so 'how much overall' cannot be read off it Replace the content with [your content]. Keep the measurements and colours as given. For an exact reproduction, use the verbatim HTML at https://design-vault.pages.dev/designs/radar-profile-now-target/pattern.html.
/ai/designs/radar-profile-now-target.json
format: slide-16x9
density: medium
layout:
kind: radial
canvas:
w: 1920
h: 1080
margin:
top: 96
right: 140
bottom: 96
left: 140
type:
title:
size: 44
weight: 700
tracking: 0.01em
leading: 1.3
window:
size: 20
weight: 500
leading: 1.5
axisLabel:
size: 22
weight: 500
leading: 1.4
legendLabel:
size: 22
weight: 500
leading: 1.4
conclusion:
size: 26
weight: 500
leading: 1.6
note:
size: 16
weight: 400
leading: 1.6
colors:
ground: "#FFFFFF"
surface: "#F4F6F9"
ink: "#131820"
muted: "#667183"
accent: "#1F5FA8"
rule: "#DBE1E9"
rules:
- Five or six axes at most. Past seven the difference between neighbouring vertices stops being readable and the shape becomes a pattern
- Two polygons at most. With three, checking the key takes longer than reading the figure
- Do not give now and target different hues. They are two readings of one thing; fill versus dashed outline keeps the claim that the same ruler was used
- Never let the axis order mean anything. Reordering the axes changes the shape, so if the order reads as priority the figure is lying
- Do not invite area comparison. Even with evenly spaced axes, the area depends on the ordering of values, so 'how much overall' cannot be read off it{
"format": "slide-16x9",
"density": "medium",
"layout": {
"kind": "radial",
"canvas": {
"w": 1920,
"h": 1080
},
"margin": {
"top": 96,
"right": 140,
"bottom": 96,
"left": 140
}
},
"type": {
"title": {
"size": 44,
"weight": 700,
"tracking": "0.01em",
"leading": 1.3
},
"window": {
"size": 20,
"weight": 500,
"leading": 1.5
},
"axisLabel": {
"size": 22,
"weight": 500,
"leading": 1.4
},
"legendLabel": {
"size": 22,
"weight": 500,
"leading": 1.4
},
"conclusion": {
"size": 26,
"weight": 500,
"leading": 1.6
},
"note": {
"size": 16,
"weight": 400,
"leading": 1.6
}
},
"colors": {
"ground": "#FFFFFF",
"surface": "#F4F6F9",
"ink": "#131820",
"muted": "#667183",
"accent": "#1F5FA8",
"rule": "#DBE1E9"
},
"rules": [
"Five or six axes at most. Past seven the difference between neighbouring vertices stops being readable and the shape becomes a pattern",
"Two polygons at most. With three, checking the key takes longer than reading the figure",
"Do not give now and target different hues. They are two readings of one thing; fill versus dashed outline keeps the claim that the same ruler was used",
"Never let the axis order mean anything. Reordering the axes changes the shape, so if the order reads as priority the figure is lying",
"Do not invite area comparison. Even with evenly spaced axes, the area depends on the ordering of values, so 'how much overall' cannot be read off it"
]
} /designs/radar-profile-now-target/pattern.html — The artboard itself, font subset included — open it and this picture draws.
<!doctype html>
<meta charset="utf-8">
<title>開発チームの力量 — 差が最も大きいのはテストの自動化</title>
<meta name="dv-font" content="Zen Kaku Gothic New:400;500;700">
<link rel="stylesheet" href="./font.css">
<style>
/* 色のリテラルはこの :root にだけ置く。以下の規則は var() か color-mix() で名指す。
区分色は持たない —— 現状と目標は別々の区分ではなく同じものの 2 時点なので、
色を変えず、塗りと破線で区別する。 */
:root {
--ground: #FFFFFF;
--surface: #F4F6F9;
--ink: #131820;
--muted: #667183;
--accent: #1F5FA8;
--rule: #DBE1E9;
}
* { box-sizing: border-box; margin: 0; }
html, body { width: 1920px; height: 1080px; }
body { font-family: "Zen Kaku Gothic New", "IPAGothic", sans-serif; }
.artboard {
width: 1920px;
height: 1080px;
background: var(--ground);
color: var(--ink);
padding: 96px 140px;
}
.content {
height: 100%;
display: grid;
grid-template-rows: auto minmax(0, 1fr) auto;
}
.head { border-bottom: 2px solid var(--rule); padding-bottom: 28px; }
.title { font-size: 44px; font-weight: 700; letter-spacing: 0.01em; line-height: 1.3; }
.window { margin-top: 14px; font-size: 20px; font-weight: 500; line-height: 1.5; color: var(--muted); }
/* 図 620 + 結論で中身の段(約 708px)に収まる。凡例は図の外に置かず、
多角形が届かない左上の空きに入れてある —— 別の行にすると、そのぶん図を
小さくすることになり、頂点の差が読めなくなる。 */
.body {
display: grid;
grid-template-rows: auto auto;
align-content: center;
justify-items: center;
row-gap: 28px;
}
.figure { display: block; }
.web { fill: none; stroke: var(--rule); stroke-width: 1.5; }
.spoke { stroke: var(--rule); stroke-width: 1.5; }
.now { fill: color-mix(in srgb, var(--accent) 22%, var(--ground)); stroke: var(--accent); stroke-width: 3; }
.target { fill: none; stroke: var(--accent); stroke-width: 3; stroke-dasharray: 10 8; }
.swatch-now { fill: color-mix(in srgb, var(--accent) 22%, var(--ground)); stroke: var(--accent); stroke-width: 3; }
.swatch-target { fill: var(--ground); stroke: var(--accent); stroke-width: 3; stroke-dasharray: 8 6; }
.axis-label { fill: var(--ink); font-size: 22px; font-weight: 500; line-height: 1.4; }
.legend-label { fill: var(--ink); font-size: 22px; font-weight: 500; line-height: 1.4; }
.conclusion { font-size: 26px; font-weight: 500; line-height: 1.6; color: var(--muted); }
.foot { border-top: 1px solid var(--rule); padding-top: 22px; font-size: 16px; font-weight: 400; line-height: 1.6; color: var(--muted); }
</style>
<div class="artboard" data-artboard>
<div class="content" data-content>
<div class="head">
<h1 class="title" data-type="title">開発チームの力量 — 差が最も大きいのはテストの自動化</h1>
<p class="window" data-type="window">5 つの観点を 4 段階で自己評価 / 評価は 9 月 / 目標は 1 年後の姿</p>
</div>
<div class="body">
<!-- 等倍で描く。viewBox と width/height を一致させてあるので、
SVG の中の文字の級数は版面の px とそのまま同じ数字になる。 -->
<svg class="figure" width="1100" height="620" viewBox="0 0 1100 620">
<!-- 現状の 3 番目の頂点(テストの自動化)は 1.2 段。見出しが「差が最も大きい」と
言う軸なので、他の軸と同率にならない値にしてある —— 図が見出しを支えないと、
読み手は見出しのほうを疑う。
塗りより後に目盛りを描くのは、4 段階の目盛りが塗りの下に隠れると
「4 段階で自己評価」という見出しが図から確かめられなくなるため。 -->
<polygon class="now" points="550,206.5 703.1,260.3 590.6,365.8 475.6,412.3 462.5,281.6"/>
<!-- 目盛りの環は外周と相似。半径 230 / 172.5 / 115 / 57.5 に対し
sin72=0.95106 cos72=0.30902 sin144=0.58779 cos144=-0.80902 で出した値で、
1px でもずれると環が五角形でなくなる。 -->
<polygon class="web" points="550,80 768.74,238.93 685.19,496.07 414.81,496.07 331.26,238.93"/>
<polygon class="web" points="550,137.5 714.06,256.69 651.39,449.56 448.61,449.56 385.94,256.69"/>
<polygon class="web" points="550,195 659.37,274.46 617.6,403.04 482.4,403.04 440.63,274.46"/>
<polygon class="web" points="550,252.5 604.69,292.23 583.8,356.52 516.2,356.52 495.31,292.23"/>
<path class="spoke" d="M550 310L550 80M550 310L768.74 238.93M550 310L685.19 496.07M550 310L414.81 496.07M550 310L331.26 238.93"/>
<polygon class="target" points="550,126 735.9,249.6 644.6,440.2 448.6,449.6 396.9,260.3"/>
<text class="axis-label" data-type="axisLabel" x="550" y="38" text-anchor="middle" dominant-baseline="central">要件を言葉にする</text>
<text class="axis-label" x="808.7" y="226" text-anchor="start" dominant-baseline="central">見積りの精度</text>
<text class="axis-label" x="709.9" y="530" text-anchor="middle" dominant-baseline="central">テストの自動化</text>
<text class="axis-label" x="390.1" y="530" text-anchor="middle" dominant-baseline="central">運用への引き継ぎ</text>
<text class="axis-label" x="291.3" y="226" text-anchor="end" dominant-baseline="central">障害からの復旧</text>
<rect class="swatch-now" x="60" y="48" width="30" height="18"/>
<text class="legend-label" data-type="legendLabel" x="104" y="57" text-anchor="start" dominant-baseline="central">いまの姿</text>
<rect class="swatch-target" x="60" y="88" width="30" height="18"/>
<text class="legend-label" x="104" y="97" text-anchor="start" dominant-baseline="central">1 年後の目標</text>
</svg>
<p class="conclusion" data-type="conclusion">4 つは道具と手順で詰められる。テストの自動化だけは、書く時間を確保する話になる</p>
</div>
<div class="foot" data-type="note">自己評価なので他チームとの比較には使えない。同じ物差しで測った前回との差を見る。</div>
</div>
</div>
/designs/radar-profile-now-target/font.css — Not in Everything
/* dv-subset v2 — generated by scripts/subset-font.mjs. Do not edit.
* font Zen Kaku Gothic New 400;500;700
* chars 103 (1dea90518db973cd)
*
* pattern.html の文字だけを含む部分集合。描画時に外部へ取りに行かないよう同梱する。
* 版の文字を変えたら取り直すこと — 忘れると足りない字が豆腐になる。
* その取り忘れは pattern-entries.test.ts が上の指紋で検出する。
*/
@font-face {
font-family: 'Zen Kaku Gothic New';
font-style: normal;
font-weight: 400;
font-display: block;
src: url(./font-0.woff2) format('woff2');
unicode-range: U+2f, U+31, U+34-35, U+39, U+2014, U+3001-3002, U+3044, U+3048, U+304b-3052, U+3057-305a, U+305f-3060, U+3063-306b, U+306e-3070, U+3078-3079, U+307e, U+3081-3082, U+3089-308c, U+3092, U+3099, U+30b9-30ba, U+30c1-30c2, U+30c6-30c9, U+30e0, U+30fc, U+4ed6, U+4ef6, U+4f7f, U+4fa1, U+4fdd, U+5177, U+524d, U+529b, U+52d5, U+5316, U+540c, U+56de, U+5927, U+59ff, U+5bb3, U+5dee, U+5df1, U+5e74, U+5ea6, U+5f15, U+5f8c, U+5fa9, U+624b, U+65e7, U+6642, U+66f8, U+6700, U+6708, U+6a19, U+6bb5, U+6bd4, U+6e2c, U+70b9, U+7269, U+7528, U+767a, U+76ee, U+78ba, U+7a4d, U+7cbe, U+7d99, U+81ea, U+8449, U+8981, U+898b, U+89b3, U+8a00, U+8a55, U+8a70-8a71, U+8f03, U+904b, U+9053, U+91cf, U+958b, U+9593, U+968e, U+969c, U+9806;
}
@font-face {
font-family: 'Zen Kaku Gothic New';
font-style: normal;
font-weight: 500;
font-display: block;
src: url(./font-1.woff2) format('woff2');
unicode-range: U+2f, U+31, U+34-35, U+39, U+2014, U+3001-3002, U+3044, U+3048, U+304b-3052, U+3057-305a, U+305f-3060, U+3063-306b, U+306e-3070, U+3078-3079, U+307e, U+3081-3082, U+3089-308c, U+3092, U+3099, U+30b9-30ba, U+30c1-30c2, U+30c6-30c9, U+30e0, U+30fc, U+4ed6, U+4ef6, U+4f7f, U+4fa1, U+4fdd, U+5177, U+524d, U+529b, U+52d5, U+5316, U+540c, U+56de, U+5927, U+59ff, U+5bb3, U+5dee, U+5df1, U+5e74, U+5ea6, U+5f15, U+5f8c, U+5fa9, U+624b, U+65e7, U+6642, U+66f8, U+6700, U+6708, U+6a19, U+6bb5, U+6bd4, U+6e2c, U+70b9, U+7269, U+7528, U+767a, U+76ee, U+78ba, U+7a4d, U+7cbe, U+7d99, U+81ea, U+8449, U+8981, U+898b, U+89b3, U+8a00, U+8a55, U+8a70-8a71, U+8f03, U+904b, U+9053, U+91cf, U+958b, U+9593, U+968e, U+969c, U+9806;
}
@font-face {
font-family: 'Zen Kaku Gothic New';
font-style: normal;
font-weight: 700;
font-display: block;
src: url(./font-2.woff2) format('woff2');
unicode-range: U+2f, U+31, U+34-35, U+39, U+2014, U+3001-3002, U+3044, U+3048, U+304b-3052, U+3057-305a, U+305f-3060, U+3063-306b, U+306e-3070, U+3078-3079, U+307e, U+3081-3082, U+3089-308c, U+3092, U+3099, U+30b9-30ba, U+30c1-30c2, U+30c6-30c9, U+30e0, U+30fc, U+4ed6, U+4ef6, U+4f7f, U+4fa1, U+4fdd, U+5177, U+524d, U+529b, U+52d5, U+5316, U+540c, U+56de, U+5927, U+59ff, U+5bb3, U+5dee, U+5df1, U+5e74, U+5ea6, U+5f15, U+5f8c, U+5fa9, U+624b, U+65e7, U+6642, U+66f8, U+6700, U+6708, U+6a19, U+6bb5, U+6bd4, U+6e2c, U+70b9, U+7269, U+7528, U+767a, U+76ee, U+78ba, U+7a4d, U+7cbe, U+7d99, U+81ea, U+8449, U+8981, U+898b, U+89b3, U+8a00, U+8a55, U+8a70-8a71, U+8f03, U+904b, U+9053, U+91cf, U+958b, U+9593, U+968e, U+969c, U+9806;
}
レーダーの弱点は面積である。目が最初に拾うのは多角形の広さだが、その広さは軸の 並び順で変わってしまう。だからこの版は面積を主張に使わず、どの軸で差が開いて いるかだけを言う。
現状と目標に色を分けなかったのも同じ理由である。色が違うと 2 つは別の評価に見え、 「同じ物差しで測った前と後」という一番肝心な前提が消える。