{
  "id": "contour-plot-latency-capacity-surface",
  "schemaVersion": 2,
  "title": {
    "ja": "同時接続数とキャッシュ命中率 — 応答遅延の等値線",
    "en": "Concurrency and Cache Hit Rate — Latency Contours"
  },
  "summary": {
    "ja": "連続する二変数応答面を等しいp95応答時間の境界線と内側の段階色で示すcontour plot",
    "en": "A contour plot encodes a continuous two-variable response surface with equal-p95-latency isolines and nested bands."
  },
  "capturedAt": "2026-09-25",
  "categories": [
    "presentation"
  ],
  "tags": [
    "data-viz",
    "minimal"
  ],
  "useCases": [
    "comparison",
    "comparison"
  ],
  "format": "slide-16x9",
  "density": "medium",
  "layout": {
    "kind": "axis",
    "canvas": {
      "w": 1920,
      "h": 1080
    },
    "margin": {
      "top": 100,
      "right": 140,
      "bottom": 100,
      "left": 140
    }
  },
  "type": {
    "title": {
      "size": 46,
      "weight": 700,
      "tracking": "0.01em"
    },
    "subtitle": {
      "size": 22,
      "weight": 500
    },
    "axisTitle": {
      "size": 22,
      "weight": 700
    },
    "tick": {
      "size": 20,
      "weight": 500
    },
    "legend": {
      "size": 20,
      "weight": 500
    },
    "takeaway": {
      "size": 28,
      "weight": 500
    },
    "note": {
      "size": 20,
      "weight": 400
    }
  },
  "colors": {
    "ground": "#FFFFFF",
    "surface": "#F4F6F9",
    "ink": "#131820",
    "muted": "#667183",
    "accent": "#1F5FA8",
    "rule": "#DBE1E9",
    "series": [
      "#5D8FB8",
      "#96B9D4",
      "#C8DBEA",
      "#E8F0F7"
    ]
  },
  "rules": [
    {
      "ja": "横軸は同時接続数0–500、縦軸はキャッシュ命中率0–100%",
      "en": "The x-axis is concurrency from 0 to 500 and the y-axis is cache hit rate from 0 to 100%."
    },
    {
      "ja": "等値線100/110/120/130msは応答面z=70+0.0005(x−250)^2+0.04(y−70)^2の境界",
      "en": "The 100/110/120/130 ms contours are level sets of z=70+0.0005(x−250)^2+0.04(y−70)^2."
    },
    {
      "ja": "色面は内側が低遅延、外側が高遅延となるように入れ子で塗り分ける",
      "en": "Nested bands use deeper fills toward lower latency and lighter fills outside."
    },
    {
      "ja": "架空モデルの応答面であり、実環境計測や容量保証を示さない",
      "en": "A synthetic response surface, not real-world measurements or a capacity guarantee."
    }
  ],
  "cover": "https://design-vault.pages.dev/_astro/cover.B6l6grAQ.png",
  "assets": [],
  "shortlist": false,
  "status": "published",
  "relations": {
    "similar": []
  },
  "license": "Original",
  "publishedAt": null,
  "reproduction": {
    "spec": {
      "format": "slide-16x9",
      "density": "medium",
      "layout": {
        "kind": "axis",
        "canvas": {
          "w": 1920,
          "h": 1080
        },
        "margin": {
          "top": 100,
          "right": 140,
          "bottom": 100,
          "left": 140
        }
      },
      "type": {
        "title": {
          "size": 46,
          "weight": 700,
          "tracking": "0.01em"
        },
        "subtitle": {
          "size": 22,
          "weight": 500
        },
        "axisTitle": {
          "size": 22,
          "weight": 700
        },
        "tick": {
          "size": 20,
          "weight": 500
        },
        "legend": {
          "size": 20,
          "weight": 500
        },
        "takeaway": {
          "size": 28,
          "weight": 500
        },
        "note": {
          "size": 20,
          "weight": 400
        }
      },
      "colors": {
        "ground": "#FFFFFF",
        "surface": "#F4F6F9",
        "ink": "#131820",
        "muted": "#667183",
        "accent": "#1F5FA8",
        "rule": "#DBE1E9",
        "series": [
          "#5D8FB8",
          "#96B9D4",
          "#C8DBEA",
          "#E8F0F7"
        ]
      },
      "rules": [
        "The x-axis is concurrency from 0 to 500 and the y-axis is cache hit rate from 0 to 100%.",
        "The 100/110/120/130 ms contours are level sets of z=70+0.0005(x−250)^2+0.04(y−70)^2.",
        "Nested bands use deeper fills toward lower latency and lighter fills outside.",
        "A synthetic response surface, not real-world measurements or a capacity guarantee."
      ]
    },
    "prompt": {
      "ja": "以下の仕様でスライドを 1 枚作ってください。\n\n- 版面 1920 × 1080\n- 余白 上 100 右 140 下 100 左 140\n\n## 文字（版面 1920px に対する px）\ntitle  46px / 700 / 字間 0.01em\nsubtitle  22px / 500\naxisTitle  22px / 700\ntick  20px / 500\nlegend  20px / 500\ntakeaway  28px / 500\nnote  20px / 400\n\n## 配色\n地 #FFFFFF / 面 #F4F6F9 / 文字 #131820 / 補助 #667183 / 強調 #1F5FA8 / 罫 #DBE1E9 / #5D8FB8 / #96B9D4 / #C8DBEA / #E8F0F7\n\n## 外すと崩れる点\n- 横軸は同時接続数0–500、縦軸はキャッシュ命中率0–100%\n- 等値線100/110/120/130msは応答面z=70+0.0005(x−250)^2+0.04(y−70)^2の境界\n- 色面は内側が低遅延、外側が高遅延となるように入れ子で塗り分ける\n- 架空モデルの応答面であり、実環境計測や容量保証を示さない\n\n内容は［ここに自分の内容を書く］に置き換えてください。寸法と配色はそのまま守ってください。\n正確に再現する場合は、この HTML をそのまま使ってください: https://design-vault.pages.dev/designs/contour-plot-latency-capacity-surface/pattern.html",
      "en": "Produce one slide to the following specification.\n\n- Canvas 1920 × 1080\n- Margin top 100 right 140 bottom 100 left 140\n\n## Type (px against a 1920px canvas)\ntitle  46px / 700 / tracking 0.01em\nsubtitle  22px / 500\naxisTitle  22px / 700\ntick  20px / 500\nlegend  20px / 500\ntakeaway  28px / 500\nnote  20px / 400\n\n## Colour\nGround #FFFFFF / Surface #F4F6F9 / Ink #131820 / Muted #667183 / Accent #1F5FA8 / Rule #DBE1E9 / #5D8FB8 / #96B9D4 / #C8DBEA / #E8F0F7\n\n## Constraints — dropping these breaks it\n- The x-axis is concurrency from 0 to 500 and the y-axis is cache hit rate from 0 to 100%.\n- The 100/110/120/130 ms contours are level sets of z=70+0.0005(x−250)^2+0.04(y−70)^2.\n- Nested bands use deeper fills toward lower latency and lighter fills outside.\n- A synthetic response surface, not real-world measurements or a capacity guarantee.\n\nReplace the content with [your content]. Keep the measurements and colours as given.\nFor an exact reproduction, use the verbatim HTML at https://design-vault.pages.dev/designs/contour-plot-latency-capacity-surface/pattern.html."
    },
    "code": {
      "html": "<!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{--ground:#FFFFFF;--surface:#F4F6F9;--ink:#131820;--muted:#667183;--accent:#1F5FA8;--rule:#DBE1E9;--series-1:#5D8FB8;--series-2:#96B9D4;--series-3:#C8DBEA;--series-4:#E8F0F7;\n  --plot-color-1: #244B6C;\n}*{box-sizing:border-box;margin:0}html,body{width:1920px;height:1080px}body{font-family:\"Zen Kaku Gothic New\",\"Hiragino Sans\",sans-serif}.artboard{width:1920px;height:1080px;padding:100px 140px;background:var(--ground);color:var(--ink)}.content{width:100%;height:100%;position:relative}.figure{position:absolute;left:-140px;top:-100px;width:1920px;height:1080px}</style><div class=\"artboard\" data-artboard><div class=\"content\" data-content><svg class=\"figure\" width=\"1920\" height=\"1080\" viewBox=\"0 0 1920 1080\" xmlns=\"http://www.w3.org/2000/svg\" role=\"img\" aria-label=\"同時接続数とキャッシュ命中率の二次元応答面について、p95応答時間が100、110、120、130ミリ秒になる等値線を楕円で示すcontour plot。\">\n<style>.figure{font-family:\"Zen Kaku Gothic New\",\"Hiragino Sans\",sans-serif}.ground{fill:var(--ground)}.ink{fill:var(--ink)}.muted{fill:var(--muted)}.rule{stroke:var(--rule)}.title{font-size:46px;font-weight:700;letter-spacing:.01em}.subtitle{font-size:22px;font-weight:500}.axis-title{font-size:22px;font-weight:700}.tick{font-size:20px;font-weight:500;fill:var(--muted)}.grid{stroke:var(--ground);stroke-width:1.5}.plot-border{fill:none;stroke:var(--rule);stroke-width:2}.contour{fill:none;stroke:var(--plot-color-1);stroke-width:3}.legend-title{font-size:22px;font-weight:700;fill:var(--ink)}.legend{font-size:20px;font-weight:500;fill:var(--muted)}.takeaway{font-size:28px;font-weight:500;fill:var(--ink)}.note{font-size:20px;font-weight:400;fill:var(--muted)}</style><rect class=\"ground\" width=\"1920\" height=\"1080\"/><text class=\"ink title\" data-type=\"title\" x=\"140\" y=\"153\">同時接続数とキャッシュ命中率 — 応答遅延の等値線</text><text class=\"muted subtitle\" data-type=\"subtitle\" x=\"140\" y=\"201\">p95応答時間の連続応答面 / 架空の性能モデル</text><line class=\"rule\" x1=\"140\" y1=\"238\" x2=\"1780\" y2=\"238\" stroke-width=\"2\"/><text class=\"ink axis-title\" data-type=\"axisTitle\" x=\"810\" y=\"294\" text-anchor=\"middle\">p95応答時間（ms）— 等しい遅延の境界を追う</text><defs><clipPath id=\"plot-clip\"><rect x=\"360\" y=\"360\" width=\"900\" height=\"400\"/></clipPath></defs><g clip-path=\"url(#plot-clip)\"><ellipse cx=\"810\" cy=\"480\" rx=\"623.5382907247957\" ry=\"154.91933384829667\" fill=\"var(--series-4)\"/><ellipse cx=\"810\" cy=\"480\" rx=\"569.2099788303083\" ry=\"141.4213562373095\" fill=\"var(--series-3)\"/><ellipse cx=\"810\" cy=\"480\" rx=\"509.11688245431424\" ry=\"126.49110640673516\" fill=\"var(--series-2)\"/><ellipse cx=\"810\" cy=\"480\" rx=\"440.9081537009721\" ry=\"109.54451150103323\" fill=\"var(--series-1)\"/><line class=\"grid\" x1=\"360\" y1=\"360\" x2=\"360\" y2=\"760\"/><text class=\"tick\" x=\"360\" y=\"793\" text-anchor=\"middle\">0</text><line class=\"grid\" x1=\"540\" y1=\"360\" x2=\"540\" y2=\"760\"/><text class=\"tick\" x=\"540\" y=\"793\" text-anchor=\"middle\">100</text><line class=\"grid\" x1=\"720\" y1=\"360\" x2=\"720\" y2=\"760\"/><text class=\"tick\" x=\"720\" y=\"793\" text-anchor=\"middle\">200</text><line class=\"grid\" x1=\"900\" y1=\"360\" x2=\"900\" y2=\"760\"/><text class=\"tick\" x=\"900\" y=\"793\" text-anchor=\"middle\">300</text><line class=\"grid\" x1=\"1080\" y1=\"360\" x2=\"1080\" y2=\"760\"/><text class=\"tick\" x=\"1080\" y=\"793\" text-anchor=\"middle\">400</text><line class=\"grid\" x1=\"1260\" y1=\"360\" x2=\"1260\" y2=\"760\"/><text class=\"tick\" x=\"1260\" y=\"793\" text-anchor=\"middle\">500</text><line class=\"grid\" x1=\"360\" y1=\"760\" x2=\"1260\" y2=\"760\"/><text class=\"tick\" x=\"340\" y=\"760\" text-anchor=\"end\" dominant-baseline=\"central\">0%</text><line class=\"grid\" x1=\"360\" y1=\"660\" x2=\"1260\" y2=\"660\"/><text class=\"tick\" x=\"340\" y=\"660\" text-anchor=\"end\" dominant-baseline=\"central\">25%</text><line class=\"grid\" x1=\"360\" y1=\"560\" x2=\"1260\" y2=\"560\"/><text class=\"tick\" x=\"340\" y=\"560\" text-anchor=\"end\" dominant-baseline=\"central\">50%</text><line class=\"grid\" x1=\"360\" y1=\"460\" x2=\"1260\" y2=\"460\"/><text class=\"tick\" x=\"340\" y=\"460\" text-anchor=\"end\" dominant-baseline=\"central\">75%</text><line class=\"grid\" x1=\"360\" y1=\"360\" x2=\"1260\" y2=\"360\"/><text class=\"tick\" x=\"340\" y=\"360\" text-anchor=\"end\" dominant-baseline=\"central\">100%</text><ellipse class=\"contour\" cx=\"810\" cy=\"480\" rx=\"440.9081537009721\" ry=\"109.54451150103323\"/><ellipse class=\"contour\" cx=\"810\" cy=\"480\" rx=\"509.11688245431424\" ry=\"126.49110640673516\"/><ellipse class=\"contour\" cx=\"810\" cy=\"480\" rx=\"569.2099788303083\" ry=\"141.4213562373095\"/><ellipse class=\"contour\" cx=\"810\" cy=\"480\" rx=\"623.5382907247957\" ry=\"154.91933384829667\"/></g><rect class=\"plot-border\" x=\"360\" y=\"360\" width=\"900\" height=\"400\"/><text class=\"ink axis-title\" x=\"810\" y=\"832\" text-anchor=\"middle\">同時接続数</text><text class=\"ink axis-title\" x=\"240\" y=\"560\" text-anchor=\"middle\" transform=\"rotate(-90 240 560)\">キャッシュ命中率</text><line class=\"rule\" x1=\"1360\" y1=\"370\" x2=\"1360\" y2=\"760\" stroke-width=\"1.5\"/><text class=\"legend-title\" x=\"1400\" y=\"405\">等遅延線（ms）</text><rect x=\"1400\" y=\"438\" width=\"32\" height=\"24\" rx=\"4\" fill=\"var(--series-1)\"/><text class=\"legend\" x=\"1450\" y=\"458\">100 ms</text><rect x=\"1400\" y=\"486\" width=\"32\" height=\"24\" rx=\"4\" fill=\"var(--series-2)\"/><text class=\"legend\" x=\"1450\" y=\"506\">110 ms</text><rect x=\"1400\" y=\"534\" width=\"32\" height=\"24\" rx=\"4\" fill=\"var(--series-3)\"/><text class=\"legend\" x=\"1450\" y=\"554\">120 ms</text><rect x=\"1400\" y=\"582\" width=\"32\" height=\"24\" rx=\"4\" fill=\"var(--series-4)\"/><text class=\"legend\" x=\"1450\" y=\"602\">130 ms</text><text class=\"muted\" x=\"1400\" y=\"665\" font-size=\"20\">低遅延域</text><text class=\"ink\" x=\"1400\" y=\"705\" font-size=\"22\" font-weight=\"700\">250同時接続</text><text class=\"ink\" x=\"1400\" y=\"737\" font-size=\"22\" font-weight=\"700\">命中率70%</text><text class=\"ink takeaway\" data-type=\"takeaway\" x=\"960\" y=\"927\" text-anchor=\"middle\">命中率70%付近なら、250接続でもp95は約70ms</text><line class=\"rule\" x1=\"140\" y1=\"974\" x2=\"1780\" y2=\"974\" stroke-width=\"1\"/><text class=\"muted note\" data-type=\"note\" x=\"140\" y=\"1013\">等値線はモデルの近似出力。実環境の計測・容量保証ではない。</text></svg></div></div>",
      "url": "https://design-vault.pages.dev/designs/contour-plot-latency-capacity-surface/pattern.html",
      "fonts": [
        "https://design-vault.pages.dev/designs/contour-plot-latency-capacity-surface/font.css",
        "https://design-vault.pages.dev/designs/contour-plot-latency-capacity-surface/font-0.woff2",
        "https://design-vault.pages.dev/designs/contour-plot-latency-capacity-surface/font-1.woff2",
        "https://design-vault.pages.dev/designs/contour-plot-latency-capacity-surface/font-2.woff2"
      ]
    }
  },
  "urls": {
    "ja": "https://design-vault.pages.dev/designs/contour-plot-latency-capacity-surface",
    "en": "https://design-vault.pages.dev/en/designs/contour-plot-latency-capacity-surface"
  },
  "notesMarkdown": "### 視覚的な問い\n同時接続数とキャッシュ命中率の組み合わせを変えると、p95応答時間が同じになる境界や低遅延域はどこに現れるか。\n\n### 構造\n横軸に同時接続数、縦軸にキャッシュ命中率を置いた連続な二変数平面を描く。曲線は同じp95応答時間となる等値線で、内側へ進むほど低遅延になる。塗り分けた帯と等値線を一緒に追うことで、二入力の組み合わせに対する応答面の形と閾値の境界を読む。点を六角形ビンへ集約して点密度を比較するhexbinとは異なり、観測点頻度ではなく連続した応答値の高さを示す。\n\n架空モデルでは同時接続250、キャッシュ命中率70%が約70msの中心低遅延域で、そこから変数を離すと遅延等値線が高くなる。実測ではないため、実環境の性能予測には利用しない。"
}