{"id":17623,"date":"2026-10-12T19:32:10","date_gmt":"2026-10-12T10:32:10","guid":{"rendered":"https:\/\/f1-lap-time.com\/?page_id=17623"},"modified":"2026-10-12T19:32:11","modified_gmt":"2026-10-12T10:32:11","slug":"%e3%82%b7%e3%83%b3%e3%82%ac%e3%83%9d%e3%83%bc%e3%83%abgp%e3%83%ac%e3%83%93%e3%83%a5%e3%83%bc","status":"publish","type":"page","link":"https:\/\/f1-lap-time.com\/?page_id=17623","title":{"rendered":"\u30b7\u30f3\u30ac\u30dd\u30fc\u30ebGP\u30ec\u30d3\u30e5\u30fc"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\u5143\u7956\u30ca\u30a4\u30c8\u30ec\u30fc\u30b9\u306e\u30b7\u30f3\u30ac\u30dd\u30fc\u30ebGP\u3002\u30b3\u30f3\u30af\u30ea\u30fc\u30c8\u30a6\u30a9\u30fc\u30eb\u306b\u56f2\u307e\u308c\u3001\u6c17\u6e29\u3068\u6e7f\u5ea6\u306b\u3088\u308b\u904e\u9177\u306a\u6691\u3055\u3082\u76f8\u307e\u3063\u3066\u3001\u30c9\u30e9\u30a4\u30d0\u30fc\u306b\u3068\u3063\u3066\u306f\u975e\u5e38\u306b\u30bf\u30d5\u306a\u30b5\u30fc\u30ad\u30c3\u30c8\u3060\u3002\u4eca\u56de\u3082\u30c7\u30fc\u30bf\u3092\u4ea4\u3048\u306a\u304c\u3089\u30b0\u30e9\u30f3\u30d7\u30ea\u3092\u632f\u308a\u8fd4\u3063\u3066\u3044\u304f\u3002<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"827\" src=\"https:\/\/f1-lap-time.com\/wp-content\/uploads\/2026\/10\/-1024x827.png\" alt=\"\" class=\"wp-image-17624\" srcset=\"https:\/\/f1-lap-time.com\/wp-content\/uploads\/2026\/10\/-1024x827.png 1024w, https:\/\/f1-lap-time.com\/wp-content\/uploads\/2026\/10\/-300x242.png 300w, https:\/\/f1-lap-time.com\/wp-content\/uploads\/2026\/10\/-768x620.png 768w, https:\/\/f1-lap-time.com\/wp-content\/uploads\/2026\/10\/\u30cd\u30aa\u30f3\u914d\u8272\u306e\u30b5\u30fc\u30ad\u30c3\u30c8\u6226\u7565\u30de\u30c3\u30d7.png 1396w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">\u56f31 \u30b3\u30fc\u30b9\u56f3<\/figcaption><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\">1. \u4eca\u56de\u3082\u9031\u672b\u3092\u5b8c\u5168\u652f\u914d<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u30b9\u30d7\u30ea\u30f3\u30c8\u4e88\u9078\u3067\u5727\u5dfb\u306e\u30dd\u30fc\u30eb\u3092\u7372\u5f97\u3057\u3001\u96e8\u306e\u30b9\u30d7\u30ea\u30f3\u30c8\u30ec\u30fc\u30b9\u3067\u3082\u76e4\u77f3\u306e\u30ec\u30fc\u30b9\u3092\u898b\u305b\u305f\u30d5\u30a7\u30eb\u30b9\u30bf\u30c3\u30da\u30f3\u3002\u4e88\u9078\u3067\u306f\u30eb\u30af\u30ec\u30fc\u30eb\u306b0.1\u79d2\u4ee5\u5185\u306b\u63a5\u8fd1\u3055\u308c\u3001\u6c7a\u52dd\u30ec\u30fc\u30b9\u30b9\u30bf\u30fc\u30c8\u3067\u306f\u4e26\u3070\u308c\u305f\u304c\u3001\u53b3\u3057\u3044\u30e9\u30a4\u30f3\u3067\u30bf\u30fc\u30f31\u3092\u5236\u3057\u3001\u9996\u4f4d\u3067\u30ec\u30fc\u30b9\u3092\u5b8c\u5168\u652f\u914d\u3057\u305f\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u30eb\u30af\u30ec\u30fc\u30eb\u3068\u306e\u30da\u30fc\u30b9\u3092\u6bd4\u8f03\u3057\u306a\u304c\u3089\u3001\u30ec\u30fc\u30b9\u3092\u632f\u308a\u8fd4\u3063\u3066\u307f\u3088\u3046\u3002<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1016\" height=\"520\" src=\"https:\/\/f1-lap-time.com\/wp-content\/uploads\/2026\/10\/newplot-1-1.png\" alt=\"\" class=\"wp-image-17627\" srcset=\"https:\/\/f1-lap-time.com\/wp-content\/uploads\/2026\/10\/newplot-1-1.png 1016w, https:\/\/f1-lap-time.com\/wp-content\/uploads\/2026\/10\/newplot-1-1-300x154.png 300w, https:\/\/f1-lap-time.com\/wp-content\/uploads\/2026\/10\/newplot-1-1-768x393.png 768w\" sizes=\"auto, (max-width: 1016px) 100vw, 1016px\" \/><figcaption class=\"wp-element-caption\">\u56f31 \u30d5\u30a7\u30eb\u30b9\u30bf\u30c3\u30da\u30f3\u3068\u30eb\u30af\u30ec\u30fc\u30eb\u306e\u30ec\u30fc\u30b9\u30da\u30fc\u30b9<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">\u7b2c1\u30b9\u30c6\u30a3\u30f3\u30c8\u3001\u30d5\u30a7\u30eb\u30b9\u30bf\u30c3\u30da\u30f3\u306f\u30eb\u30af\u30ec\u30fc\u30eb\u3088\u308a\u30bf\u30a4\u30e4\u3092\u30de\u30cd\u30b8\u30e1\u30f3\u30c8\u3057\u3001\u5c0f\u3055\u3044\u30c7\u30b0\u30e9\u30c7\u30fc\u30b7\u30e7\u30f3\u3092\u5b9f\u73fe\u3002\u30eb\u30af\u30ec\u30fc\u30eb\u306e\u30da\u30fc\u30b9\u306f\u53f3\u80a9\u4e0b\u304c\u308a\u306b\u306a\u3063\u3066\u3044\u308b\u306e\u306b\u5bfe\u3057\u3001\u30d5\u30a7\u30eb\u30b9\u30bf\u30c3\u30da\u30f3\u306f\u307b\u307c\u6a2a\u3070\u3044\u3001\u3064\u307e\u308a\u30d5\u30e5\u30fc\u30a8\u30eb\u30a8\u30d5\u30a7\u30af\u30c8\uff08\u63a8\u5b9a0.04[s\/lap]\uff09\u3068\u30bf\u30a4\u30e4\u306e\u30c7\u30b0\u30e9\u30c7\u30fc\u30b7\u30e7\u30f3\u304c\u91e3\u308a\u5408\u3063\u305f\u72b6\u614b\u3068\u306a\u3063\u3066\u3044\u308b\u3002<br>\u3053\u3046\u3057\u3066\u30bf\u30a4\u30e4\u3092\u4e0a\u624b\u306b\u4f7f\u3044\u300132\u5468\u76ee\u307e\u3067\u5f15\u3063\u5f35\u308b\u3053\u3068\u306b\u6210\u529f\u3002\u4eca\u56de\u306f\u30bd\u30d5\u30c8\u30bf\u30a4\u30e4\u304c\u30df\u30c7\u30a3\u30a2\u30e0\u3088\u308a\u3082\u6709\u5229\u3067\u3042\u3063\u305f\u305f\u3081\u3001\u30ec\u30fc\u30b9\u306e\u4e2d\u3067\u30bd\u30d5\u30c8\u30bf\u30a4\u30e4\u3092\u4f7f\u3046\u6bd4\u7387\u3092\u5897\u3084\u305b\u305f\u70b9\u3082\u826f\u304b\u3063\u305f\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u3057\u304b\u3057\u3001\u3053\u3053\u3067\u9006\u98a8\u304c\u5439\u304f\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u9577\u304f\u5f15\u3063\u5f35\u3063\u305f\u3053\u3068\u3067\u3001\u30eb\u30af\u30ec\u30fc\u30eb\u3068\u306e\u5dee\u306f\u30d4\u30c3\u30c8\u30a2\u30a6\u30c8\u3057\u305f33\u5468\u76ee\u306e\u6642\u70b9\u30674.7\u79d2\u307e\u3067\u7e2e\u307e\u308a\u3001\u305d\u306e\u5f8c\u5e83\u3052\u305f\u3082\u306e\u306e\u30015.7\u79d2\u306e\u30ae\u30e3\u30c3\u30d7\u3057\u304b\u306a\u3044\u72b6\u614b\u306e39\u5468\u76ee\u306bVSC\u304c\u5c0e\u5165\u3055\u308c\u308b\u3002VSC\u6642\u306e\u30ed\u30b9\u30bf\u30a4\u30e0\u306f12\u79d2\u7a0b\u5ea6\u3060\u3063\u305f\u305f\u3081\u3001\u3053\u3053\u3067\u81ea\u8eab\u304c\u5165\u3063\u3066\u30eb\u30af\u30ec\u30fc\u30eb\u304c\u30b9\u30c6\u30a4\u30a2\u30a6\u30c8\u3057\u305f\u5834\u5408\u3001\u30eb\u30af\u30ec\u30fc\u30eb\u306e\u5f8c\u308d\u306b\u306a\u3063\u3066\u3057\u307e\u3046\u3002\u30bf\u30a4\u30e4\u306e\u5dee\u306f15\u5468\u65b0\u3057\u3044\u72b6\u614b\u306b\u306a\u308b\u304c\u3001\u30eb\u30af\u30ec\u30fc\u30eb\u306e\u7b2c2\u30b9\u30c6\u30a3\u30f3\u30c8\u306e\u30e9\u30c3\u30d7\u30bf\u30a4\u30e0\u3092\u898b\u308c\u3070\u6a2a\u3070\u3044\u3001\u30c7\u30b0\u30e9\u30c7\u30fc\u30b7\u30e7\u30f3\u306f0.04[s\/lap]\u3068\u8a08\u7b97\u3067\u304d\u308b\u305f\u3081\u30010.6\u79d2\u306e\u30bf\u30a4\u30e4\u306e\u30a2\u30c9\u30d0\u30f3\u30c6\u30fc\u30b8\u3068\u3044\u3046\u3053\u3068\u306b\u306a\u308a\u3001\u3053\u308c\u3067\u306f\u30b7\u30f3\u30ac\u30dd\u30fc\u30eb\u306e\u30b3\u30fc\u30b9\u7279\u6027\u4e0a\u629c\u3051\u306a\u3044\u3002\u7b2c1\u30b9\u30c6\u30a3\u30f3\u30c8\u306e\u7dcf\u5408\u7684\u306a\u30da\u30fc\u30b9\u306f\u30d5\u30a7\u30eb\u30b9\u30bf\u30c3\u30da\u30f3\u304c0.3\u79d2\u307b\u3069\u4e0a\u56de\u3063\u3066\u3044\u305f\u304c\u3001\u305d\u308c\u3092\u4e57\u305b\u3066\u30820.9\u79d2\u307b\u3069\u3067\u3001\u629c\u3051\u308b\u304b\u3069\u3046\u304b\u306f\u5fae\u5999\u306a\u3068\u3053\u308d\u3060\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u3060\u304b\u3089\u3053\u305d\u5f7c\u3089\u306f\u30b9\u30c6\u30a4\u30a2\u30a6\u30c8\u3092\u9078\u3093\u3060\u3002\u30eb\u30af\u30ec\u30fc\u30eb\u306f7\u5468\u65b0\u3057\u3044\u30bd\u30d5\u30c8\u30bf\u30a4\u30e4\u3060\u304c\u30017\u5468\u306e\u30aa\u30d5\u30bb\u30c3\u30c8\u306f\u30c7\u30b0\u30e9\u30c7\u30fc\u30b7\u30e7\u30f3\u30920.04[s\/lap]\u3068\u3057\u30660.3\u79d2\u76f8\u5f53\u3001\u30bd\u30d5\u30c8\u30b3\u30f3\u30d1\u30a6\u30f3\u30c9\u306e\u512a\u4f4d\u6027\u306f0.5\u79d2\u7a0b\u5ea6\u3068\u8003\u3048\u3089\u308c\u308b\u305f\u3081\u3001\u30eb\u30af\u30ec\u30fc\u30eb\u306f0.8\u79d2\u5dee\u3067\u8ffd\u3063\u3066\u304f\u308b\u3053\u3068\u306b\u306a\u308b\u3002\u6b8b\u308a\u306f22\u5468\u306718\u79d2\u5dee\u3067\u3042\u308b\u305f\u3081\u3001\u30eb\u30af\u30ec\u30fc\u30eb\u306e\u5730\u529b\u304c\u30d5\u30a7\u30eb\u30b9\u30bf\u30c3\u30da\u30f3\u3068\u4e92\u89d2\u306a\u3089\u3070\u6700\u5f8c\u306b\u8ffd\u3044\u3064\u304b\u308c\u3066\u3082\u304a\u304b\u3057\u304f\u306a\u304b\u3063\u305f\u304c\u3001\u524d\u8ff0\u306e\u901a\u308a\u30d5\u30a7\u30eb\u30b9\u30bf\u30c3\u30da\u30f3\u304c\u305d\u3082\u305d\u30820.3\u79d2\u306e\u30ec\u30fc\u30b9\u30da\u30fc\u30b9\u30a2\u30c9\u30d0\u30f3\u30c6\u30fc\u30b8\u3092\u6709\u3057\u3066\u3044\u305f\u305f\u3081\u3001\u9003\u3052\u5207\u308c\u308b\u7b97\u6bb5\u306f\u9ad8\u304b\u3063\u305f\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u3046\u3057\u30662\u3064\u306e\u9078\u629e\u80a2\u3092\u6bd4\u8f03\u3059\u308b\u3068\u3001\u660e\u3089\u304b\u306b\u30b9\u30c6\u30a4\u30a2\u30a6\u30c8\u304c\u6b63\u89e3\u3067\u3042\u308b\u3053\u3068\u304c\u5206\u304b\u308b\u3002\u30d5\u30a7\u30eb\u30b9\u30bf\u30c3\u30da\u30f3\u304c\u30eb\u30af\u30ec\u30fc\u30eb\u3068\u4e92\u89d2\u306e\u5834\u5408\u3001\u5165\u3063\u3066\u3082\u629c\u3051\u306a\u3044\u53ef\u80fd\u6027\u304c\u9ad8\u304f\u3001\u30b9\u30c6\u30a4\u30a2\u30a6\u30c8\u3057\u3066\u3082\u8ffd\u3044\u3064\u304b\u308c\u308b\u306e\u306f\u7d42\u76e4\u3067\u3001\u629c\u304b\u308c\u306a\u3044\u53ef\u80fd\u6027\u304c\u9ad8\u3044\u3002\u305d\u3057\u3066\u7b2c1\u30b9\u30c6\u30a3\u30f3\u30c8\u306e\u529b\u95a2\u4fc2\u304c\u7d99\u7d9a\u3059\u308b\u306a\u3089\u3070\u3001\u5165\u308c\u3070\u629c\u3051\u306a\u3044\u30ea\u30b9\u30af\u306b\u76f4\u9762\u3057\u3001\u30b9\u30c6\u30a4\u30a2\u30a6\u30c8\u306a\u3089\u8ffd\u3044\u3064\u304b\u308c\u308b\u3053\u3068\u3082\u306a\u3044\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u30de\u30ec\u30fc\u30b7\u30a2\u3068\u30b7\u30f3\u30ac\u30dd\u30fc\u30eb\u3068\u3044\u30462\u3064\u306e\u5168\u304f\u7570\u306a\u308b\u30c8\u30e9\u30c3\u30af\u3092\u5b8c\u5168\u5236\u8987\u3057\u305f\u30d5\u30a7\u30eb\u30b9\u30bf\u30c3\u30da\u30f3\u3002\u30ec\u30c3\u30c9\u30d6\u30eb\u306e\u6226\u95d8\u529b\u306f\u78ba\u5b9f\u306b\u4e0a\u304c\u3063\u3066\u304d\u3066\u304a\u308a\u3001\u6b8b\u308a\u306e\u30ec\u30fc\u30b9\u3067\u3082\u307b\u307c\u5168\u3066\u306e\u30b5\u30fc\u30ad\u30c3\u30c8\u3067\u5f37\u3055\u3092\u898b\u305b\u308b\u3060\u308d\u3046\u3002<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Pos<\/th><th>Driver<\/th><th>Car<\/th><th>Pts<\/th><\/tr><\/thead><tbody><tr><td>2<\/td><td>George Russell<\/td><td>Mercedes<\/td><td>238<\/td><\/tr><tr><td>3<\/td><td>Lewis Hamilton<\/td><td>Ferrari<\/td><td>229<\/td><\/tr><tr><td>4<\/td><td>Max Verstappen<\/td><td>Red Bull Racing<\/td><td>221<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">2\u4f4d\u4e89\u3044\u306e\u30e9\u30f3\u30ad\u30f3\u30b0\u3092\u898b\u308c\u3070\u3001\u30cf\u30df\u30eb\u30c8\u30f3\u306f\u76ee\u524d\u3001\u305d\u3057\u3066\u30e9\u30c3\u30bb\u30eb\u308217\u30dd\u30a4\u30f3\u30c8\u5dee\u307e\u3067\u8feb\u3063\u3066\u3044\u308b\u3002\u30e1\u30eb\u30bb\u30c7\u30b9\u306f\u30a8\u30cd\u30eb\u30ae\u30fc\u30de\u30cd\u30b8\u30e1\u30f3\u30c8\u306e\u91cd\u8981\u5ea6\u304c\u9ad8\u3044\u30e9\u30b9\u30d9\u30ac\u30b9\u3067\u901f\u3044\u3068\u601d\u308f\u308c\u308b\u304c\u3001\u30ec\u30c3\u30c9\u30d6\u30eb\u3082\u30a2\u30bc\u30eb\u30d0\u30a4\u30b8\u30e3\u30f3\u3067\u7af6\u4e89\u529b\u3092\u898b\u305b\u305f\u305f\u3081\u3001\u5b8c\u5168\u306b\u5c04\u7a0b\u570f\u5185\u3068\u8003\u3048\u3066\u826f\u3044\u3060\u308d\u3046\u3002\u4eca\u5e74\u306f2\u4f4d\u4e89\u3044\u304c\u767d\u71b1\u3057\u305d\u3046\u3060\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2. \u5f37\u3044\u30a2\u30f3\u30c8\u30cd\u30c3\u30ea\u3068\u6697\u9ed2\u306e\u30bf\u30a4\u30c8\u30eb\u6c7a\u5b9a\u30ea\u30b9\u30af<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u4eca\u56de\u306f\u30a2\u30f3\u30c8\u30cd\u30c3\u30ea\u306e\u5f37\u3055\u304c\u5149\u308b\u9031\u672b\u3067\u3082\u3042\u3063\u305f\u3002\u30b9\u30d7\u30ea\u30f3\u30c8\u30ec\u30fc\u30b9\u3067\u306f\u4ed6\u8eca\u3068\u6bd4\u3079\u3066\u6a2aG\u304c\u5c11\u306a\u3044\u72b6\u614b\u3067\u30b3\u30fc\u30ca\u30fc\u3092\u7acb\u3061\u4e0a\u304c\u308a\u3001\u30b9\u30c8\u30ec\u30fc\u30c8\u3067\u3082\u4ed6\u8eca\u3068\u306f\u7570\u306a\u308b\u30e9\u30a4\u30f3\u3067\u7a4d\u6975\u7684\u306b\u6c34\u3092\u62fe\u3044\u3001\u30bf\u30a4\u30e4\u3092\u6301\u305f\u305b\u308b\u3053\u3068\u3092\u7d76\u5bfe\u7684\u306a\u6700\u512a\u5148\u4e8b\u9805\u3068\u3057\u3066\u3044\u305f\u3002\u305d\u306e\u7532\u6590\u3042\u3063\u3066\u3001\u7d42\u76e4\u306b\u306f\u30eb\u30af\u30ec\u30fc\u30eb\u3092\u5148\u982d\u3068\u3059\u308b\u96c6\u56e3\u306e\u80cc\u5f8c\u3067\u30c1\u30e3\u30f3\u30b9\u3092\u5f85\u3061\u69cb\u3048\u3001\u524d\u304c\u3069\u3093\u306a\u306b\u9045\u304f\u3066\u3082\u30ce\u30ea\u30b9\u30680.7~0.8\u79d2\u3068\u3044\u3046\u9069\u5207\u306a\u9593\u5408\u3044\u3092\u30ad\u30fc\u30d7\u3057\u305f\u3053\u3068\u3067\u3001\u30de\u30af\u30e9\u30fc\u30ec\u30f3\u52e2\u306e\u540c\u58eb\u8a0e\u3061\u306b\u5dfb\u304d\u8fbc\u307e\u308c\u305a\u3001\u3059\u308a\u629c\u3051\u3066\u3044\u304f\u3053\u3068\u304c\u3067\u304d\u305f\u3002\u540c\u58eb\u8a0e\u3061\u304c\u8d77\u304d\u305f\u3053\u3068\u81ea\u4f53\u306f\u5e78\u904b\u3060\u304c\u3001\u30e9\u30f3\u30aa\u30d5\u306e\u7121\u3044\u5e02\u8857\u5730\u30673\u53f0\u76ee\u306e\u30af\u30e9\u30c3\u30b7\u30e5\u8eca\u4e21\u306b\u306a\u3089\u306a\u304b\u3063\u305f\u306e\u306f\u3001\u5224\u65ad\u529b\u304c\u3082\u305f\u3089\u3057\u305f\u7d50\u679c\u3060\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u305d\u3057\u3066\u8fce\u3048\u305f\u6c7a\u52dd\u30ec\u30fc\u30b9\u3002\u30d5\u30a7\u30eb\u30b9\u30bf\u30c3\u30da\u30f3\u3068\u306e\u6bd4\u8f03\u3067\u30da\u30fc\u30b9\u3092\u898b\u3066\u307f\u3088\u3046\u3002<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1016\" height=\"520\" src=\"https:\/\/f1-lap-time.com\/wp-content\/uploads\/2026\/10\/newplot-2-2.png\" alt=\"\" class=\"wp-image-17629\" srcset=\"https:\/\/f1-lap-time.com\/wp-content\/uploads\/2026\/10\/newplot-2-2.png 1016w, https:\/\/f1-lap-time.com\/wp-content\/uploads\/2026\/10\/newplot-2-2-300x154.png 300w, https:\/\/f1-lap-time.com\/wp-content\/uploads\/2026\/10\/newplot-2-2-768x393.png 768w\" sizes=\"auto, (max-width: 1016px) 100vw, 1016px\" \/><figcaption class=\"wp-element-caption\">\u56f32 \u30d5\u30a7\u30eb\u30b9\u30bf\u30c3\u30da\u30f3\u3068\u30a2\u30f3\u30c8\u30cd\u30c3\u30ea\u306e\u30ec\u30fc\u30b9\u30da\u30fc\u30b9<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">\u7b2c1\u30b9\u30c6\u30a3\u30f3\u30c8\u306f\u30cf\u30df\u30eb\u30c8\u30f3\u306e\u5f8c\u65b9\u306b\u5f15\u3063\u304b\u304b\u3063\u3066\u3057\u307e\u3046\u304c\u3001\u524d\u304c\u3044\u306a\u304f\u306a\u308b\u3068\u9014\u7aef\u306b\u30d5\u30a7\u30eb\u30b9\u30bf\u30c3\u30da\u30f3\u306b\u5339\u6575\u3059\u308b\u30da\u30fc\u30b9\u3092\u767a\u63ee\u3057\u305f\u3002\u305f\u3060\u3057\u3053\u308c\u306f\u3001\u305d\u308c\u307e\u3067\u30df\u30c7\u30a3\u30a2\u30e0\u306e\u30cf\u30df\u30eb\u30c8\u30f3\u306e\u5f8c\u308d\u3067\u9045\u3044\u30da\u30fc\u30b9\u3067\u8d70\u3089\u3055\u308c\u305f\u3053\u3068\u3067\u30bf\u30a4\u30e4\u3092\u30bb\u30fc\u30d6\u3067\u304d\u305f\u3053\u3068\u3001\u305d\u3057\u3066\u30ce\u30ea\u30b9\u306b\u5bfe\u3057\u3066\u5dee\u3092\u5e83\u3052\u306a\u3051\u308c\u3070\u30a2\u30f3\u30c0\u30fc\u30ab\u30c3\u30c8\u3055\u308c\u3066\u3057\u307e\u3046\u305f\u3081\u3001\u9577\u304f\u6301\u305f\u305b\u308b\u3088\u308a\u3082\u30bf\u30a4\u30e4\u3092\u4f7f\u3063\u3066\u30da\u30fc\u30b9\u30a2\u30c3\u30d7\u3057\u3066\u3044\u305f\u3068\u8003\u3048\u3089\u308c\u308b\u3053\u3068\u304c\u50cd\u3044\u3066\u304a\u308a\u3001\u3053\u306e\u90e8\u5206\u3092\u898b\u3066\u30d5\u30a7\u30eb\u30b9\u30bf\u30c3\u30da\u30f3\u3068\u4e92\u89d2\u3068\u307e\u3067\u306f\u8a00\u3048\u306a\u3044\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u305d\u3057\u3066\u305d\u306e\u5f8c\u3082\u9069\u5207\u306b\u30bf\u30a4\u30e4\u3092\u7ba1\u7406\u3057\u7d9a\u3051\u3001\u7d42\u76e4\u306b\u306f\u30cf\u30df\u30eb\u30c8\u30f3\u306b\u4ed5\u639b\u3051\u308b\u969b\u306b\u9699\u304c\u751f\u307e\u308c\u305f\u30ce\u30ea\u30b9\u3092\u30aa\u30fc\u30d0\u30fc\u30c6\u30a4\u30af\u3002\u3053\u3053\u3067\u3082\u3001\u524d\u304c\u30d0\u30c8\u30eb\u72b6\u614b\u306b\u3042\u308b\u6642\u306e\u9593\u5408\u3044\u306e\u53d6\u308a\u65b9\u306e\u4e0a\u624b\u3055\u304c\u767a\u63ee\u3055\u308c\u305f\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u3055\u3066\u3001\u554f\u984c\u306f\u30e9\u30c3\u30bb\u30eb\u3068\u306e\u5dee\u304c102\u30dd\u30a4\u30f3\u30c8\u306b\u5e83\u304c\u3063\u3066\u3057\u307e\u3063\u305f\u3053\u3068\u3060\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6b21\u6226USGP\u7d42\u4e86\u6642\u70b9\u3067100\u30dd\u30a4\u30f3\u30c8\u4ee5\u4e0a\u306b\u306a\u3063\u3066\u3057\u307e\u3046\u3068\u3001\u4e2d\u67712\u9023\u6226\u304c\u4e2d\u6b62\u306b\u306a\u308a\u3001\u30a4\u30e2\u30e9\u3067\u4ee3\u66ff\u958b\u50ac\u3068\u306a\u3063\u305f\u969b\u306b\u3001\u305d\u306e\u77e5\u3089\u305b\u3068\u3068\u3082\u306b\u30c1\u30e3\u30f3\u30d4\u30aa\u30f3\u304c\u6c7a\u5b9a\u3059\u308b\u3068\u3044\u3046\u3001\u6700\u60aa\u306e\u30b7\u30ca\u30ea\u30aa\u304c\u5b9f\u73fe\u3057\u3066\u3057\u307e\u3046\u304b\u3082\u3057\u308c\u306a\u3044\u306e\u3060\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u73fe\u5728\u3001\u4e2d\u6771\u60c5\u52e2\u306e\u5f71\u97ff\u306b\u3088\u3063\u3066\u3001\u6700\u7d422\u6226\u306e\u30ab\u30bf\u30fc\u30ebGP\u3068\u30a2\u30d6\u30c0\u30d3GP\u306e\u958b\u50ac\u306f\u4e0d\u900f\u660e\u306a\u72b6\u6cc1\u3060\u3002F1\u306f\u958b\u50ac\u7d99\u7d9a\u3092\u57fa\u672c\u65b9\u91dd\u3068\u3057\u3066\u3044\u308b\u3082\u306e\u306e\u3001\u4e21\u30ec\u30fc\u30b9\u3092\u4e2d\u6b62\u3057\u3001\u4ee3\u308f\u308a\u306b\u30a4\u30e2\u30e9\u3067\u6700\u7d42\u6226\u3092\u958b\u50ac\u3059\u308b\u6848\u3082\u6e96\u5099\u3055\u308c\u3066\u3044\u308b\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u3053\u3067\u91cd\u8981\u306b\u306a\u308b\u306e\u304c\u3001\u6b8b\u308a\u306e\u7372\u5f97\u53ef\u80fd\u30dd\u30a4\u30f3\u30c8\u3060\u3002<br>\u5f53\u521d\u306e\u30ab\u30ec\u30f3\u30c0\u30fc\u3067\u306f\u3001\u6b21\u6226USGP\u3092\u7d42\u3048\u3066\u3082\u6b8b\u308a5\u6226\u3001\u6700\u5927125\u30dd\u30a4\u30f3\u30c8\u304c\u6b8b\u3055\u308c\u3066\u3044\u308b\u3002\u3057\u304b\u3057\u3001\u4e2d\u67712\u9023\u6226\u304c\u4e2d\u6b62\u3055\u308c\u3001\u30a4\u30e2\u30e9\u306e1\u6226\u306b\u7f6e\u304d\u63db\u308f\u3063\u305f\u5834\u5408\u3001\u6b8b\u308a\u306f4\u6226\u3001\u6700\u5927100\u30dd\u30a4\u30f3\u30c8\u3068\u306a\u308b\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u3064\u307e\u308a\u3001USGP\u7d42\u4e86\u6642\u70b9\u3067\u30a2\u30f3\u30c8\u30cd\u30c3\u30ea\u304c\u30e9\u30f3\u30ad\u30f3\u30b02\u4f4d\u306b100\u30dd\u30a4\u30f3\u30c8\u4ee5\u4e0a\u306e\u5dee\u3092\u3064\u3051\u3066\u3044\u308c\u3070\u3001\u30ab\u30ec\u30f3\u30c0\u30fc\u5909\u66f4\u306e\u6b63\u5f0f\u6c7a\u5b9a\u3068\u540c\u6642\u306b\u30ef\u30fc\u30eb\u30c9\u30c1\u30e3\u30f3\u30d4\u30aa\u30f3\u304c\u78ba\u5b9a\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u3002100\u30dd\u30a4\u30f3\u30c8\u5dee\u3067\u4e26\u3076\u53ef\u80fd\u6027\u304c\u6b8b\u3063\u3066\u3082\u3001\u3059\u3067\u306b8\u52dd\u3092\u6319\u3052\u3066\u3044\u308b\u30a2\u30f3\u30c8\u30cd\u30c3\u30ea\u306f\u52dd\u5229\u6570\u306b\u3088\u308b\u9806\u4f4d\u6c7a\u5b9a\u3067\u512a\u4f4d\u306b\u7acb\u3064\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u3082\u3057USGP\u7d42\u4e86\u5f8c\u306b\u30ab\u30ec\u30f3\u30c0\u30fc\u5909\u66f4\u304c\u767a\u8868\u3055\u308c\u305f\u3089\u3001\u3069\u3046\u306a\u308b\u3060\u308d\u3046\u304b\u3002\u30a2\u30f3\u30c8\u30cd\u30c3\u30ea\u306f\u3001\u3044\u3064\u3082\u901a\u308a\u6b21\u306e\u30ec\u30fc\u30b9\u306b\u5411\u3051\u3066\u6e96\u5099\u3092\u3057\u3066\u3044\u308b\u304b\u3082\u3057\u308c\u306a\u3044\u3002\u305d\u3053\u3078\u30c8\u30c8\u30fb\u30a6\u30a9\u30eb\u30d5\u304b\u3089\u4e00\u672c\u306e\u96fb\u8a71\u304c\u5165\u308b\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u300c\u30ad\u30df\u3001\u541b\u304c\u30ef\u30fc\u30eb\u30c9\u30c1\u30e3\u30f3\u30d4\u30aa\u30f3\u3060\u300d<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u305d\u3093\u306a\u5f62\u3067\u3001\u53f2\u4e0a\u6700\u5e74\u5c11\u30c1\u30e3\u30f3\u30d4\u30aa\u30f3\u304c\u8a95\u751f\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308b\u306e\u3060\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u3082\u3061\u308d\u3093\u3001\u30a2\u30f3\u30c8\u30cd\u30c3\u30ea\u306e\u6234\u51a0\u306f\u3001\u3053\u308c\u307e\u3067\u7a4d\u307f\u91cd\u306d\u3066\u304d\u305f8\u52dd\u3068\u5727\u5012\u7684\u306a\u5b89\u5b9a\u611f\u306b\u3088\u3063\u3066\u52dd\u3061\u53d6\u3089\u308c\u308b\u3082\u306e\u3060\u3002\u3057\u304b\u3057\u3001F1\u306e\u9802\u70b9\u306b\u7acb\u3064\u77ac\u9593\u306f\u3001\u3069\u306e\u30c9\u30e9\u30a4\u30d0\u30fc\u306b\u3068\u3063\u3066\u3082\u7279\u5225\u306a\u3082\u306e\u3060\u308d\u3046\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u3060\u304b\u3089\u3053\u305d\u3001\u73fe\u5728\u306e\u4e2d\u67712\u9023\u6226\u3092\u5de1\u308b\u72b6\u6cc1\u306b\u306f\u7591\u554f\u3092\u611f\u3058\u3056\u308b\u3092\u5f97\u306a\u3044\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e2d\u6771\u60c5\u52e2\u304c\u4e0d\u5b89\u5b9a\u306a\u4e2d\u3001F1\u306f\u30ab\u30bf\u30fc\u30ebGP\u3068\u30a2\u30d6\u30c0\u30d3GP\u306e\u958b\u50ac\u7d99\u7d9a\u3092\u8868\u660e\u3057\u3066\u3044\u308b\u3002\u3057\u304b\u3057\u3001\u958b\u50ac\u6a29\u6599\u3084\u4e2d\u6b62\u306b\u4f34\u3046\u8cbb\u7528\u8ca0\u62c5\u3092\u5de1\u308b\u99c6\u3051\u5f15\u304d\u304c\u3001\u5224\u65ad\u306e\u9045\u308c\u306b\u3064\u306a\u304c\u3063\u3066\u3044\u308b\u3068\u306e\u5831\u9053\u3082\u3042\u308b\u3002<br>\u601d\u3044\u51fa\u3055\u308c\u308b\u306e\u306f2020\u5e74\u306e\u30aa\u30fc\u30b9\u30c8\u30e9\u30ea\u30a2GP\u3060\u3002\u65b0\u578b\u30b3\u30ed\u30ca\u30a6\u30a4\u30eb\u30b9\u306e\u611f\u67d3\u62e1\u5927\u304c\u61f8\u5ff5\u3055\u308c\u308b\u4e2d\u3001\u958b\u50ac\u306b\u5411\u3051\u305f\u6e96\u5099\u304c\u9032\u3081\u3089\u308c\u3001\u7d50\u5c40\u306f\u958b\u5e55\u5f53\u65e5\u306e\u671d\u306b\u4e2d\u6b62\u304c\u767a\u8868\u3055\u308c\u305f\u3002\u4eca\u56de\u3082\u3001\u30c1\u30fc\u30e0\u30b9\u30bf\u30c3\u30d5\u3084\u95a2\u4fc2\u8005\u306e\u5b89\u5168\u78ba\u4fdd\u3001\u6e21\u822a\u3084\u7269\u6d41\u306e\u624b\u914d\u306a\u3069\u3001\u65e9\u671f\u306e\u5224\u65ad\u3092\u5fc5\u8981\u3068\u3059\u308b\u7406\u7531\u306f\u3044\u304f\u3089\u3067\u3082\u3042\u308b\u3002\u305d\u3057\u3066\u4eca\u3001\u305d\u306e\u5224\u65ad\u306f\u30ef\u30fc\u30eb\u30c9\u30c1\u30e3\u30f3\u30d4\u30aa\u30f3\u8a95\u751f\u306e\u77ac\u9593\u306b\u307e\u3067\u5f71\u97ff\u3057\u304b\u306d\u306a\u3044\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u30a2\u30f3\u30c8\u30cd\u30c3\u30ea\u672c\u4eba\u3001\u5f7c\u3092\u652f\u3048\u3066\u304d\u305f\u30e1\u30eb\u30bb\u30c7\u30b9\u306e\u4eba\u3005\u3001\u305d\u3057\u3066\u6b74\u53f2\u7684\u77ac\u9593\u3092\u5f85\u3061\u671b\u3080\u30d5\u30a1\u30f3\u305f\u3061\u3002\u305d\u306e\u6b53\u559c\u306e\u77ac\u9593\u304c\u3001\u958b\u50ac\u6a29\u6599\u3092\u5de1\u308b\u99c6\u3051\u5f15\u304d\u306b\u3088\u3063\u3066\u640d\u306a\u308f\u308c\u308b\u3088\u3046\u306a\u3053\u3068\u304c\u3042\u3063\u3066\u3088\u3044\u306e\u3060\u308d\u3046\u304b\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">F1\u3068FIA\u306b\u306f\u3001\u9045\u304f\u3068\u3082\u6b21\u6226USGP\u307e\u3067\u306b\u660e\u78ba\u306a\u6c7a\u65ad\u3092\u4e0b\u3057\u3066\u3082\u3089\u3044\u305f\u3044\u3002\u9078\u624b\u305f\u3061\u304c\u30b3\u30fc\u30b9\u4e0a\u3067\u7a4d\u307f\u91cd\u306d\u3066\u304d\u305f\u52aa\u529b\u3068\u3001\u305d\u306e\u5148\u306b\u3042\u308b\u6700\u9ad8\u306e\u77ac\u9593\u3092\u5b88\u308b\u3053\u3068\u3082\u3001\u9078\u624b\u6a29\u3092\u904b\u55b6\u3059\u308b\u8005\u305f\u3061\u306e\u8cac\u4efb\u306a\u306e\u3060\u304b\u3089\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">3. \u6b21\u6226\u3078\u306e\u5c55\u671b<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u6b21\u6226\u306f\u30c9\u30e9\u30a4\u30d0\u30fc\u306b\u3068\u3063\u3066\u975e\u5e38\u306b\u30c1\u30e3\u30ec\u30f3\u30b8\u30f3\u30b0\u3067\u8a55\u5224\u306e\u826f\u3044COTA\u3060\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u30b7\u30eb\u30d0\u30fc\u30b9\u30c8\u30fc\u30f3\u306e\u3088\u3046\u306a\u9ad8\u901fS\u5b57\u304b\u3089\u3001\u4e2d\u4f4e\u901f\u30b3\u30fc\u30ca\u30fc\u3001\u305d\u3057\u3066\u30ed\u30f3\u30b0\u30b9\u30c8\u30ec\u30fc\u30c8\u306b\u30a2\u30c3\u30d7\u30c0\u30a6\u30f3\u3001\u3042\u3089\u3086\u308b\u8981\u7d20\u304c\u542b\u307e\u308c\u3066\u304a\u308a\u3001\u76f4\u8fd1\u3067\u306f\u30bb\u30d1\u30f3\u304c\u3053\u308c\u306b\u8fd1\u3044\u3002\u30b7\u30eb\u30d0\u30fc\u30b9\u30c8\u30fc\u30f3\u3067\u8d77\u304d\u305f\u300c\u9ad8\u901f\u30b3\u30fc\u30ca\u30fc\u304c\u5145\u96fb\u30b9\u30c6\u30fc\u30b7\u30e7\u30f3\u306b\u306a\u308b\u300d\u73fe\u8c61\u304c\u4eca\u56de\u3082\u767a\u751f\u3057\u3066\u3057\u307e\u3046\u306e\u304b\u3001\u3084\u3084\u4e0d\u5b89\u306a\u90e8\u5206\u3082\u3042\u308b\u304c\u3001\u5c11\u306a\u304f\u3068\u3082\u8ffd\u3044\u629c\u304d\u306f\u3057\u3084\u3059\u3044\u3068\u601d\u308f\u308c\u3001\u52d5\u304d\u306e\u3042\u308b\u30ec\u30fc\u30b9\u304c\u898b\u3089\u308c\u308b\u306f\u305a\u3060\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u30a2\u30f3\u30c8\u30cd\u30c3\u30ea\u306e\u53f2\u4e0a\u6700\u5e74\u5c11\u30c1\u30e3\u30f3\u30d4\u30aa\u30f3\u3001\u767d\u71b1\u306e2\u4f4d\u4e89\u3044\u306a\u3069\u3001\u898b\u3069\u3053\u308d\u306e\u591a\u3044\u4e00\u6226\u306b\u306a\u308a\u305d\u3046\u3060\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u30a4\u30f3\u30bf\u30e9\u30af\u30c6\u30a3\u30d6\u30b0\u30e9\u30d5<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u3054\u81ea\u8eab\u306e\u8996\u70b9\u3067\u3055\u3089\u306b\u30c7\u30fc\u30bf\u3092\u6df1\u6398\u308a\u3057\u305f\u3044\u65b9\u5411\u3051\u306b\u3001\u64cd\u4f5c\u53ef\u80fd\u306a\u30b0\u30e9\u30d5\u3092\u7528\u610f\u3057\u305f\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u306e\u30c4\u30fc\u30eb\u3067\u306f\u3001**\u300c\u30da\u30fc\u30b9\u30b0\u30e9\u30d5\u300d\u3068\u300c\u30ae\u30e3\u30c3\u30d7\u30b0\u30e9\u30d5\u300d**\u306e\u4e8c\u7a2e\u985e\u304c\u5229\u7528\u3067\u304d\u3001\u30dc\u30bf\u30f3\u64cd\u4f5c\u3067\u898b\u305f\u3044\u30c9\u30e9\u30a4\u30d0\u30fc\u3060\u3051\u3092\u81ea\u7531\u306b\u9078\u3093\u3067\u8868\u793a\u3067\u304d\u308b\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u7279\u306b\u30e9\u30c3\u30d7\u30bf\u30a4\u30e0\u30b0\u30e9\u30d5\u306b\u306f\u3001\u30ec\u30fc\u30b9\u72b6\u6cc1\u3092\u7406\u89e3\u3057\u3084\u3059\u304f\u3059\u308b\u305f\u3081\u306e\u5de5\u592b\u304c\u65bd\u3055\u308c\u3066\u3044\u308b\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u5857\u308a\u3064\u3076\u3057\u306e\u70b9<\/strong>\uff1a\u524d\u304c\u7a7a\u3044\u3066\u3044\u308b\u72b6\u614b\uff08\u30af\u30ea\u30a2\u30a8\u30a2\uff09\u3067\u306e\u30e9\u30c3\u30d7\u3092\u793a\u3059\u3002<\/li>\n\n\n\n<li><strong>\u767d\u629c\u304d\u306e\u70b9<\/strong>\uff1a\u524d\u306e\u30de\u30b7\u30f3\u306e\u5f71\u97ff\u4e0b\uff08\u30c0\u30fc\u30c6\u30a3\u30a8\u30a2\uff1a\u524d\u65b92\u79d2\u4ee5\u5185\uff09\u306b\u3042\u308b\u30e9\u30c3\u30d7\u3092\u793a\u3059\u3002<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u3053\u306e\u8272\u5206\u3051\u306b\u3088\u3063\u3066\u3001\u5404\u30c9\u30e9\u30a4\u30d0\u30fc\u304c\u3069\u306e\u3088\u3046\u306a\u72b6\u6cc1\u3067\u305d\u306e\u30bf\u30a4\u30e0\u3092\u8a18\u9332\u3057\u305f\u306e\u304b\u304c\u4e00\u76ee\u3067\u628a\u63e1\u3067\u304d\u308b\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u307e\u305f\u3001\u30b0\u30e9\u30d5\u53f3\u4e0a\u306e\u30dc\u30bf\u30f3\u304b\u3089\u306f\u3001\u753b\u50cf\u306e\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3084\u30b0\u30e9\u30d5\u306e\u62e1\u5927\u30fb\u7e2e\u5c0f\uff08\u30ba\u30fc\u30e0\uff09\u3082\u53ef\u80fd\u3060\u3002\u5206\u6790\u306e\u88dc\u52a9\u3068\u3057\u3066\u3001\u305c\u3072\u3054\u6d3b\u7528\u3044\u305f\u3060\u304d\u305f\u3044\u3002<\/p>\n\n\n\n<!--\nWordPress\u300c\u30ab\u30b9\u30bf\u30e0HTML\u300d\u30d6\u30ed\u30c3\u30af\u306e\u65e2\u5b58\u30b3\u30fc\u30c9\u3092\u3001\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u306e\u5168\u6587\u3067\u7f6e\u304d\u63db\u3048\u3066\u304f\u3060\u3055\u3044\u3002\n\u4e0b\u306e DATA_FILE \u306f\u73fe\u5728\u3068\u540c\u3058\u76f8\u5bfeURL\u3067\u3059\u3002\u5fc5\u8981\u306b\u5fdc\u3058\u3066TSV\u306e\u516c\u958bURL\u3078\u5909\u66f4\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n\u30c9\u30e9\u30a4\u30d0\u30fc\u306e\u4e26\u3073\u30fb\u540d\u524d\u30fb\u914d\u8272\u306f\u5143\u30b3\u30fc\u30c9\u3092\u7dad\u6301\u3057\u3066\u3044\u307e\u3059\u3002\n-->\n<style>\n.race-lap-widget{width:100%;max-width:1200px;background:#fff;color:#000;font-family:\"Times New Roman\",Times,serif;line-height:1.5}\n.race-lap-widget .race-controls{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:12px 0}\n.race-lap-widget .race-drivers{display:flex;flex-wrap:wrap;gap:6px}\n.race-lap-widget button,.race-lap-widget input,.race-lap-widget select{font:inherit;box-sizing:border-box;border:1px solid #aaa;border-radius:4px;box-shadow:none;text-transform:none;letter-spacing:normal;line-height:1.4}\n.race-lap-widget button{padding:6px 10px;background:#f5f5f5;color:#000;cursor:pointer;min-height:36px}\n.race-lap-widget button:disabled{cursor:wait;opacity:.5}\n.race-lap-widget button:focus-visible,.race-lap-widget input:focus-visible,.race-lap-widget select:focus-visible{outline:3px solid #2865c7;outline-offset:2px}\n.race-lap-widget .race-driver{font-weight:bold;border:2px solid transparent;min-width:62px}\n.race-lap-widget .race-driver[aria-pressed=\"true\"]{border-color:#000}\n.race-lap-widget .race-driver .race-check{display:inline-block;width:1em}\n.race-lap-widget label{display:inline-flex;align-items:center;gap:5px;color:#000;font-weight:normal;max-width:100%}\n.race-lap-widget label>span{white-space:nowrap;flex-shrink:0}\n.race-lap-widget .race-reference-label{flex-wrap:wrap;gap:8px}\n.race-lap-widget .race-reference{width:auto;min-width:150px;flex:0 1 auto}\n.race-lap-widget .race-language{justify-content:flex-end}\n.race-lap-widget [data-lang][aria-pressed=\"true\"]{background:#222;color:#fff;border-color:#222}\n.race-lap-widget input{width:105px;padding:6px;background:#fff;color:#000}\n.race-lap-widget select{padding:6px;background:#fff;color:#000;max-width:100%}\n.race-lap-widget .race-chart{width:100%;height:520px}\n.race-lap-widget .race-gap-chart{height:650px}\n.race-lap-widget .race-note{font-size:14px;margin:8px 0;color:#444}\n.race-lap-widget .race-error{color:#a40000;min-height:1.5em;margin:4px 0}\n.race-lap-widget h2{color:#000;margin:24px 0 10px;font-family:inherit}\n@media(max-width:600px){.race-lap-widget .race-chart{height:440px}.race-lap-widget .race-gap-chart{height:510px}}\n<\/style>\n\n<div id=\"raceLapWidget\" class=\"race-lap-widget\" lang=\"ja\">\n  <div class=\"race-controls race-language\" role=\"group\" aria-label=\"Language\"><button type=\"button\" data-lang=\"ja\" aria-pressed=\"true\">\u65e5\u672c\u8a9e<\/button><button type=\"button\" data-lang=\"en\" aria-pressed=\"false\">English<\/button><\/div>\n  <p class=\"race-status\" role=\"status\">\u30c7\u30fc\u30bf\u3092\u8aad\u307f\u8fbc\u3093\u3067\u3044\u307e\u3059\u2026<\/p>\n  <div class=\"race-interactive\" hidden=\"\">\n    <div class=\"race-controls\"><strong>Drivers:<\/strong><button type=\"button\" data-action=\"select\">Select All<\/button><button type=\"button\" data-action=\"clear\">Clear All<\/button><\/div>\n    <div class=\"race-drivers\" data-i18n-aria=\"driversAria\" aria-label=\"\u8868\u793a\u3059\u308b\u30c9\u30e9\u30a4\u30d0\u30fc\"><\/div>\n    <p class=\"race-note\"><span data-i18n=\"driversNote\">\u30c9\u30e9\u30a4\u30d0\u30fc\u3092\u9078\u3076\u3068\u4e21\u30b0\u30e9\u30d5\u306b\u8868\u793a\u3057\u307e\u3059\u3002\u51e1\u4f8b\u306f\u9078\u629e\u3057\u305f\u9806\u306b\u4e26\u3073\u307e\u3059\u3002<\/span><\/p>\n    <form class=\"race-controls\" data-form=\"laps\" novalidate=\"\">\n      <strong><span data-i18n=\"laps\">\u8868\u793a\u5468\u56de\uff08\u4e21\u30b0\u30e9\u30d5\u5171\u901a\uff09:<\/span><\/strong>\n      <label><span data-i18n=\"start\">\u958b\u59cb<\/span><input name=\"min\" type=\"number\" min=\"1\" step=\"1\" required=\"\"><\/label>\n      <label><span data-i18n=\"end\">\u7d42\u4e86<\/span><input name=\"max\" type=\"number\" min=\"1\" step=\"1\" required=\"\"><\/label>\n      <button type=\"submit\"><span data-i18n=\"apply\">\u9069\u7528<\/span><\/button><button type=\"button\" data-action=\"reset-laps\"><span data-i18n=\"allLaps\">\u5168\u5468\u56de\u306b\u623b\u3059<\/span><\/button>\n    <\/form>\n    <p class=\"race-error\" data-error=\"laps\" role=\"alert\"><\/p>\n\n    <h2>Lap Times<\/h2>\n\n    <form class=\"race-controls\" data-form=\"time\" novalidate=\"\">\n      <label><span>Fastest<\/span><input name=\"min\" type=\"text\" placeholder=\"1:20.000\" required=\"\" aria-label=\"Fastest\"><\/label>\n      <label><span>Slowest<\/span><input name=\"max\" type=\"text\" placeholder=\"1:28.000\" required=\"\" aria-label=\"Slowest\"><\/label>\n      <button type=\"submit\"><span data-i18n=\"apply\">\u9069\u7528<\/span><\/button><button type=\"button\" data-action=\"reset-time\"><span data-i18n=\"reset\">\u521d\u671f\u7bc4\u56f2\u306b\u623b\u3059<\/span><\/button>\n    <\/form>\n    <p class=\"race-note\"><span data-i18n=\"format\">\u30bf\u30a4\u30e0\u306f\u300c1:20.000\u300d\u307e\u305f\u306f\u300c80.000\u300d\u3067\u5165\u529b\u3067\u304d\u307e\u3059\u3002\u901f\u3044\u30bf\u30a4\u30e0\u3092\u4e0a\u306b\u8868\u793a\u3057\u307e\u3059\u3002<\/span><\/p>\n    <p class=\"race-error\" data-error=\"time\" role=\"alert\"><\/p>\n\n    <div class=\"race-chart race-time-chart\" data-i18n-aria=\"timeAria\" aria-label=\"\u30e9\u30c3\u30d7\u30bf\u30a4\u30e0\u30b0\u30e9\u30d5\"><\/div>\n    <p class=\"race-note\"><span data-i18n=\"white\">\u767d\u4e38\uff1a\u524d\u306e\u30c9\u30e9\u30a4\u30d0\u30fc\u3068\u306e\u5dee\u304c2\u79d2\u4ee5\u5185\u3002<\/span><\/p>\n\n    <h2 class=\"race-gap-title\">Gap to Leader<\/h2>\n\n    <div class=\"race-controls\">\n      <label class=\"race-reference-label\">\n        <span data-i18n=\"reference\">\u6bd4\u8f03\u57fa\u6e96<\/span>\n        <select class=\"race-reference\">\n          <option value=\"leader\" data-i18n=\"leader\">Leader\uff08\u5404\u5468\u306e\u9996\u4f4d\uff09<\/option>\n        <\/select>\n      <\/label>\n    <\/div>\n\n    <form class=\"race-controls\" data-form=\"gap\" novalidate=\"\">\n      <label><span data-i18n=\"min\">\u6700\u5c0f\u5024\uff08\u79d2\uff09<\/span><input name=\"min\" type=\"number\" step=\"any\" required=\"\"><\/label>\n      <label><span data-i18n=\"max\">\u6700\u5927\u5024\uff08\u79d2\uff09<\/span><input name=\"max\" type=\"number\" step=\"any\" required=\"\"><\/label>\n      <button type=\"submit\"><span data-i18n=\"apply\">\u9069\u7528<\/span><\/button><button type=\"button\" data-action=\"reset-gap\"><span data-i18n=\"reset\">\u521d\u671f\u7bc4\u56f2\u306b\u623b\u3059<\/span><\/button>\n    <\/form>\n\n    <p class=\"race-note\"><span data-i18n=\"gapNote\">\u30d7\u30e9\u30b9\uff1d\u57fa\u6e96\u3088\u308a\u5f8c\u65b9\u3001\u30de\u30a4\u30ca\u30b9\uff1d\u524d\u65b9\u3002\u57fa\u6e96\u3092\u5207\u308a\u66ff\u3048\u308b\u3068\u7e26\u8ef8\u306f\u521d\u671f\u7bc4\u56f2\u306b\u623b\u308a\u307e\u3059\u3002<\/span><\/p>\n    <p class=\"race-error\" data-error=\"gap\" role=\"alert\"><\/p>\n\n    <div class=\"race-chart race-gap-chart\" data-i18n-aria=\"gapAria\" aria-label=\"\u30ae\u30e3\u30c3\u30d7\u30b0\u30e9\u30d5\"><\/div>\n  <\/div>\n<\/div>\n\n<script src=\"https:\/\/cdn.plot.ly\/plotly-2.26.0.min.js\"><\/script>\n\n<script>\n(() => {\n  \"use strict\";\n\n  const root = document.getElementById(\"raceLapWidget\");\n  const DATA_FILE = \"singapore_2026_lap_times.tsv\";\n\n  \/\/ [\u7565\u79f0, TSV\u306e\u5217\u540d, \u8272]\n  const driverConfig = [\n    [\"NOR\",\"Lando NORRIS\",\"rgb(255,128,0)\"],\n    [\"PIA\",\"Oscar PIASTRI\",\"rgb(255,192,128)\"],\n\n    [\"RUS\",\"George RUSSELL\",\"rgb(166,166,166)\"],\n    [\"ANT\",\"Kimi ANTONELLI\",\"rgb(0,176,80)\"],\n\n    [\"VER\",\"Max VERSTAPPEN\",\"rgb(0,32,96)\"],\n    [\"HAD\",\"Isack HADJAR\",\"rgb(102,255,0)\"],\n\n    [\"LEC\",\"Charles LECLERC\",\"rgb(255,0,0)\"],\n    [\"HAM\",\"Lewis HAMILTON\",\"rgb(255,192,192)\"],\n\n    [\"ALB\",\"Alexander ALBON\",\"rgb(192,176,224)\"],\n    [\"SAI\",\"Carlos SAINZ\",\"rgb(0,112,192)\"],\n\n    [\"LAW\",\"Liam LAWSON\",\"rgb(180,198,231)\"],\n    [\"LIN\",\"Arvid LINDBLAD\",\"rgb(112,48,160)\"],\n\n    [\"ALO\",\"Fernando ALONSO\",\"rgb(0,176,240)\"],\n    [\"STR\",\"Lance STROLL\",\"rgb(0,112,112)\"],\n\n    [\"OCO\",\"Esteban OCON\",\"rgb(0,0,0)\"],\n    [\"BEA\",\"Oliver BEARMAN\",\"rgb(128,128,128)\"],\n\n    [\"HUL\",\"Nico HULKENBERG\",\"rgb(255,193,37)\"],\n    [\"BOR\",\"Gabriel BORTOLETO\",\"rgb(192,0,0)\"],\n\n    [\"GAS\",\"Pierre GASLY\",\"rgb(0,128,255)\"],\n    [\"COL\",\"Franco COLAPINTO\",\"rgb(255,0,255)\"],\n\n    [\"PER\",\"Sergio PEREZ\",\"rgb(255,140,0)\"],\n    [\"BOT\",\"Valtteri BOTTAS\",\"rgb(0,150,136)\"]\n  ];\n\n  const WHITE_TEXT = new Set([\n    \"VER\",\"LIN\",\"STR\",\"OCO\",\"BEA\",\"SAI\",\"GAS\",\"BOR\",\"BOT\"\n  ]);\n\n  const $ = selector => root.querySelector(selector);\n  const form = name => $(`[data-form=\"${name}\"]`);\n  const field = (name, key) => form(name).elements.namedItem(key);\n\n  const error = (name, key = \"\", params = {}) => {\n    errors[name] = {key, params};\n    $(`[data-error=\"${name}\"]`).textContent = key ? t(key, params) : \"\";\n  };\n\n  const timeChart = $(\".race-time-chart\");\n  const gapChart = $(\".race-gap-chart\");\n  const status = $(\".race-status\");\n\n  const messages = {\n    ja: {\n      driversNote: \"\u30c9\u30e9\u30a4\u30d0\u30fc\u3092\u9078\u3076\u3068\u4e21\u30b0\u30e9\u30d5\u306b\u8868\u793a\u3057\u307e\u3059\u3002\u51e1\u4f8b\u306f\u9078\u629e\u3057\u305f\u9806\u306b\u4e26\u3073\u307e\u3059\u3002\",\n      laps: \"\u8868\u793a\u5468\u56de\uff08\u4e21\u30b0\u30e9\u30d5\u5171\u901a\uff09:\",\n      start: \"\u958b\u59cb\",\n      end: \"\u7d42\u4e86\",\n      apply: \"\u9069\u7528\",\n      allLaps: \"\u5168\u5468\u56de\u306b\u623b\u3059\",\n      reset: \"\u521d\u671f\u7bc4\u56f2\u306b\u623b\u3059\",\n      format: \"\u30bf\u30a4\u30e0\u306f\u300c1:20.000\u300d\u307e\u305f\u306f\u300c80.000\u300d\u3067\u5165\u529b\u3067\u304d\u307e\u3059\u3002\u901f\u3044\u30bf\u30a4\u30e0\u3092\u4e0a\u306b\u8868\u793a\u3057\u307e\u3059\u3002\",\n      white: \"\u767d\u4e38\uff1a\u524d\u306e\u30c9\u30e9\u30a4\u30d0\u30fc\u3068\u306e\u5dee\u304c2\u79d2\u4ee5\u5185\u3002\",\n      reference: \"\u6bd4\u8f03\u57fa\u6e96\",\n      leader: \"Leader\uff08\u5404\u5468\u306e\u9996\u4f4d\uff09\",\n      min: \"\u6700\u5c0f\u5024\uff08\u79d2\uff09\",\n      max: \"\u6700\u5927\u5024\uff08\u79d2\uff09\",\n      gapNote: \"\u30d7\u30e9\u30b9\uff1d\u57fa\u6e96\u3088\u308a\u5f8c\u65b9\u3001\u30de\u30a4\u30ca\u30b9\uff1d\u524d\u65b9\u3002\u57fa\u6e96\u3092\u5207\u308a\u66ff\u3048\u308b\u3068\u7e26\u8ef8\u306f\u521d\u671f\u7bc4\u56f2\u306b\u623b\u308a\u307e\u3059\u3002\",\n      loading: \"\u30c7\u30fc\u30bf\u3092\u8aad\u307f\u8fbc\u3093\u3067\u3044\u307e\u3059\u2026\",\n      loadError: \"\u30b0\u30e9\u30d5\u3092\u8aad\u307f\u8fbc\u3081\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u30da\u30fc\u30b8\u3092\u518d\u8aad\u307f\u8fbc\u307f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\",\n      updateError: \"\u30b0\u30e9\u30d5\u3092\u66f4\u65b0\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u30da\u30fc\u30b8\u3092\u518d\u8aad\u307f\u8fbc\u307f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\",\n      invalid: \"\u6709\u52b9\u306a\u6700\u5c0f\u5024\u30fb\u6700\u5927\u5024\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\",\n      invalidTime: \"Fastest\u30fbSlowest\u306b\u6709\u52b9\u306a\u30bf\u30a4\u30e0\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\",\n      lapError: \"\u958b\u59cb\u30fb\u7d42\u4e86\u306f{min}\u301c{max}\u306e\u6574\u6570\u3067\u3001\u958b\u59cb\u2266\u7d42\u4e86\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\",\n      timeError: \"Slowest\u306fFastest\u3088\u308a0.001\u79d2\u4ee5\u4e0a\u5927\u304d\u304f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\",\n      gapError: \"\u6700\u5927\u5024\u306f\u6700\u5c0f\u5024\u3088\u308a\u5927\u304d\u304f\u3057\u3066\u304f\u3060\u3055\u3044\u3002\",\n      driversAria: \"\u8868\u793a\u3059\u308b\u30c9\u30e9\u30a4\u30d0\u30fc\",\n      timeAria: \"\u30e9\u30c3\u30d7\u30bf\u30a4\u30e0\u30b0\u30e9\u30d5\",\n      gapAria: \"\u30ae\u30e3\u30c3\u30d7\u30b0\u30e9\u30d5\"\n    },\n\n    en: {\n      driversNote: \"Select drivers to show them on both charts. The legend follows your selection order.\",\n      laps: \"Lap range (both charts):\",\n      start: \"From\",\n      end: \"To\",\n      apply: \"Apply\",\n      allLaps: \"All Laps\",\n      reset: \"Reset Range\",\n      format: \"Enter a time as 1:20.000 or 80.000 seconds. Faster times appear higher.\",\n      white: \"White circle: within 2 seconds of the driver ahead.\",\n      reference: \"Reference\",\n      leader: \"Leader (each lap)\",\n      min: \"Minimum (s)\",\n      max: \"Maximum (s)\",\n      gapNote: \"Positive = behind the reference driver; negative = ahead. Changing the reference resets the vertical range.\",\n      loading: \"Loading data\u2026\",\n      loadError: \"Unable to load the charts. Please reload the page.\",\n      updateError: \"Unable to update the charts. Please reload the page.\",\n      invalid: \"Enter valid minimum and maximum values.\",\n      invalidTime: \"Enter valid times for Fastest and Slowest.\",\n      lapError: \"Enter whole laps from {min} to {max}, with From no greater than To.\",\n      timeError: \"Slowest must be at least 0.001 seconds greater than Fastest.\",\n      gapError: \"Maximum must be greater than Minimum.\",\n      driversAria: \"Drivers to display\",\n      timeAria: \"Lap time chart\",\n      gapAria: \"Gap chart\"\n    }\n  };\n\n  let language = \"ja\";\n\n  const t = (key, params = {}) => {\n    let text = messages[language][key] || key;\n\n    Object.entries(params).forEach(([name,value]) => {\n      text = text.replace(\"{\" + name + \"}\", String(value));\n    });\n\n    return text;\n  };\n\n  let statusKey = \"loading\";\n  const errors = {};\n\n  function setLanguage(next) {\n    language = next === \"en\" ? \"en\" : \"ja\";\n\n    root.setAttribute(\"lang\", language);\n\n    root.querySelectorAll(\"[data-i18n]\").forEach(el => {\n      el.textContent = t(el.getAttribute(\"data-i18n\"));\n    });\n\n    root.querySelectorAll(\"[data-i18n-aria]\").forEach(el => {\n      el.setAttribute(\n        \"aria-label\",\n        t(el.getAttribute(\"data-i18n-aria\"))\n      );\n    });\n\n    root.querySelectorAll(\"[data-lang]\").forEach(el => {\n      el.setAttribute(\n        \"aria-pressed\",\n        String(el.getAttribute(\"data-lang\") === language)\n      );\n    });\n\n    status.textContent = t(statusKey);\n\n    Object.entries(errors).forEach(([name,entry]) => {\n      $(`[data-error=\"${name}\"]`).textContent =\n        entry.key ? t(entry.key,entry.params) : \"\";\n    });\n  }\n\n  root.querySelectorAll(\"[data-lang]\").forEach(el => {\n    el.onclick = () => setLanguage(el.getAttribute(\"data-lang\"));\n  });\n\n  setLanguage(\"ja\");\n\n  const parseTime = value => {\n    const s = String(value ?? \"\").trim();\n\n    if (\/^\\d+(?:\\.\\d+)?$\/.test(s)) {\n      const n = Number(s);\n      return Number.isFinite(n) ? n : null;\n    }\n\n    const match = \/^(\\d+):(\\d{1,2}(?:\\.\\d+)?)$\/.exec(s);\n\n    if (!match || Number(match[2]) >= 60) {\n      return null;\n    }\n\n    const n = Number(match[1]) * 60 + Number(match[2]);\n\n    return Number.isFinite(n) ? n : null;\n  };\n\n  const formatTime = seconds => {\n    const ms = Math.round(seconds * 1000);\n\n    return (\n      Math.floor(ms \/ 60000) +\n      \":\" +\n      (Math.floor(ms \/ 1000) % 60).toString().padStart(2,\"0\") +\n      \".\" +\n      (ms % 1000).toString().padStart(3,\"0\")\n    );\n  };\n\n  function timeAxis(min, max) {\n    const target = (max - min) \/ 8;\n    const power = 10 ** Math.floor(Math.log10(target));\n    const step = [1,2,5,10]\n      .map(n => n * power)\n      .find(n => n >= target);\n\n    const ticks = [];\n    const start = Math.ceil(min \/ step) * step;\n\n    for (let i = 0; i < 20; i++) {\n      const v = Number((start + i * step).toPrecision(12));\n\n      if (v > max + step * 1e-8) {\n        break;\n      }\n\n      ticks.push(v);\n    }\n\n    return {\n      \"yaxis.range\": [max,min],\n      \"yaxis.autorange\": false,\n      \"yaxis.tickmode\": \"array\",\n      \"yaxis.tickvals\": ticks,\n      \"yaxis.ticktext\": ticks.map(formatTime)\n    };\n  }\n\n  async function init() {\n    if (!root) {\n      throw new Error(\"\u30b0\u30e9\u30d5\u306e\u8868\u793a\u9818\u57df\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002\");\n    }\n\n    if (!window.Plotly) {\n      throw new Error(\n        \"Plotly\u3092\u8aad\u307f\u8fbc\u3081\u307e\u305b\u3093\u3067\u3057\u305f\u3002WordPress\u304cscript\u30bf\u30b0\u3092\u524a\u9664\u3057\u3066\u3044\u306a\u3044\u304b\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002\"\n      );\n    }\n\n    const Plotly = window.Plotly;\n\n    const tsv = await fetch(DATA_FILE).then(response => {\n      if (!response.ok) {\n        throw new Error(\n          `TSV\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\uff08HTTP ${response.status}\uff09\u3002DATA_FILE\u306eURL\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002`\n        );\n      }\n\n      return response.text();\n    });\n\n    const lines = tsv\n      .replace(\/^\\uFEFF\/, \"\")\n      .split(\/\\r?\\n\/)\n      .filter(line => line.trim() !== \"\");\n\n    if (lines.length < 2) {\n      throw new Error(\"TSV\u306b\u30e9\u30c3\u30d7\u30c7\u30fc\u30bf\u304c\u3042\u308a\u307e\u305b\u3093\u3002\");\n    }\n\n    const headers = lines[0]\n      .split(\"\\t\")\n      .map(s => s.trim());\n\n    const columns = driverConfig.map(([,full]) =>\n      headers.indexOf(full)\n    );\n\n    if (columns.every(index => index < 0)) {\n      throw new Error(\n        \"TSV\u306e\u30c9\u30e9\u30a4\u30d0\u30fc\u5217\u540d\u304c\u8a2d\u5b9a\u3068\u4e00\u81f4\u3057\u307e\u305b\u3093\u3002\"\n      );\n    }\n\n    const rows = lines\n      .slice(1)\n      .map(line => line.split(\"\\t\"));\n\n    const laps = rows.map(row => Number(row[0]));\n\n    if (\n      laps.some(\n        (lap,i) =>\n          !Number.isInteger(lap) ||\n          lap < 1 ||\n          (i > 0 ? lap <= laps[i-1] : false)\n      )\n    ) {\n      throw new Error(\n        \"TSV\u306e\u5468\u56de\u756a\u53f7\u306f\u3001\u91cd\u8907\u306e\u306a\u3044\u6607\u9806\u306e\u6b63\u306e\u6574\u6570\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\"\n      );\n    }\n\n    const times = columns.map(column =>\n      rows.map(row => {\n        const raw =\n          column < 0\n            ? \"\"\n            : (row[column] ?? \"\").trim();\n\n        const value = parseTime(raw);\n\n        return value === null\n          ? null\n          : (value > 0 ? value : null);\n      })\n    );\n\n    let fastest = Infinity;\n\n    times.forEach(values => {\n      values.forEach(v => {\n        if (v !== null) {\n          fastest = Math.min(fastest,v);\n        }\n      });\n    });\n\n    if (!Number.isFinite(fastest)) {\n      throw new Error(\"\u6709\u52b9\u306a\u30e9\u30c3\u30d7\u30bf\u30a4\u30e0\u304c\u3042\u308a\u307e\u305b\u3093\u3002\");\n    }\n\n    const cum = times.map(values => {\n      let total = 0;\n      let known = true;\n\n      return values.map((value,i) => {\n        if (\n          value === null ||\n          laps[i] !== (i === 0 ? 1 : laps[i-1] + 1)\n        ) {\n          known = false;\n        }\n\n        if (!known) {\n          return null;\n        }\n\n        total += value;\n\n        return total;\n      });\n    });\n\n    const within = driverConfig.map(() =>\n      laps.map(() => false)\n    );\n\n    const leaderTimes = laps.map((_,i) => {\n      const running = driverConfig\n        .map((_,d) => d)\n        .filter(d => cum[d][i] !== null)\n        .sort((a,b) => cum[a][i] - cum[b][i]);\n\n      for (let j = 1; j < running.length; j++) {\n        if (\n          cum[running[j]][i] -\n          cum[running[j-1]][i] <= 2\n        ) {\n          within[running[j]][i] = true;\n        }\n      }\n\n      return running.length\n        ? cum[running[0]][i]\n        : null;\n    });\n\n    let reference = \"leader\";\n\n    const gapValues = () => {\n      const base =\n        reference === \"leader\"\n          ? leaderTimes\n          : cum[Number(reference)];\n\n      return cum.map(values =>\n        values.map((v,i) =>\n          v === null || base[i] === null\n            ? null\n            : v - base[i]\n        )\n      );\n    };\n\n    const gapDefault = () =>\n      reference === \"leader\"\n        ? [0,250]\n        : [-250,250];\n\n    const gapLabel = () =>\n      reference === \"leader\"\n        ? \"Leader\"\n        : driverConfig[Number(reference)][0];\n\n    const gapHover = () =>\n      `%{fullData.name}<br>` +\n      `Lap %{x}<br>` +\n      `Gap to ${gapLabel()}: %{y:+.3f} s` +\n      `<extra><\/extra>`;\n\n    const initialTime = [\n      Math.floor(fastest),\n      Math.floor(fastest) + 8\n    ];\n\n    const wholeLaps = [\n      laps[0],\n      laps[laps.length - 1]\n    ];\n\n    const xRange = (min,max) =>\n      min === max\n        ? [min - .5,max + .5]\n        : [min,max];\n\n    const lapTraces = [];\n    const gaps = gapValues();\n    const gapTraces = [];\n\n    driverConfig.forEach(([d,,color],idx) => {\n      lapTraces.push({\n        name: d,\n        x: laps,\n        y: times[idx],\n        customdata: times[idx].map(t =>\n          t === null ? \"\" : formatTime(t)\n        ),\n        mode: \"lines\",\n        connectgaps: false,\n        line: {\n          color,\n          width: 2\n        },\n        visible: false,\n        showlegend: false,\n        hovertemplate:\n          \"%{fullData.name}<br>\" +\n          \"Lap %{x}<br>\" +\n          \"Time: %{customdata}\" +\n          \"<extra><\/extra>\"\n      });\n\n      lapTraces.push({\n        name: d,\n        x: laps,\n        y: times[idx],\n        mode: \"markers\",\n        marker: {\n          size: 6,\n          color: within[idx].map(f =>\n            f ? \"#fff\" : color\n          ),\n          symbol: \"circle\",\n          line: {\n            color,\n            width: 2\n          }\n        },\n        hoverinfo: \"skip\",\n        visible: false,\n        showlegend: false\n      });\n\n      gapTraces.push({\n        name: d,\n        x: laps,\n        y: gaps[idx],\n        mode: \"lines\",\n        connectgaps: false,\n        line: {\n          color,\n          width: 2\n        },\n        visible: false,\n        showlegend: false,\n        hovertemplate: gapHover()\n      });\n    });\n\n    const font = {\n      family: \"Times New Roman, Times, serif\"\n    };\n\n    const layout = title => ({\n      font,\n      legend: {\n        itemclick: false,\n        itemdoubleclick: false,\n        orientation: \"h\",\n        y: -.2,\n        x: 0\n      },\n      xaxis: {\n        title: {\n          text: \"Lap\"\n        },\n        range: xRange(...wholeLaps),\n        autorange: false,\n        tickformat: \"d\"\n      },\n      yaxis: {\n        title: {\n          text: title\n        },\n        autorange: false,\n        automargin: true\n      },\n      margin: {\n        t: 25,\n        r: 15,\n        b: 85,\n        l: 75\n      },\n      hovermode: \"closest\",\n      paper_bgcolor: \"#fff\",\n      plot_bgcolor: \"#fff\"\n    });\n\n    const lapLayout = layout(\"Time (m:s)\");\n    const axis = timeAxis(...initialTime);\n\n    Object.entries(axis).forEach(([key,value]) => {\n      lapLayout.yaxis[key.slice(6)] = value;\n    });\n\n    const gapLayout = layout(\"Gap (s)\");\n    gapLayout.yaxis.range = gapDefault();\n\n    $(\".race-interactive\").hidden = false;\n\n    root\n      .querySelectorAll(\"button,input,select\")\n      .forEach(el => {\n        el.disabled = true;\n      });\n\n    const config = {\n      responsive: true,\n      displaylogo: false,\n      scrollZoom: false,\n      doubleClick: false\n    };\n\n    await Promise.all([\n      Plotly.newPlot(\n        timeChart,\n        lapTraces,\n        lapLayout,\n        config\n      ),\n      Plotly.newPlot(\n        gapChart,\n        gapTraces,\n        gapLayout,\n        config\n      )\n    ]);\n\n    let busy = false;\n\n    async function run(action) {\n      if (busy) {\n        return;\n      }\n\n      busy = true;\n\n      root\n        .querySelectorAll(\"button,input,select\")\n        .forEach(el => {\n          el.disabled = true;\n        });\n\n      try {\n        await action();\n      }\n      catch (e) {\n        console.error(e);\n\n        status.hidden = false;\n        statusKey = \"updateError\";\n        status.textContent = t(statusKey);\n      }\n      finally {\n        busy = false;\n\n        root\n          .querySelectorAll(\"button,input,select\")\n          .forEach(el => {\n            el.disabled = false;\n          });\n      }\n    }\n\n    let legendCounter = 0;\n\n    const ranks = driverConfig.map(() => 0);\n    const selected = driverConfig.map(() => false);\n\n    const buttons = driverConfig.map(\n      ([d,,color],idx) => {\n        const button =\n          document.createElement(\"button\");\n\n        button.type = \"button\";\n        button.className = \"race-driver\";\n        button.style.backgroundColor = color;\n        button.style.color =\n          WHITE_TEXT.has(d)\n            ? \"#fff\"\n            : \"#000\";\n\n        button.setAttribute(\n          \"aria-pressed\",\n          \"false\"\n        );\n\n        button.setAttribute(\n          \"aria-label\",\n          d\n        );\n\n        const check =\n          document.createElement(\"span\");\n\n        check.className = \"race-check\";\n        check.setAttribute(\n          \"aria-hidden\",\n          \"true\"\n        );\n\n        button.append(\n          check,\n          document.createTextNode(d)\n        );\n\n        button.onclick = () =>\n          run(async () => {\n            selected[idx] = !selected[idx];\n\n            if (selected[idx]) {\n              ranks[idx] = ++legendCounter;\n            }\n\n            await applySelection();\n          });\n\n        $(\".race-drivers\")\n          .appendChild(button);\n\n        const option =\n          document.createElement(\"option\");\n\n        option.value = String(idx);\n        option.textContent = d;\n\n        $(\".race-reference\")\n          .appendChild(option);\n\n        return button;\n      }\n    );\n\n    function applySelection() {\n      buttons.forEach((button,i) => {\n        button.setAttribute(\n          \"aria-pressed\",\n          String(selected[i])\n        );\n\n        button.firstChild.textContent =\n          selected[i] ? \"\u2713\" : \"\";\n      });\n\n      return Promise.all([\n        Plotly.restyle(\n          timeChart,\n          {\n            visible: selected.flatMap(v => [v,v]),\n            showlegend: selected.flatMap(v => [v,false]),\n            legendrank: ranks.flatMap(v => [v,v])\n          }\n        ),\n\n        Plotly.restyle(\n          gapChart,\n          {\n            visible: selected,\n            showlegend: selected,\n            legendrank: ranks\n          }\n        )\n      ]);\n    }\n\n    $('[data-action=\"select\"]').onclick =\n      () =>\n        run(async () => {\n          legendCounter =\n            driverConfig.length;\n\n          selected.fill(true);\n\n          ranks.forEach((_,i) => {\n            ranks[i] = i + 1;\n          });\n\n          await applySelection();\n        });\n\n    $('[data-action=\"clear\"]').onclick =\n      () =>\n        run(async () => {\n          legendCounter = 0;\n          selected.fill(false);\n          ranks.fill(0);\n\n          await applySelection();\n        });\n\n    function setFields(\n      name,\n      range,\n      format = String\n    ) {\n      field(name,\"min\").value =\n        format(range[0]);\n\n      field(name,\"max\").value =\n        format(range[1]);\n    }\n\n    setFields(\n      \"laps\",\n      wholeLaps\n    );\n\n    setFields(\n      \"time\",\n      initialTime,\n      formatTime\n    );\n\n    setFields(\n      \"gap\",\n      gapDefault()\n    );\n\n    async function applyLaps(min,max) {\n      await Promise.all(\n        [timeChart,gapChart].map(chart =>\n          Plotly.relayout(\n            chart,\n            {\n              \"xaxis.range\": xRange(min,max),\n              \"xaxis.autorange\": false\n            }\n          )\n        )\n      );\n\n      setFields(\n        \"laps\",\n        [min,max]\n      );\n\n      error(\"laps\");\n    }\n\n    async function applyTime(min,max) {\n      await Plotly.relayout(\n        timeChart,\n        timeAxis(min,max)\n      );\n\n      setFields(\n        \"time\",\n        [min,max],\n        formatTime\n      );\n\n      error(\"time\");\n    }\n\n    async function applyGap(min,max) {\n      await Plotly.relayout(\n        gapChart,\n        {\n          \"yaxis.range\": [min,max],\n          \"yaxis.autorange\": false\n        }\n      );\n\n      setFields(\n        \"gap\",\n        [min,max]\n      );\n\n      error(\"gap\");\n    }\n\n    [\"laps\",\"time\",\"gap\"].forEach(name => {\n      form(name).onsubmit = event => {\n        event.preventDefault();\n\n        const rawMin =\n          field(name,\"min\")\n            .value\n            .trim();\n\n        const rawMax =\n          field(name,\"max\")\n            .value\n            .trim();\n\n        const min =\n          name === \"time\"\n            ? parseTime(rawMin)\n            : Number(rawMin);\n\n        const max =\n          name === \"time\"\n            ? parseTime(rawMax)\n            : Number(rawMax);\n\n        if (\n          !rawMin ||\n          !rawMax ||\n          !Number.isFinite(min) ||\n          !Number.isFinite(max)\n        ) {\n          error(\n            name,\n            name === \"time\"\n              ? \"invalidTime\"\n              : \"invalid\"\n          );\n\n          return;\n        }\n\n        if (name === \"laps\") {\n          if (\n            !Number.isInteger(min) ||\n            !Number.isInteger(max) ||\n            min > max ||\n            min < wholeLaps[0] ||\n            max > wholeLaps[1]\n          ) {\n            error(\n              name,\n              \"lapError\",\n              {\n                min: wholeLaps[0],\n                max: wholeLaps[1]\n              }\n            );\n\n            return;\n          }\n\n          run(() =>\n            applyLaps(min,max)\n          );\n        }\n        else {\n          if (\n            min >= max ||\n            (\n              name === \"time\"\n                ? max - min < .001\n                : false\n            )\n          ) {\n            error(\n              name,\n              name === \"time\"\n                ? \"timeError\"\n                : \"gapError\"\n            );\n\n            return;\n          }\n\n          run(() =>\n            name === \"time\"\n              ? applyTime(min,max)\n              : applyGap(min,max)\n          );\n        }\n      };\n    });\n\n    $('[data-action=\"reset-laps\"]').onclick =\n      () =>\n        run(() =>\n          applyLaps(...wholeLaps)\n        );\n\n    $('[data-action=\"reset-time\"]').onclick =\n      () =>\n        run(() =>\n          applyTime(...initialTime)\n        );\n\n    $('[data-action=\"reset-gap\"]').onclick =\n      () =>\n        run(() =>\n          applyGap(...gapDefault())\n        );\n\n    $(\".race-reference\").onchange =\n      () =>\n        run(async () => {\n          reference =\n            $(\".race-reference\").value;\n\n          await Plotly.update(\n            gapChart,\n            {\n              y: gapValues(),\n              hovertemplate: gapHover()\n            },\n            {\n              \"yaxis.range\": gapDefault(),\n              \"yaxis.autorange\": false\n            }\n          );\n\n          $(\".race-gap-title\").textContent =\n            \"Gap to \" + gapLabel();\n\n          setFields(\n            \"gap\",\n            gapDefault()\n          );\n\n          error(\"gap\");\n        });\n\n    root\n      .querySelectorAll(\"button,input,select\")\n      .forEach(el => {\n        el.disabled = false;\n      });\n\n    status.hidden = true;\n  }\n\n  init().catch(e => {\n    console.error(e);\n\n    $(\".race-interactive\").hidden = true;\n\n    status.hidden = false;\n    statusKey = \"loadError\";\n    status.textContent = t(statusKey);\n\n    root\n      .querySelectorAll(\"[data-lang]\")\n      .forEach(el => {\n        el.disabled = false;\n      });\n  });\n})();\n<\/script>\n\n\n\n<p class=\"has-text-align-right wp-block-paragraph\">Takumi, \u30d4\u30c8\u30a5\u30ca<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/f1-lap-time.com\/wp-content\/uploads\/2026\/10\/F1-\u0431\u043e\u043b\u0438\u0434\u0443-1024x576.png\" alt=\"\" class=\"wp-image-17639\" srcset=\"https:\/\/f1-lap-time.com\/wp-content\/uploads\/2026\/10\/F1-\u0431\u043e\u043b\u0438\u0434\u0443-1024x576.png 1024w, https:\/\/f1-lap-time.com\/wp-content\/uploads\/2026\/10\/F1-\u0431\u043e\u043b\u0438\u0434\u0443-300x169.png 300w, https:\/\/f1-lap-time.com\/wp-content\/uploads\/2026\/10\/F1-\u0431\u043e\u043b\u0438\u0434\u0443-768x432.png 768w, https:\/\/f1-lap-time.com\/wp-content\/uploads\/2026\/10\/F1-\u0431\u043e\u043b\u0438\u0434\u0443-1536x864.png 1536w, https:\/\/f1-lap-time.com\/wp-content\/uploads\/2026\/10\/\u591c\u306e\u30de\u30ea\u30fc\u30ca\u30d9\u30a4\u3092\u99c6\u3051\u308bF1-\u0431\u043e\u043b\u0438\u0434\u0443.png 1672w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>\u5143\u7956\u30ca\u30a4\u30c8\u30ec\u30fc\u30b9\u306e\u30b7\u30f3\u30ac\u30dd\u30fc\u30ebGP\u3002\u30b3\u30f3\u30af\u30ea\u30fc\u30c8\u30a6\u30a9\u30fc\u30eb\u306b\u56f2\u307e\u308c\u3001\u6c17\u6e29\u3068\u6e7f\u5ea6\u306b\u3088\u308b\u904e\u9177\u306a\u6691\u3055\u3082\u76f8\u307e\u3063\u3066\u3001\u30c9\u30e9\u30a4\u30d0\u30fc\u306b\u3068\u3063\u3066\u306f\u975e\u5e38\u306b\u30bf\u30d5\u306a\u30b5\u30fc\u30ad\u30c3\u30c8\u3060\u3002\u4eca\u56de\u3082\u30c7\u30fc\u30bf\u3092\u4ea4\u3048\u306a\u304c\u3089\u30b0\u30e9\u30f3\u30d7\u30ea\u3092\u632f\u308a\u8fd4\u3063\u3066\u3044\u304f\u3002 1. \u4eca\u56de\u3082\u9031\u672b [&hellip;]<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":17639,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-17623","page","type-page","status-publish","has-post-thumbnail","hentry"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/f1-lap-time.com\/index.php?rest_route=\/wp\/v2\/pages\/17623","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/f1-lap-time.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/f1-lap-time.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/f1-lap-time.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/f1-lap-time.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=17623"}],"version-history":[{"count":3,"href":"https:\/\/f1-lap-time.com\/index.php?rest_route=\/wp\/v2\/pages\/17623\/revisions"}],"predecessor-version":[{"id":17640,"href":"https:\/\/f1-lap-time.com\/index.php?rest_route=\/wp\/v2\/pages\/17623\/revisions\/17640"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/f1-lap-time.com\/index.php?rest_route=\/wp\/v2\/media\/17639"}],"wp:attachment":[{"href":"https:\/\/f1-lap-time.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=17623"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}