[{"content":"先週打ち切ったco1330mからヒネキカルメ窪と日向窪の二又（co1520）までたどり、中尾根を雲取山荘の巻き道に上がった。\n小雲取谷には小径がある。ときに沢筋を見下ろし・ときに水線に下りる細道は険しい。出合いから大滝までは左岸、大滝から二又までは右岸についている。\n道の性格や規格が不明なので、小雲取谷径路と呼ばず「小雲取谷の道」とした。撤収路とした中尾根にも道跡が残っている。\n項目 内容 記録日 2026年10月11日（日） 天候 晴れ パーティ モンターニャ単独 アクセス 西東京バスで東日原バス停 行程 東日原バス停、日原林道、長沢谷下降点、二軒小屋尾根乗越、ゴンエ尾根、ゴンエ尾根P1560、小雲取谷、小雲取谷の道、大滝、ヨケノ滝、中尾根（ヒネキカルメ窪・日向窪中尾根）、雲取山荘巻き道、石尾根、鴨沢コース、留浦バス停 コースタイム 記入中 コースマップ 総距離:- km 累積標高上り:- m 累積標高下り:- m 最高標高:- m 最低標高:- m 山行記録 Part1のタイトルをはじめは「小雲取谷」としたが、今回も繋いで歩いて明瞭な踏み跡が続くのを確認した。したがって「小雲取谷の道」と改題した。\n撤収路の、ヒネキカルメ窪と日向窪の中尾根＝P1654の尾根は、登山詳細図だとそのように読み取れない。しかし筆者がバイブルとする『多摩川上流・日原川流域の陸水学的研究、1985、角田清美』によれば、「日向窪は小雲取出合い尾根から流れてくる」。詳細図を捨て角田説を取った。\n記入中\n関連する筆者の山行記録 公開日 写真（右クリック→新しいタブ...で拡大します）＋詳細記録 ","permalink":"https://montagna-katokeyci.github.io/oohc/posts/2026-10-11/","summary":"\u003cp\u003e先週打ち切ったco1330mからヒネキカルメ窪と日向窪の二又（co1520）までたどり、中尾根を雲取山荘の巻き道に上がった。\u003cbr\u003e\n小雲取谷には小径がある。ときに沢筋を見下ろし・ときに水線に下りる細道は険しい。出合いから大滝までは左岸、大滝から二又までは右岸についている。\u003cbr\u003e\n道の性格や規格が不明なので、小雲取谷径路と呼ばず「小雲取谷の道」とした。撤収路とした中尾根にも道跡が残っている。\u003c/p\u003e\n\u003chr\u003e\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth style=\"text-align: left\"\u003e項目\u003c/th\u003e\n\t\t\t\t\t\u003cth style=\"text-align: left\"\u003e内容\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e記録日\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e2026年10月11日（日）\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e天候\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e晴れ\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003eパーティ\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003eモンターニャ単独\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003eアクセス\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e西東京バスで東日原バス停\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e行程\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e東日原バス停、日原林道、長沢谷下降点、二軒小屋尾根乗越、ゴンエ尾根、ゴンエ尾根P1560、小雲取谷、小雲取谷の道、大滝、ヨケノ滝、中尾根（ヒネキカルメ窪・日向窪中尾根）、雲取山荘巻き道、石尾根、鴨沢コース、留浦バス停\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003chr\u003e\n\u003ch3 id=\"コースタイム\"\u003eコースタイム\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e記入中\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003ch3 id=\"コースマップ\"\u003eコースマップ\u003c/h3\u003e\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003clink rel=\"stylesheet\" href=\"https://unpkg.com/leaflet@1.9.4/dist/leaflet.css\" /\u003e\n\u003cstyle\u003e\n  .gpx-container {\n    width: 100%;\n    margin: 1.5rem 0;\n    border: 1px solid #ccc;\n    border-radius: 8px;\n    overflow: hidden;\n    background: #fff;\n    box-shadow: 0 2px 6px rgba(0,0,0,0.08);\n    font-family: sans-serif;\n  }\n  .gpx-map { height: 380px; width: 100%; }\n  \n   \n  .gpx-summary {\n    display: flex;\n    flex-wrap: nowrap;\n    justify-content: space-between;\n    align-items: center;\n    background: #f8f9fa;\n    padding: 8px 10px;\n    border-top: 1px solid #e0e0e0;\n    border-bottom: 1px solid #e0e0e0;\n    font-size: 0.8rem;\n    color: #333;\n    overflow-x: auto;\n    white-space: nowrap;\n  }\n  .gpx-summary-item {\n    margin: 0 4px;\n  }\n  .gpx-summary-item strong {\n    color: #007bff;\n    font-size: 0.95rem;\n    margin-left: 2px;\n  }\n\n  .gpx-chart-wrapper {\n    height: 180px;\n    width: 100%;\n    padding: 10px;\n    background: #fafafa;\n    box-sizing: border-box;\n  }\n\n   \n  .start-marker-icon, .goal-marker-icon {\n    background: none;\n    border: none;\n    font-weight: bold;\n    font-size: 11px;\n    color: #ffffff;\n    text-align: center;\n    line-height: 18px;\n  }\n\u003c/style\u003e\n\n\n\u003cdiv class=\"gpx-container\"\u003e\n  \u003cdiv id=\"map-cde2d6d4\" class=\"gpx-map\"\u003e\u003c/div\u003e\n  \u003cdiv id=\"summary-cde2d6d4\" class=\"gpx-summary\"\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e総距離:\u003cstrong id=\"sum-dist-cde2d6d4\"\u003e-\u003c/strong\u003e km\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e累積標高上り:\u003cstrong id=\"sum-up-cde2d6d4\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e累積標高下り:\u003cstrong id=\"sum-down-cde2d6d4\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e最高標高:\u003cstrong id=\"sum-max-cde2d6d4\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e最低標高:\u003cstrong id=\"sum-min-cde2d6d4\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n  \u003c/div\u003e\n  \u003cdiv class=\"gpx-chart-wrapper\"\u003e\n    \u003ccanvas id=\"chart-cde2d6d4\"\u003e\u003c/canvas\u003e\n  \u003c/div\u003e\n\u003c/div\u003e\n\n\n\u003cscript src=\"https://unpkg.com/leaflet@1.9.4/dist/leaflet.js\"\u003e\u003c/script\u003e\n\u003cscript src=\"https://cdnjs.cloudflare.com/ajax/libs/leaflet-gpx/1.7.0/gpx.min.js\"\u003e\u003c/script\u003e\n\u003cscript src=\"https://cdn.jsdelivr.net/npm/chart.js\"\u003e\u003c/script\u003e\n\n\u003cscript\u003e\nwindow.addEventListener('load', function() {\n  var gpxUrl = '\\/oohc\\/posts\\/2026-10-11\\/20261011_20261011.gpx';\n\n  \n  var map = L.map('map-cde2d6d4').setView([0, 0], 10);\n  L.tileLayer('https://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png', {\n    attribution: '\u003ca href=\"https://maps.gsi.go.jp/development/ichiran.html\" target=\"_blank\"\u003e国土地理院\u003c/a\u003e',\n    maxZoom: 18\n  }).addTo(map);\n\n  \n  L.control.scale({\n    imperial: false,\n    position: 'bottomleft'\n  }).addTo(map);\n\n  var hoverMarker = null;\n  var trackPoints = [];\n  var timeLabels = []; \n\n  \n  var ctx = document.getElementById('chart-cde2d6d4').getContext('2d');\n  var chart = new Chart(ctx, {\n    type: 'line',\n    data: {\n      datasets: [{\n        label: '標高 (m)',\n        data: [],\n        borderColor: '#007bff',\n        backgroundColor: 'rgba(0, 123, 255, 0.1)',\n        fill: true,\n        borderWidth: 1.5,\n        pointRadius: 0,\n        pointHoverRadius: 6,\n        tension: 0.1\n      }]\n    },\n    options: {\n      responsive: true,\n      maintainAspectRatio: false,\n      interaction: { mode: 'index', intersect: false },\n      plugins: {\n        legend: { display: false },\n        \n        tooltip: {\n          callbacks: {\n            title: function(items) {\n              var index = items[0].dataIndex;\n              var timeStr = timeLabels[index] || '';\n              var distStr = items[0].raw.x.toFixed(2) + ' km';\n              return timeStr ? '時刻: ' + timeStr + '（距離: ' + distStr + '）' : '距離: ' + distStr;\n            },\n            label: function(item) {\n              return '標高: ' + item.raw.y + ' m';\n            }\n          }\n        }\n      },\n      scales: {\n        x: {\n          type: 'linear', \n          display: true,\n          title: { display: true, text: '距離 (km)', font: { size: 10 } },\n          ticks: {\n            font: { size: 10 }\n          },\n          grid: { color: 'rgba(0, 0, 0, 0.05)' }\n        },\n        y: {\n          display: true,\n          title: { display: true, text: '標高 (m)', font: { size: 10 } },\n          ticks: { font: { size: 10 } },\n          grid: { color: 'rgba(0, 0, 0, 0.05)' }\n        }\n      },\n      \n      onHover: function(event, activeElements) {\n        if (activeElements \u0026\u0026 activeElements.length \u003e 0) {\n          var index = activeElements[0].index;\n          updateHoverMarker(index);\n        }\n      }\n    }\n  });\n\n  \n  function updateHoverMarker(index) {\n    var pt = trackPoints[index];\n    if (pt) {\n      if (!hoverMarker) {\n        hoverMarker = L.circleMarker([pt.lat, pt.lng], {\n          radius: 8,\n          fillColor: '#00ffff',\n          color: '#ffffff',\n          weight: 3,\n          opacity: 1,\n          fillOpacity: 1\n        }).addTo(map);\n      } else {\n        hoverMarker.setLatLng([pt.lat, pt.lng]);\n      }\n    }\n  }\n\n  \n  function extractTrackData(layer) {\n    var pts = [];\n    var polylines = [];\n\n    if (typeof layer.getLatLngs === 'function') {\n      var latlngs = layer.getLatLngs();\n      var flat = Array.isArray(latlngs[0]) ? latlngs.flat(Infinity) : latlngs;\n      flat.forEach(function(p) {\n        if (p \u0026\u0026 typeof p.lat === 'number') {\n          pts.push({ lat: p.lat, lng: p.lng });\n        }\n      });\n      if (layer instanceof L.Polyline) {\n        polylines.push(layer);\n      }\n    } else if (typeof layer.eachLayer === 'function') {\n      layer.eachLayer(function(child) {\n        var res = extractTrackData(child);\n        pts = pts.concat(res.pts);\n        polylines = polylines.concat(res.polylines);\n      });\n    }\n    return { pts: pts, polylines: polylines };\n  }\n\n  \n  fetch(gpxUrl)\n    .then(function(response) { return response.text(); })\n    .then(function(xmlText) {\n      var parser = new DOMParser();\n      var xmlDoc = parser.parseFromString(xmlText, \"text/xml\");\n      var trkpts = xmlDoc.getElementsByTagName(\"trkpt\");\n\n      for (var i = 0; i \u003c trkpts.length; i++) {\n        var timeNode = trkpts[i].getElementsByTagName(\"time\")[0];\n        if (timeNode) {\n          var dateObj = new Date(timeNode.textContent);\n          var timeStr = dateObj.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', hour12: false });\n          timeLabels.push(timeStr);\n        } else {\n          timeLabels.push('');\n        }\n      }\n    })\n    .catch(function(err) {\n      console.error(\"GPX Time Parsing Error:\", err);\n    });\n\n  \n  new L.GPX(gpxUrl, {\n    async: true,\n    polyline_options: { color: '#ff3300', weight: 5, opacity: 0.8 },\n    marker_options: { startIconUrl: null, endIconUrl: null, wptIconUrls: null }\n  }).on('loaded', function(e) {\n    var gpx = e.target;\n    map.fitBounds(gpx.getBounds());\n\n    \n    var totalDistMeters = gpx.get_distance();\n    var distKmNum = totalDistMeters / 1000;\n    var distKmStr = distKmNum.toFixed(2);\n    var maxEle = Math.round(gpx.get_elevation_max());\n    var minEle = Math.round(gpx.get_elevation_min());\n    var gainEle = Math.round(gpx.get_elevation_gain());\n    var lossEle = Math.round(gpx.get_elevation_loss());\n\n    document.getElementById('sum-dist-cde2d6d4').innerText = distKmStr;\n    document.getElementById('sum-up-cde2d6d4').innerText = gainEle;\n    document.getElementById('sum-down-cde2d6d4').innerText = lossEle;\n    document.getElementById('sum-max-cde2d6d4').innerText = maxEle;\n    document.getElementById('sum-min-cde2d6d4').innerText = minEle;\n\n    \n    var eleData = gpx.get_elevation_data();\n    var chartDataPoints = [];\n\n    var extracted = extractTrackData(gpx);\n    trackPoints = extracted.pts;\n\n    \n    if (trackPoints.length \u003e 0) {\n      var startPt = trackPoints[0];\n      var endPt = trackPoints[trackPoints.length - 1];\n\n      L.circleMarker([startPt.lat, startPt.lng], {\n        radius: 9,\n        fillColor: '#28a745',\n        color: '#ffffff',\n        weight: 2,\n        opacity: 1,\n        fillOpacity: 0.9\n      }).addTo(map).bindTooltip('スタート', { permanent: false, direction: 'top' });\n\n      L.circleMarker([endPt.lat, endPt.lng], {\n        radius: 9,\n        fillColor: '#dc3545',\n        color: '#ffffff',\n        weight: 2,\n        opacity: 1,\n        fillOpacity: 0.9\n      }).addTo(map).bindTooltip('ゴール', { permanent: false, direction: 'top' });\n    }\n\n    eleData.forEach(function(item) {\n      var dist = typeof item[0] === 'number' ? item[0] : parseFloat(item[0]);\n      var ele = Math.round(item[1]);\n      chartDataPoints.push({\n        x: parseFloat(dist.toFixed(2)),\n        y: ele\n      });\n    });\n\n    \n    var dynamicStepSize = 1.0;\n    if (distKmNum \u003c= 5) {\n      dynamicStepSize = 0.5;   \n    } else if (distKmNum \u003c= 20) {\n      dynamicStepSize = 1.0;   \n    } else if (distKmNum \u003c= 40) {\n      dynamicStepSize = 5.0;   \n    } else {\n      dynamicStepSize = 10.0;  \n    }\n\n    \n    chart.options.scales.x.max = distKmNum;\n\n    \n    var allowedTicks = [];\n    for (var v = 0; v \u003c distKmNum; v += dynamicStepSize) {\n      allowedTicks.push(parseFloat(v.toFixed(1)));\n    }\n    \n\n    \n    chart.options.scales.x.ticks.callback = function(value) {\n      for (var i = 0; i \u003c allowedTicks.length; i++) {\n        if (Math.abs(value - allowedTicks[i]) \u003c 0.01) {\n          return value + ' km';\n        }\n      }\n      \n      return '';\n    };\n\n    \n    chart.options.scales.x.afterBuildTicks = function(axis) {\n      axis.ticks = allowedTicks.map(function(val) {\n        return { value: val };\n      });\n    };\n\n    chart.data.datasets[0].data = chartDataPoints;\n    chart.update();\n\n    \n    extracted.polylines.forEach(function(polyline) {\n      polyline.on('mousemove', function(ev) {\n        if (!trackPoints.length) return;\n\n        var mouseLatLng = ev.latlng;\n        var closestIndex = 0;\n        var minDist = Infinity;\n\n        for (var i = 0; i \u003c trackPoints.length; i++) {\n          var d = mouseLatLng.distanceTo(L.latLng(trackPoints[i].lat, trackPoints[i].lng));\n          if (d \u003c minDist) {\n            minDist = d;\n            closestIndex = i;\n          }\n        }\n\n        updateHoverMarker(closestIndex);\n\n        chart.setActiveElements([{ datasetIndex: 0, index: closestIndex }]);\n        chart.tooltip.setActiveElements([{ datasetIndex: 0, index: closestIndex }], { x: 0, y: 0 });\n        chart.update();\n      });\n    });\n\n  }).addTo(map);\n});\n\u003c/script\u003e\n\u003chr\u003e\n\u003ch3 id=\"山行記録\"\u003e山行記録\u003c/h3\u003e\n\u003cp\u003ePart1のタイトルをはじめは「小雲取谷」としたが、今回も繋いで歩いて明瞭な踏み跡が続くのを確認した。したがって「小雲取谷の道」と改題した。\u003c/p\u003e","title":"Part 2 : 小雲取谷の道"},{"content":"天候不順の夏は思うように沢筋を歩けず、やっと晴れ間がのぞくらしいので小雲取谷にチャレンジしたが終日曇天。「記録的な長雨」のあとで水量多く気温が低く、水線沿いを放棄したので中途半端に難しくなった。谷に沿って崖っぷちの踏み跡が続くのは知らなかった。\n項目 内容 記録日 2026年10月3日（土） 天候 曇り→小雨 パーティ モンターニャ単独 アクセス 西東京バスで東日原バス停 行程 東日原バス停、日原林道、長沢谷下降点、二軒小屋尾根乗越、大ダワ林道、モミソ窪、小雲取谷出合、小雲取谷、ゴンエ尾根、日原林道、東日原バス停 コースタイム 08:07～東日原バス停スタート 10:02〜二軒小屋尾根乗越〜10:15 11:04～モミソ窪周辺（大ダワ林道より上の踏み跡）～11:23 11:58〜小雲取谷出合い〜12:15 14:05～小雲取大滝？下と右岸高みの平場、co1320から40～15:22 15:42～ゴンエ尾根に上がる 16:32～二軒小屋尾根乗越 16:37～長沢谷（洗濯）～16:50 18:34～東日原バス停フィニッシュ コースマップ 総距離:- km 累積標高上り:- m 累積標高下り:- m 最高標高:- m 最低標高:- m 山行記録 反省点がふたつ。まず、アプローチの大ダワ林道の崩落地点を巻いたあとすぐに林道に復帰せず、この夏にたどった大ダワ林道古道？（→関連する筆者の山行記録）の跡を追ってしまう。モミソ窪を渡ったあとの道がわからず時間をかけた。次いで小雲取谷では沢筋から離れた左岸の高いところに踏み跡をみつけ、追うのに夢中になる。水量多く気温が低かったので、格好の口実にしてしまった。\n東日原バス停スタートの日帰りで鴨沢に下りた記録を見たので、「もしかしたら」やれるかなと淡い期待をもったがとても無理。テーマを絞って季節を考えないと。\n追記～はじめタイトルを「小雲取谷」としたが、翌週も繋いで歩いて明瞭な踏み跡が続くのを確認した。したがって「小雲取谷の道」と改題した。20261011\n関連する筆者の山行記録 Part 2 : 大ダワ林道古道（？）\nhttps://montagna-katokeyci.github.io/oohc/posts/2026-07-04/\nPart 1 : 大ダワ林道古道（？）\nhttps://montagna-katokeyci.github.io/oohc/posts/2026-06-06/\n公開日 20261007\n写真（右クリック→新しいタブ...で拡大します）＋詳細記録 （09:49・写真1） 長沢谷下降点。工事車両に重機、落石防止のワイヤーネットの材料がたくさん。作業員は御多分に漏れず外国の人ばかりだった。土曜日にご苦労さまです。 （10:02・写真2） バス停から1時間55分で二軒小屋尾根の乗越しに着く。アックスを下ろしチェーンスパイクを着ける。 （10:50・写真3） 崩落上端を巻く。横に移動する様々な踏み跡があるのだが、ふと「旧径路をもういっぺん歩いてみよう」と思いつきさらに上がり、 （11:07・写真4） モミソ窪で対岸の進路探しに時間を費やす。大ダワ林道の60-70m上。\n忙しくなる一日を前に、寄り道してどうするつもりだったんだろ。 （12:00・写真5） 小雲取谷の出合い。右の中尾根の平場＝小屋跡に上がってから沢歩きを開始する。 （12:17・写真6） 歩き出して数分後、左岸に「小雲取出合尾根に向かう薄い踏み跡」と、「谷筋を高巻くらしい濃い踏み跡」を見つけたのが運の尽き。ほくほくと乗っかってしまう。 （12:40・写真7） 左岸に明瞭な道型が続く。 （12:52・写真8） いったん谷に下りるが、 （13:09・写真9） 十数分後にはこの高さで左岸を上がっている。 （13:40・写真10） やがて谷に向かい下りだす。とても細い。 （13:59・写真11） 谷に下りながら進路上に「アカンやつ」を見る。 （14:14・写真12） 左岸から入る細い水流の枝沢を渡ったところで道を失う。枝沢の対岸は直進できず、上がるのも危険。 （14:42・写真13） しかたなく本流に下りれば大滝の下。ボイスレコーダーに「ハマったなあ。。。」 （15:17・写真14） 時間的にも「脱出」を考えないといけない。試しに、きょうはじめて「右岸」を上がってみる。狭い平場と、上流に続くごく細い踏み跡を見る。\n残念だが時間切れ、撤収開始。\nお「マリアさまが顔を洗って出直してこい、とさ」\nオ「…………」 （15:42・写真15） さっくりゴンエ尾根に上がり、 （16:26・写真16） 大雲取谷の水量もヒザ下ですんだ。 （16:55・写真17） 日原林道の長沢谷下降点に上がれば、まっさらなワイヤーネットが出迎えてくれた。 ","permalink":"https://montagna-katokeyci.github.io/oohc/posts/2026-10-03/","summary":"\u003cp\u003e天候不順の夏は思うように沢筋を歩けず、やっと晴れ間がのぞくらしいので小雲取谷にチャレンジしたが終日曇天。「記録的な長雨」のあとで水量多く気温が低く、水線沿いを放棄したので中途半端に難しくなった。谷に沿って崖っぷちの踏み跡が続くのは知らなかった。\u003c/p\u003e\n\u003chr\u003e\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth style=\"text-align: left\"\u003e項目\u003c/th\u003e\n\t\t\t\t\t\u003cth style=\"text-align: left\"\u003e内容\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e記録日\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e2026年10月3日（土）\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e天候\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e曇り→小雨\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003eパーティ\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003eモンターニャ単独\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003eアクセス\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e西東京バスで東日原バス停\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e行程\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e東日原バス停、日原林道、長沢谷下降点、二軒小屋尾根乗越、大ダワ林道、モミソ窪、小雲取谷出合、小雲取谷、ゴンエ尾根、日原林道、東日原バス停\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003chr\u003e\n\u003ch3 id=\"コースタイム\"\u003eコースタイム\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e08:07～東日原バス停スタート\u003c/li\u003e\n\u003cli\u003e10:02〜二軒小屋尾根乗越〜10:15\u003c/li\u003e\n\u003cli\u003e11:04～モミソ窪周辺（大ダワ林道より上の踏み跡）～11:23\u003c/li\u003e\n\u003cli\u003e11:58〜小雲取谷出合い〜12:15\u003c/li\u003e\n\u003cli\u003e14:05～小雲取大滝？下と右岸高みの平場、co1320から40～15:22\u003c/li\u003e\n\u003cli\u003e15:42～ゴンエ尾根に上がる\u003c/li\u003e\n\u003cli\u003e16:32～二軒小屋尾根乗越\u003c/li\u003e\n\u003cli\u003e16:37～長沢谷（洗濯）～16:50\u003c/li\u003e\n\u003cli\u003e18:34～東日原バス停フィニッシュ\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003ch3 id=\"コースマップ\"\u003eコースマップ\u003c/h3\u003e\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003clink rel=\"stylesheet\" href=\"https://unpkg.com/leaflet@1.9.4/dist/leaflet.css\" /\u003e\n\u003cstyle\u003e\n  .gpx-container {\n    width: 100%;\n    margin: 1.5rem 0;\n    border: 1px solid #ccc;\n    border-radius: 8px;\n    overflow: hidden;\n    background: #fff;\n    box-shadow: 0 2px 6px rgba(0,0,0,0.08);\n    font-family: sans-serif;\n  }\n  .gpx-map { height: 380px; width: 100%; }\n  \n   \n  .gpx-summary {\n    display: flex;\n    flex-wrap: nowrap;\n    justify-content: space-between;\n    align-items: center;\n    background: #f8f9fa;\n    padding: 8px 10px;\n    border-top: 1px solid #e0e0e0;\n    border-bottom: 1px solid #e0e0e0;\n    font-size: 0.8rem;\n    color: #333;\n    overflow-x: auto;\n    white-space: nowrap;\n  }\n  .gpx-summary-item {\n    margin: 0 4px;\n  }\n  .gpx-summary-item strong {\n    color: #007bff;\n    font-size: 0.95rem;\n    margin-left: 2px;\n  }\n\n  .gpx-chart-wrapper {\n    height: 180px;\n    width: 100%;\n    padding: 10px;\n    background: #fafafa;\n    box-sizing: border-box;\n  }\n\n   \n  .start-marker-icon, .goal-marker-icon {\n    background: none;\n    border: none;\n    font-weight: bold;\n    font-size: 11px;\n    color: #ffffff;\n    text-align: center;\n    line-height: 18px;\n  }\n\u003c/style\u003e\n\n\n\u003cdiv class=\"gpx-container\"\u003e\n  \u003cdiv id=\"map-3e883f9c\" class=\"gpx-map\"\u003e\u003c/div\u003e\n  \u003cdiv id=\"summary-3e883f9c\" class=\"gpx-summary\"\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e総距離:\u003cstrong id=\"sum-dist-3e883f9c\"\u003e-\u003c/strong\u003e km\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e累積標高上り:\u003cstrong id=\"sum-up-3e883f9c\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e累積標高下り:\u003cstrong id=\"sum-down-3e883f9c\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e最高標高:\u003cstrong id=\"sum-max-3e883f9c\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e最低標高:\u003cstrong id=\"sum-min-3e883f9c\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n  \u003c/div\u003e\n  \u003cdiv class=\"gpx-chart-wrapper\"\u003e\n    \u003ccanvas id=\"chart-3e883f9c\"\u003e\u003c/canvas\u003e\n  \u003c/div\u003e\n\u003c/div\u003e\n\n\n\u003cscript src=\"https://unpkg.com/leaflet@1.9.4/dist/leaflet.js\"\u003e\u003c/script\u003e\n\u003cscript src=\"https://cdnjs.cloudflare.com/ajax/libs/leaflet-gpx/1.7.0/gpx.min.js\"\u003e\u003c/script\u003e\n\u003cscript src=\"https://cdn.jsdelivr.net/npm/chart.js\"\u003e\u003c/script\u003e\n\n\u003cscript\u003e\nwindow.addEventListener('load', function() {\n  var gpxUrl = '\\/oohc\\/posts\\/2026-10-03\\/20261003_20261003.gpx';\n\n  \n  var map = L.map('map-3e883f9c').setView([0, 0], 10);\n  L.tileLayer('https://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png', {\n    attribution: '\u003ca href=\"https://maps.gsi.go.jp/development/ichiran.html\" target=\"_blank\"\u003e国土地理院\u003c/a\u003e',\n    maxZoom: 18\n  }).addTo(map);\n\n  \n  L.control.scale({\n    imperial: false,\n    position: 'bottomleft'\n  }).addTo(map);\n\n  var hoverMarker = null;\n  var trackPoints = [];\n  var timeLabels = []; \n\n  \n  var ctx = document.getElementById('chart-3e883f9c').getContext('2d');\n  var chart = new Chart(ctx, {\n    type: 'line',\n    data: {\n      datasets: [{\n        label: '標高 (m)',\n        data: [],\n        borderColor: '#007bff',\n        backgroundColor: 'rgba(0, 123, 255, 0.1)',\n        fill: true,\n        borderWidth: 1.5,\n        pointRadius: 0,\n        pointHoverRadius: 6,\n        tension: 0.1\n      }]\n    },\n    options: {\n      responsive: true,\n      maintainAspectRatio: false,\n      interaction: { mode: 'index', intersect: false },\n      plugins: {\n        legend: { display: false },\n        \n        tooltip: {\n          callbacks: {\n            title: function(items) {\n              var index = items[0].dataIndex;\n              var timeStr = timeLabels[index] || '';\n              var distStr = items[0].raw.x.toFixed(2) + ' km';\n              return timeStr ? '時刻: ' + timeStr + '（距離: ' + distStr + '）' : '距離: ' + distStr;\n            },\n            label: function(item) {\n              return '標高: ' + item.raw.y + ' m';\n            }\n          }\n        }\n      },\n      scales: {\n        x: {\n          type: 'linear', \n          display: true,\n          title: { display: true, text: '距離 (km)', font: { size: 10 } },\n          ticks: {\n            font: { size: 10 }\n          },\n          grid: { color: 'rgba(0, 0, 0, 0.05)' }\n        },\n        y: {\n          display: true,\n          title: { display: true, text: '標高 (m)', font: { size: 10 } },\n          ticks: { font: { size: 10 } },\n          grid: { color: 'rgba(0, 0, 0, 0.05)' }\n        }\n      },\n      \n      onHover: function(event, activeElements) {\n        if (activeElements \u0026\u0026 activeElements.length \u003e 0) {\n          var index = activeElements[0].index;\n          updateHoverMarker(index);\n        }\n      }\n    }\n  });\n\n  \n  function updateHoverMarker(index) {\n    var pt = trackPoints[index];\n    if (pt) {\n      if (!hoverMarker) {\n        hoverMarker = L.circleMarker([pt.lat, pt.lng], {\n          radius: 8,\n          fillColor: '#00ffff',\n          color: '#ffffff',\n          weight: 3,\n          opacity: 1,\n          fillOpacity: 1\n        }).addTo(map);\n      } else {\n        hoverMarker.setLatLng([pt.lat, pt.lng]);\n      }\n    }\n  }\n\n  \n  function extractTrackData(layer) {\n    var pts = [];\n    var polylines = [];\n\n    if (typeof layer.getLatLngs === 'function') {\n      var latlngs = layer.getLatLngs();\n      var flat = Array.isArray(latlngs[0]) ? latlngs.flat(Infinity) : latlngs;\n      flat.forEach(function(p) {\n        if (p \u0026\u0026 typeof p.lat === 'number') {\n          pts.push({ lat: p.lat, lng: p.lng });\n        }\n      });\n      if (layer instanceof L.Polyline) {\n        polylines.push(layer);\n      }\n    } else if (typeof layer.eachLayer === 'function') {\n      layer.eachLayer(function(child) {\n        var res = extractTrackData(child);\n        pts = pts.concat(res.pts);\n        polylines = polylines.concat(res.polylines);\n      });\n    }\n    return { pts: pts, polylines: polylines };\n  }\n\n  \n  fetch(gpxUrl)\n    .then(function(response) { return response.text(); })\n    .then(function(xmlText) {\n      var parser = new DOMParser();\n      var xmlDoc = parser.parseFromString(xmlText, \"text/xml\");\n      var trkpts = xmlDoc.getElementsByTagName(\"trkpt\");\n\n      for (var i = 0; i \u003c trkpts.length; i++) {\n        var timeNode = trkpts[i].getElementsByTagName(\"time\")[0];\n        if (timeNode) {\n          var dateObj = new Date(timeNode.textContent);\n          var timeStr = dateObj.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', hour12: false });\n          timeLabels.push(timeStr);\n        } else {\n          timeLabels.push('');\n        }\n      }\n    })\n    .catch(function(err) {\n      console.error(\"GPX Time Parsing Error:\", err);\n    });\n\n  \n  new L.GPX(gpxUrl, {\n    async: true,\n    polyline_options: { color: '#ff3300', weight: 5, opacity: 0.8 },\n    marker_options: { startIconUrl: null, endIconUrl: null, wptIconUrls: null }\n  }).on('loaded', function(e) {\n    var gpx = e.target;\n    map.fitBounds(gpx.getBounds());\n\n    \n    var totalDistMeters = gpx.get_distance();\n    var distKmNum = totalDistMeters / 1000;\n    var distKmStr = distKmNum.toFixed(2);\n    var maxEle = Math.round(gpx.get_elevation_max());\n    var minEle = Math.round(gpx.get_elevation_min());\n    var gainEle = Math.round(gpx.get_elevation_gain());\n    var lossEle = Math.round(gpx.get_elevation_loss());\n\n    document.getElementById('sum-dist-3e883f9c').innerText = distKmStr;\n    document.getElementById('sum-up-3e883f9c').innerText = gainEle;\n    document.getElementById('sum-down-3e883f9c').innerText = lossEle;\n    document.getElementById('sum-max-3e883f9c').innerText = maxEle;\n    document.getElementById('sum-min-3e883f9c').innerText = minEle;\n\n    \n    var eleData = gpx.get_elevation_data();\n    var chartDataPoints = [];\n\n    var extracted = extractTrackData(gpx);\n    trackPoints = extracted.pts;\n\n    \n    if (trackPoints.length \u003e 0) {\n      var startPt = trackPoints[0];\n      var endPt = trackPoints[trackPoints.length - 1];\n\n      L.circleMarker([startPt.lat, startPt.lng], {\n        radius: 9,\n        fillColor: '#28a745',\n        color: '#ffffff',\n        weight: 2,\n        opacity: 1,\n        fillOpacity: 0.9\n      }).addTo(map).bindTooltip('スタート', { permanent: false, direction: 'top' });\n\n      L.circleMarker([endPt.lat, endPt.lng], {\n        radius: 9,\n        fillColor: '#dc3545',\n        color: '#ffffff',\n        weight: 2,\n        opacity: 1,\n        fillOpacity: 0.9\n      }).addTo(map).bindTooltip('ゴール', { permanent: false, direction: 'top' });\n    }\n\n    eleData.forEach(function(item) {\n      var dist = typeof item[0] === 'number' ? item[0] : parseFloat(item[0]);\n      var ele = Math.round(item[1]);\n      chartDataPoints.push({\n        x: parseFloat(dist.toFixed(2)),\n        y: ele\n      });\n    });\n\n    \n    var dynamicStepSize = 1.0;\n    if (distKmNum \u003c= 5) {\n      dynamicStepSize = 0.5;   \n    } else if (distKmNum \u003c= 20) {\n      dynamicStepSize = 1.0;   \n    } else if (distKmNum \u003c= 40) {\n      dynamicStepSize = 5.0;   \n    } else {\n      dynamicStepSize = 10.0;  \n    }\n\n    \n    chart.options.scales.x.max = distKmNum;\n\n    \n    var allowedTicks = [];\n    for (var v = 0; v \u003c distKmNum; v += dynamicStepSize) {\n      allowedTicks.push(parseFloat(v.toFixed(1)));\n    }\n    \n\n    \n    chart.options.scales.x.ticks.callback = function(value) {\n      for (var i = 0; i \u003c allowedTicks.length; i++) {\n        if (Math.abs(value - allowedTicks[i]) \u003c 0.01) {\n          return value + ' km';\n        }\n      }\n      \n      return '';\n    };\n\n    \n    chart.options.scales.x.afterBuildTicks = function(axis) {\n      axis.ticks = allowedTicks.map(function(val) {\n        return { value: val };\n      });\n    };\n\n    chart.data.datasets[0].data = chartDataPoints;\n    chart.update();\n\n    \n    extracted.polylines.forEach(function(polyline) {\n      polyline.on('mousemove', function(ev) {\n        if (!trackPoints.length) return;\n\n        var mouseLatLng = ev.latlng;\n        var closestIndex = 0;\n        var minDist = Infinity;\n\n        for (var i = 0; i \u003c trackPoints.length; i++) {\n          var d = mouseLatLng.distanceTo(L.latLng(trackPoints[i].lat, trackPoints[i].lng));\n          if (d \u003c minDist) {\n            minDist = d;\n            closestIndex = i;\n          }\n        }\n\n        updateHoverMarker(closestIndex);\n\n        chart.setActiveElements([{ datasetIndex: 0, index: closestIndex }]);\n        chart.tooltip.setActiveElements([{ datasetIndex: 0, index: closestIndex }], { x: 0, y: 0 });\n        chart.update();\n      });\n    });\n\n  }).addTo(map);\n});\n\u003c/script\u003e\n\u003chr\u003e\n\u003ch3 id=\"山行記録\"\u003e山行記録\u003c/h3\u003e\n\u003cp\u003e反省点がふたつ。まず、アプローチの大ダワ林道の崩落地点を巻いたあとすぐに林道に復帰せず、この夏にたどった大ダワ林道古道？（→関連する筆者の山行記録）の跡を追ってしまう。モミソ窪を渡ったあとの道がわからず時間をかけた。次いで小雲取谷では沢筋から離れた左岸の高いところに踏み跡をみつけ、追うのに夢中になる。水量多く気温が低かったので、格好の口実にしてしまった。\u003cbr\u003e\n東日原バス停スタートの日帰りで鴨沢に下りた記録を見たので、「もしかしたら」やれるかなと淡い期待をもったがとても無理。テーマを絞って季節を考えないと。\u003c/p\u003e","title":"Part 1 : 小雲取谷の道"},{"content":"「旧青梅街道」に違いはない。しかし奥多摩駅のひとつ手前の集落、日向と、氷川（奥多摩駅）を結ぶわずか700mの話である。現在の国道の15ｍ〜20ｍ上に、明治大正までの道が部分的に残っている。\n駅前の土産物屋のご主人によれば、「馬車は通れた。うちの祖父さんが馬で炭を運んだ道だよ」とのことだが、いまや歩く人を選ぶ。奥多摩駅からもっとも近い、極悪の廃道になっている。\n項目 内容 記録日 2026年9月27日（日） 天候 雨上がりの曇天 パーティ モンターニャ単独 アクセス JR青梅線で奥多摩駅 行程 コースタイム 記入中 コースマップ 総距離:- km 累積標高上り:- m 累積標高下り:- m 最高標高:- m 最低標高:- m 山行記録 プロローグ 道を見つけたのは偶然だ。\n半日だけ歩くと決めた日曜早朝の青梅線車内で「どこを歩こうか」。ゴンザス尾根から石尾根の範囲を思い浮かべて候補を探す。そういえば、駅近のゴンザス尾根の下の方は、足を向ける機会が少ないな。大氷川の南端から除ヶ野～安寺沢へ向かう日原古道をたどり、分かれる踏み跡があればたどってみようか。\n散歩気分で奥多摩駅をスタートする。新氷川トンネルの手前で旧国道に入りもえぎの湯方向へ向かい、しかし大氷川の南に上がる階段を通り過ぎてしまう。直感が働いたといえば誇張で、「ゴンザス尾根の南端はもっと先だから」、もう少し探索してみようと思っただけだ。\n氷川隧道をくぐりもえぎの湯の前を通り過ぎ、馬頭さまに通りかかる。拝んでから解説板を読んでみる。\n氷川と白丸は隣り合わせの集落なのに、地形が急峻で交通の難所であったことが道筋の変遷とともに記されている。次いで、強烈な一文が目に飛び込んできた。\n\u0026ldquo;（馬頭さまは）当初は、現国道より十数米上部の旧道に建立されていたものであるが……\u0026rdquo;\n十数メートル上の旧道！ 聞いてないぞ、そのようなものはw\n同時に、1年半前に大氷川のはずれでお地蔵さまを見かけ、「ここは大氷川集落の入り口ではないか」と感じたのを思い出す。\n十数メートル上と、お地蔵さまは標高で一致する。であれば、日向集落の西の端からお地蔵さまを目指そうじゃないか。\n氷川の七曲り（旧青梅街道、日向～氷川） GPXの赤線はアテにならない。奥多摩駅でコンパスのキャリブレーションを忘れ、日向でズレが激しいのに気づいて校正した。なによりも、現在のGPXの精度は崖っぷちの道を行くときに高度の誤差が大きすぎる。水平方向はまだマシだろう。\n※記入中\nメモ 氷川トンネルはJR青梅線、1944年。新氷川トンネルは現国道411号線、1983年。「氷川隧道」が旧国道411号線、「もえぎの湯」に至る道、1933年（昭和8年）。\nコンタクトレンズを忘れ、スマホの操作はラクだったが地表の起伏を読み取りにくかった。\n関連する筆者の山行記録 氷川古道（氷川から倉沢 ）\nhttps://www.yamakei-online.com/cl_record/detail.php?id=313105\n公開日 写真（右クリック→新しいタブ...で拡大します）＋詳細記録 （00:00・写真1） 記入中 （07:44・写真2） （07:39・写真3） （08:02・写真4） （08:02・写真5） （08:10・写真6） （08:12・写真7） （08:23・写真8） （08:52・写真9） （08:58・写真10） （09:04・写真11） （09:11・写真12） （09:18・写真13） （09:25・写真14） （09:28・写真15） （09:31・写真16） （09:33・写真17） （09:44・写真18） （09:54・写真19） （09:54・写真20） （10:07・写真21） （10:33・写真22） （11:26・写真23） （11:27・写真24） （11:40・写真25） （11:49・写真26） （11:51・写真27） （11:53・写真28） （11:57・写真29） （12:06・写真30） （12:11・写真31） （12:11・写真32） （12:13・写真33） （12:31・写真34） （12:36・写真35） （12:38・写真36） （12:41・写真37） （12:43・写真38） （12:45・写真39） （12:47・写真40） （12:51・写真41） （12:54・写真42） （12:56・写真43） （13:09・写真44） ","permalink":"https://montagna-katokeyci.github.io/oohc/posts/2026-09-27/","summary":"\u003cp\u003e「旧青梅街道」に違いはない。しかし奥多摩駅のひとつ手前の集落、日向と、氷川（奥多摩駅）を結ぶわずか700mの話である。現在の国道の15ｍ〜20ｍ上に、明治大正までの道が部分的に残っている。\u003cbr\u003e\n駅前の土産物屋のご主人によれば、「馬車は通れた。うちの祖父さんが馬で炭を運んだ道だよ」とのことだが、いまや歩く人を選ぶ。奥多摩駅からもっとも近い、極悪の廃道になっている。\u003c/p\u003e\n\u003chr\u003e\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth style=\"text-align: left\"\u003e項目\u003c/th\u003e\n\t\t\t\t\t\u003cth style=\"text-align: left\"\u003e内容\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e記録日\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e2026年9月27日（日）\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e天候\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e雨上がりの曇天\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003eパーティ\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003eモンターニャ単独\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003eアクセス\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003eJR青梅線で奥多摩駅\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e行程\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003chr\u003e\n\u003ch3 id=\"コースタイム\"\u003eコースタイム\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e記入中\u003c/li\u003e\n\u003cli\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003ch3 id=\"コースマップ\"\u003eコースマップ\u003c/h3\u003e\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003clink rel=\"stylesheet\" href=\"https://unpkg.com/leaflet@1.9.4/dist/leaflet.css\" /\u003e\n\u003cstyle\u003e\n  .gpx-container {\n    width: 100%;\n    margin: 1.5rem 0;\n    border: 1px solid #ccc;\n    border-radius: 8px;\n    overflow: hidden;\n    background: #fff;\n    box-shadow: 0 2px 6px rgba(0,0,0,0.08);\n    font-family: sans-serif;\n  }\n  .gpx-map { height: 380px; width: 100%; }\n  \n   \n  .gpx-summary {\n    display: flex;\n    flex-wrap: nowrap;\n    justify-content: space-between;\n    align-items: center;\n    background: #f8f9fa;\n    padding: 8px 10px;\n    border-top: 1px solid #e0e0e0;\n    border-bottom: 1px solid #e0e0e0;\n    font-size: 0.8rem;\n    color: #333;\n    overflow-x: auto;\n    white-space: nowrap;\n  }\n  .gpx-summary-item {\n    margin: 0 4px;\n  }\n  .gpx-summary-item strong {\n    color: #007bff;\n    font-size: 0.95rem;\n    margin-left: 2px;\n  }\n\n  .gpx-chart-wrapper {\n    height: 180px;\n    width: 100%;\n    padding: 10px;\n    background: #fafafa;\n    box-sizing: border-box;\n  }\n\n   \n  .start-marker-icon, .goal-marker-icon {\n    background: none;\n    border: none;\n    font-weight: bold;\n    font-size: 11px;\n    color: #ffffff;\n    text-align: center;\n    line-height: 18px;\n  }\n\u003c/style\u003e\n\n\n\u003cdiv class=\"gpx-container\"\u003e\n  \u003cdiv id=\"map-7fe9c563\" class=\"gpx-map\"\u003e\u003c/div\u003e\n  \u003cdiv id=\"summary-7fe9c563\" class=\"gpx-summary\"\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e総距離:\u003cstrong id=\"sum-dist-7fe9c563\"\u003e-\u003c/strong\u003e km\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e累積標高上り:\u003cstrong id=\"sum-up-7fe9c563\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e累積標高下り:\u003cstrong id=\"sum-down-7fe9c563\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e最高標高:\u003cstrong id=\"sum-max-7fe9c563\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e最低標高:\u003cstrong id=\"sum-min-7fe9c563\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n  \u003c/div\u003e\n  \u003cdiv class=\"gpx-chart-wrapper\"\u003e\n    \u003ccanvas id=\"chart-7fe9c563\"\u003e\u003c/canvas\u003e\n  \u003c/div\u003e\n\u003c/div\u003e\n\n\n\u003cscript src=\"https://unpkg.com/leaflet@1.9.4/dist/leaflet.js\"\u003e\u003c/script\u003e\n\u003cscript src=\"https://cdnjs.cloudflare.com/ajax/libs/leaflet-gpx/1.7.0/gpx.min.js\"\u003e\u003c/script\u003e\n\u003cscript src=\"https://cdn.jsdelivr.net/npm/chart.js\"\u003e\u003c/script\u003e\n\n\u003cscript\u003e\nwindow.addEventListener('load', function() {\n  var gpxUrl = '\\/oohc\\/posts\\/2026-09-27\\/20260927_20260927.gpx';\n\n  \n  var map = L.map('map-7fe9c563').setView([0, 0], 10);\n  L.tileLayer('https://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png', {\n    attribution: '\u003ca href=\"https://maps.gsi.go.jp/development/ichiran.html\" target=\"_blank\"\u003e国土地理院\u003c/a\u003e',\n    maxZoom: 18\n  }).addTo(map);\n\n  \n  L.control.scale({\n    imperial: false,\n    position: 'bottomleft'\n  }).addTo(map);\n\n  var hoverMarker = null;\n  var trackPoints = [];\n  var timeLabels = []; \n\n  \n  var ctx = document.getElementById('chart-7fe9c563').getContext('2d');\n  var chart = new Chart(ctx, {\n    type: 'line',\n    data: {\n      datasets: [{\n        label: '標高 (m)',\n        data: [],\n        borderColor: '#007bff',\n        backgroundColor: 'rgba(0, 123, 255, 0.1)',\n        fill: true,\n        borderWidth: 1.5,\n        pointRadius: 0,\n        pointHoverRadius: 6,\n        tension: 0.1\n      }]\n    },\n    options: {\n      responsive: true,\n      maintainAspectRatio: false,\n      interaction: { mode: 'index', intersect: false },\n      plugins: {\n        legend: { display: false },\n        \n        tooltip: {\n          callbacks: {\n            title: function(items) {\n              var index = items[0].dataIndex;\n              var timeStr = timeLabels[index] || '';\n              var distStr = items[0].raw.x.toFixed(2) + ' km';\n              return timeStr ? '時刻: ' + timeStr + '（距離: ' + distStr + '）' : '距離: ' + distStr;\n            },\n            label: function(item) {\n              return '標高: ' + item.raw.y + ' m';\n            }\n          }\n        }\n      },\n      scales: {\n        x: {\n          type: 'linear', \n          display: true,\n          title: { display: true, text: '距離 (km)', font: { size: 10 } },\n          ticks: {\n            font: { size: 10 }\n          },\n          grid: { color: 'rgba(0, 0, 0, 0.05)' }\n        },\n        y: {\n          display: true,\n          title: { display: true, text: '標高 (m)', font: { size: 10 } },\n          ticks: { font: { size: 10 } },\n          grid: { color: 'rgba(0, 0, 0, 0.05)' }\n        }\n      },\n      \n      onHover: function(event, activeElements) {\n        if (activeElements \u0026\u0026 activeElements.length \u003e 0) {\n          var index = activeElements[0].index;\n          updateHoverMarker(index);\n        }\n      }\n    }\n  });\n\n  \n  function updateHoverMarker(index) {\n    var pt = trackPoints[index];\n    if (pt) {\n      if (!hoverMarker) {\n        hoverMarker = L.circleMarker([pt.lat, pt.lng], {\n          radius: 8,\n          fillColor: '#00ffff',\n          color: '#ffffff',\n          weight: 3,\n          opacity: 1,\n          fillOpacity: 1\n        }).addTo(map);\n      } else {\n        hoverMarker.setLatLng([pt.lat, pt.lng]);\n      }\n    }\n  }\n\n  \n  function extractTrackData(layer) {\n    var pts = [];\n    var polylines = [];\n\n    if (typeof layer.getLatLngs === 'function') {\n      var latlngs = layer.getLatLngs();\n      var flat = Array.isArray(latlngs[0]) ? latlngs.flat(Infinity) : latlngs;\n      flat.forEach(function(p) {\n        if (p \u0026\u0026 typeof p.lat === 'number') {\n          pts.push({ lat: p.lat, lng: p.lng });\n        }\n      });\n      if (layer instanceof L.Polyline) {\n        polylines.push(layer);\n      }\n    } else if (typeof layer.eachLayer === 'function') {\n      layer.eachLayer(function(child) {\n        var res = extractTrackData(child);\n        pts = pts.concat(res.pts);\n        polylines = polylines.concat(res.polylines);\n      });\n    }\n    return { pts: pts, polylines: polylines };\n  }\n\n  \n  fetch(gpxUrl)\n    .then(function(response) { return response.text(); })\n    .then(function(xmlText) {\n      var parser = new DOMParser();\n      var xmlDoc = parser.parseFromString(xmlText, \"text/xml\");\n      var trkpts = xmlDoc.getElementsByTagName(\"trkpt\");\n\n      for (var i = 0; i \u003c trkpts.length; i++) {\n        var timeNode = trkpts[i].getElementsByTagName(\"time\")[0];\n        if (timeNode) {\n          var dateObj = new Date(timeNode.textContent);\n          var timeStr = dateObj.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', hour12: false });\n          timeLabels.push(timeStr);\n        } else {\n          timeLabels.push('');\n        }\n      }\n    })\n    .catch(function(err) {\n      console.error(\"GPX Time Parsing Error:\", err);\n    });\n\n  \n  new L.GPX(gpxUrl, {\n    async: true,\n    polyline_options: { color: '#ff3300', weight: 5, opacity: 0.8 },\n    marker_options: { startIconUrl: null, endIconUrl: null, wptIconUrls: null }\n  }).on('loaded', function(e) {\n    var gpx = e.target;\n    map.fitBounds(gpx.getBounds());\n\n    \n    var totalDistMeters = gpx.get_distance();\n    var distKmNum = totalDistMeters / 1000;\n    var distKmStr = distKmNum.toFixed(2);\n    var maxEle = Math.round(gpx.get_elevation_max());\n    var minEle = Math.round(gpx.get_elevation_min());\n    var gainEle = Math.round(gpx.get_elevation_gain());\n    var lossEle = Math.round(gpx.get_elevation_loss());\n\n    document.getElementById('sum-dist-7fe9c563').innerText = distKmStr;\n    document.getElementById('sum-up-7fe9c563').innerText = gainEle;\n    document.getElementById('sum-down-7fe9c563').innerText = lossEle;\n    document.getElementById('sum-max-7fe9c563').innerText = maxEle;\n    document.getElementById('sum-min-7fe9c563').innerText = minEle;\n\n    \n    var eleData = gpx.get_elevation_data();\n    var chartDataPoints = [];\n\n    var extracted = extractTrackData(gpx);\n    trackPoints = extracted.pts;\n\n    \n    if (trackPoints.length \u003e 0) {\n      var startPt = trackPoints[0];\n      var endPt = trackPoints[trackPoints.length - 1];\n\n      L.circleMarker([startPt.lat, startPt.lng], {\n        radius: 9,\n        fillColor: '#28a745',\n        color: '#ffffff',\n        weight: 2,\n        opacity: 1,\n        fillOpacity: 0.9\n      }).addTo(map).bindTooltip('スタート', { permanent: false, direction: 'top' });\n\n      L.circleMarker([endPt.lat, endPt.lng], {\n        radius: 9,\n        fillColor: '#dc3545',\n        color: '#ffffff',\n        weight: 2,\n        opacity: 1,\n        fillOpacity: 0.9\n      }).addTo(map).bindTooltip('ゴール', { permanent: false, direction: 'top' });\n    }\n\n    eleData.forEach(function(item) {\n      var dist = typeof item[0] === 'number' ? item[0] : parseFloat(item[0]);\n      var ele = Math.round(item[1]);\n      chartDataPoints.push({\n        x: parseFloat(dist.toFixed(2)),\n        y: ele\n      });\n    });\n\n    \n    var dynamicStepSize = 1.0;\n    if (distKmNum \u003c= 5) {\n      dynamicStepSize = 0.5;   \n    } else if (distKmNum \u003c= 20) {\n      dynamicStepSize = 1.0;   \n    } else if (distKmNum \u003c= 40) {\n      dynamicStepSize = 5.0;   \n    } else {\n      dynamicStepSize = 10.0;  \n    }\n\n    \n    chart.options.scales.x.max = distKmNum;\n\n    \n    var allowedTicks = [];\n    for (var v = 0; v \u003c distKmNum; v += dynamicStepSize) {\n      allowedTicks.push(parseFloat(v.toFixed(1)));\n    }\n    \n\n    \n    chart.options.scales.x.ticks.callback = function(value) {\n      for (var i = 0; i \u003c allowedTicks.length; i++) {\n        if (Math.abs(value - allowedTicks[i]) \u003c 0.01) {\n          return value + ' km';\n        }\n      }\n      \n      return '';\n    };\n\n    \n    chart.options.scales.x.afterBuildTicks = function(axis) {\n      axis.ticks = allowedTicks.map(function(val) {\n        return { value: val };\n      });\n    };\n\n    chart.data.datasets[0].data = chartDataPoints;\n    chart.update();\n\n    \n    extracted.polylines.forEach(function(polyline) {\n      polyline.on('mousemove', function(ev) {\n        if (!trackPoints.length) return;\n\n        var mouseLatLng = ev.latlng;\n        var closestIndex = 0;\n        var minDist = Infinity;\n\n        for (var i = 0; i \u003c trackPoints.length; i++) {\n          var d = mouseLatLng.distanceTo(L.latLng(trackPoints[i].lat, trackPoints[i].lng));\n          if (d \u003c minDist) {\n            minDist = d;\n            closestIndex = i;\n          }\n        }\n\n        updateHoverMarker(closestIndex);\n\n        chart.setActiveElements([{ datasetIndex: 0, index: closestIndex }]);\n        chart.tooltip.setActiveElements([{ datasetIndex: 0, index: closestIndex }], { x: 0, y: 0 });\n        chart.update();\n      });\n    });\n\n  }).addTo(map);\n});\n\u003c/script\u003e\n\u003chr\u003e\n\u003ch3 id=\"山行記録\"\u003e山行記録\u003c/h3\u003e\n\u003ch4 id=\"プロローグ\"\u003eプロローグ\u003c/h4\u003e\n\u003cp\u003e道を見つけたのは偶然だ。\u003cbr\u003e\n半日だけ歩くと決めた日曜早朝の青梅線車内で「どこを歩こうか」。ゴンザス尾根から石尾根の範囲を思い浮かべて候補を探す。そういえば、駅近のゴンザス尾根の下の方は、足を向ける機会が少ないな。大氷川の南端から除ヶ野～安寺沢へ向かう日原古道をたどり、分かれる踏み跡があればたどってみようか。\u003cbr\u003e\n散歩気分で奥多摩駅をスタートする。新氷川トンネルの手前で旧国道に入りもえぎの湯方向へ向かい、しかし大氷川の南に上がる階段を通り過ぎてしまう。直感が働いたといえば誇張で、「ゴンザス尾根の南端はもっと先だから」、もう少し探索してみようと思っただけだ。\u003cbr\u003e\n氷川隧道をくぐりもえぎの湯の前を通り過ぎ、馬頭さまに通りかかる。拝んでから解説板を読んでみる。\u003c/p\u003e","title":"旧青梅街道"},{"content":"平石尾根や妙指尾根を登り降りしていると、「安寺沢～平石橋」の道標を見かける。そういえば、大休場尾根経由で本仁田山に上がるさいに横を通る一軒家が、安寺沢の全部ではないだろう。林道を終点までたどり、安寺沢集落の背後から歴史を感じる仕事みちを歩いた。\n駅前のみすず堂の女将は「アテラザワ」と発音する。入力すれば「左沢」と出てくる。もう解きほぐせないだろう曰く因縁がありそうだ。\n項目 内容 記録日 2026年9月22日（火） 天候 パーティ モンターニャ単独 アクセス JR青梅線で奥多摩駅 行程 コースタイム 記入中 コースマップ 総距離:- km 累積標高上り:- m 累積標高下り:- m 最高標高:- m 最低標高:- m 山行記録 記入中\n関連する筆者の山行記録 公開日 写真（右クリック→新しいタブ...で拡大します）＋詳細記録 ","permalink":"https://montagna-katokeyci.github.io/oohc/posts/2026-09-22/","summary":"\u003cp\u003e平石尾根や妙指尾根を登り降りしていると、「安寺沢～平石橋」の道標を見かける。そういえば、大休場尾根経由で本仁田山に上がるさいに横を通る一軒家が、安寺沢の全部ではないだろう。林道を終点までたどり、安寺沢集落の背後から歴史を感じる仕事みちを歩いた。\u003cbr\u003e\n駅前のみすず堂の女将は「アテラザワ」と発音する。入力すれば「左沢」と出てくる。もう解きほぐせないだろう曰く因縁がありそうだ。\u003c/p\u003e\n\u003chr\u003e\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth style=\"text-align: left\"\u003e項目\u003c/th\u003e\n\t\t\t\t\t\u003cth style=\"text-align: left\"\u003e内容\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e記録日\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e2026年9月22日（火）\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e天候\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003eパーティ\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003eモンターニャ単独\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003eアクセス\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003eJR青梅線で奥多摩駅\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e行程\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003chr\u003e\n\u003ch3 id=\"コースタイム\"\u003eコースタイム\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e記入中\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003ch3 id=\"コースマップ\"\u003eコースマップ\u003c/h3\u003e\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003clink rel=\"stylesheet\" href=\"https://unpkg.com/leaflet@1.9.4/dist/leaflet.css\" /\u003e\n\u003cstyle\u003e\n  .gpx-container {\n    width: 100%;\n    margin: 1.5rem 0;\n    border: 1px solid #ccc;\n    border-radius: 8px;\n    overflow: hidden;\n    background: #fff;\n    box-shadow: 0 2px 6px rgba(0,0,0,0.08);\n    font-family: sans-serif;\n  }\n  .gpx-map { height: 380px; width: 100%; }\n  \n   \n  .gpx-summary {\n    display: flex;\n    flex-wrap: nowrap;\n    justify-content: space-between;\n    align-items: center;\n    background: #f8f9fa;\n    padding: 8px 10px;\n    border-top: 1px solid #e0e0e0;\n    border-bottom: 1px solid #e0e0e0;\n    font-size: 0.8rem;\n    color: #333;\n    overflow-x: auto;\n    white-space: nowrap;\n  }\n  .gpx-summary-item {\n    margin: 0 4px;\n  }\n  .gpx-summary-item strong {\n    color: #007bff;\n    font-size: 0.95rem;\n    margin-left: 2px;\n  }\n\n  .gpx-chart-wrapper {\n    height: 180px;\n    width: 100%;\n    padding: 10px;\n    background: #fafafa;\n    box-sizing: border-box;\n  }\n\n   \n  .start-marker-icon, .goal-marker-icon {\n    background: none;\n    border: none;\n    font-weight: bold;\n    font-size: 11px;\n    color: #ffffff;\n    text-align: center;\n    line-height: 18px;\n  }\n\u003c/style\u003e\n\n\n\u003cdiv class=\"gpx-container\"\u003e\n  \u003cdiv id=\"map-dc418570\" class=\"gpx-map\"\u003e\u003c/div\u003e\n  \u003cdiv id=\"summary-dc418570\" class=\"gpx-summary\"\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e総距離:\u003cstrong id=\"sum-dist-dc418570\"\u003e-\u003c/strong\u003e km\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e累積標高上り:\u003cstrong id=\"sum-up-dc418570\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e累積標高下り:\u003cstrong id=\"sum-down-dc418570\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e最高標高:\u003cstrong id=\"sum-max-dc418570\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e最低標高:\u003cstrong id=\"sum-min-dc418570\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n  \u003c/div\u003e\n  \u003cdiv class=\"gpx-chart-wrapper\"\u003e\n    \u003ccanvas id=\"chart-dc418570\"\u003e\u003c/canvas\u003e\n  \u003c/div\u003e\n\u003c/div\u003e\n\n\n\u003cscript src=\"https://unpkg.com/leaflet@1.9.4/dist/leaflet.js\"\u003e\u003c/script\u003e\n\u003cscript src=\"https://cdnjs.cloudflare.com/ajax/libs/leaflet-gpx/1.7.0/gpx.min.js\"\u003e\u003c/script\u003e\n\u003cscript src=\"https://cdn.jsdelivr.net/npm/chart.js\"\u003e\u003c/script\u003e\n\n\u003cscript\u003e\nwindow.addEventListener('load', function() {\n  var gpxUrl = '\\/oohc\\/posts\\/2026-09-22\\/20260922_30260922.gpx';\n\n  \n  var map = L.map('map-dc418570').setView([0, 0], 10);\n  L.tileLayer('https://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png', {\n    attribution: '\u003ca href=\"https://maps.gsi.go.jp/development/ichiran.html\" target=\"_blank\"\u003e国土地理院\u003c/a\u003e',\n    maxZoom: 18\n  }).addTo(map);\n\n  \n  L.control.scale({\n    imperial: false,\n    position: 'bottomleft'\n  }).addTo(map);\n\n  var hoverMarker = null;\n  var trackPoints = [];\n  var timeLabels = []; \n\n  \n  var ctx = document.getElementById('chart-dc418570').getContext('2d');\n  var chart = new Chart(ctx, {\n    type: 'line',\n    data: {\n      datasets: [{\n        label: '標高 (m)',\n        data: [],\n        borderColor: '#007bff',\n        backgroundColor: 'rgba(0, 123, 255, 0.1)',\n        fill: true,\n        borderWidth: 1.5,\n        pointRadius: 0,\n        pointHoverRadius: 6,\n        tension: 0.1\n      }]\n    },\n    options: {\n      responsive: true,\n      maintainAspectRatio: false,\n      interaction: { mode: 'index', intersect: false },\n      plugins: {\n        legend: { display: false },\n        \n        tooltip: {\n          callbacks: {\n            title: function(items) {\n              var index = items[0].dataIndex;\n              var timeStr = timeLabels[index] || '';\n              var distStr = items[0].raw.x.toFixed(2) + ' km';\n              return timeStr ? '時刻: ' + timeStr + '（距離: ' + distStr + '）' : '距離: ' + distStr;\n            },\n            label: function(item) {\n              return '標高: ' + item.raw.y + ' m';\n            }\n          }\n        }\n      },\n      scales: {\n        x: {\n          type: 'linear', \n          display: true,\n          title: { display: true, text: '距離 (km)', font: { size: 10 } },\n          ticks: {\n            font: { size: 10 }\n          },\n          grid: { color: 'rgba(0, 0, 0, 0.05)' }\n        },\n        y: {\n          display: true,\n          title: { display: true, text: '標高 (m)', font: { size: 10 } },\n          ticks: { font: { size: 10 } },\n          grid: { color: 'rgba(0, 0, 0, 0.05)' }\n        }\n      },\n      \n      onHover: function(event, activeElements) {\n        if (activeElements \u0026\u0026 activeElements.length \u003e 0) {\n          var index = activeElements[0].index;\n          updateHoverMarker(index);\n        }\n      }\n    }\n  });\n\n  \n  function updateHoverMarker(index) {\n    var pt = trackPoints[index];\n    if (pt) {\n      if (!hoverMarker) {\n        hoverMarker = L.circleMarker([pt.lat, pt.lng], {\n          radius: 8,\n          fillColor: '#00ffff',\n          color: '#ffffff',\n          weight: 3,\n          opacity: 1,\n          fillOpacity: 1\n        }).addTo(map);\n      } else {\n        hoverMarker.setLatLng([pt.lat, pt.lng]);\n      }\n    }\n  }\n\n  \n  function extractTrackData(layer) {\n    var pts = [];\n    var polylines = [];\n\n    if (typeof layer.getLatLngs === 'function') {\n      var latlngs = layer.getLatLngs();\n      var flat = Array.isArray(latlngs[0]) ? latlngs.flat(Infinity) : latlngs;\n      flat.forEach(function(p) {\n        if (p \u0026\u0026 typeof p.lat === 'number') {\n          pts.push({ lat: p.lat, lng: p.lng });\n        }\n      });\n      if (layer instanceof L.Polyline) {\n        polylines.push(layer);\n      }\n    } else if (typeof layer.eachLayer === 'function') {\n      layer.eachLayer(function(child) {\n        var res = extractTrackData(child);\n        pts = pts.concat(res.pts);\n        polylines = polylines.concat(res.polylines);\n      });\n    }\n    return { pts: pts, polylines: polylines };\n  }\n\n  \n  fetch(gpxUrl)\n    .then(function(response) { return response.text(); })\n    .then(function(xmlText) {\n      var parser = new DOMParser();\n      var xmlDoc = parser.parseFromString(xmlText, \"text/xml\");\n      var trkpts = xmlDoc.getElementsByTagName(\"trkpt\");\n\n      for (var i = 0; i \u003c trkpts.length; i++) {\n        var timeNode = trkpts[i].getElementsByTagName(\"time\")[0];\n        if (timeNode) {\n          var dateObj = new Date(timeNode.textContent);\n          var timeStr = dateObj.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', hour12: false });\n          timeLabels.push(timeStr);\n        } else {\n          timeLabels.push('');\n        }\n      }\n    })\n    .catch(function(err) {\n      console.error(\"GPX Time Parsing Error:\", err);\n    });\n\n  \n  new L.GPX(gpxUrl, {\n    async: true,\n    polyline_options: { color: '#ff3300', weight: 5, opacity: 0.8 },\n    marker_options: { startIconUrl: null, endIconUrl: null, wptIconUrls: null }\n  }).on('loaded', function(e) {\n    var gpx = e.target;\n    map.fitBounds(gpx.getBounds());\n\n    \n    var totalDistMeters = gpx.get_distance();\n    var distKmNum = totalDistMeters / 1000;\n    var distKmStr = distKmNum.toFixed(2);\n    var maxEle = Math.round(gpx.get_elevation_max());\n    var minEle = Math.round(gpx.get_elevation_min());\n    var gainEle = Math.round(gpx.get_elevation_gain());\n    var lossEle = Math.round(gpx.get_elevation_loss());\n\n    document.getElementById('sum-dist-dc418570').innerText = distKmStr;\n    document.getElementById('sum-up-dc418570').innerText = gainEle;\n    document.getElementById('sum-down-dc418570').innerText = lossEle;\n    document.getElementById('sum-max-dc418570').innerText = maxEle;\n    document.getElementById('sum-min-dc418570').innerText = minEle;\n\n    \n    var eleData = gpx.get_elevation_data();\n    var chartDataPoints = [];\n\n    var extracted = extractTrackData(gpx);\n    trackPoints = extracted.pts;\n\n    \n    if (trackPoints.length \u003e 0) {\n      var startPt = trackPoints[0];\n      var endPt = trackPoints[trackPoints.length - 1];\n\n      L.circleMarker([startPt.lat, startPt.lng], {\n        radius: 9,\n        fillColor: '#28a745',\n        color: '#ffffff',\n        weight: 2,\n        opacity: 1,\n        fillOpacity: 0.9\n      }).addTo(map).bindTooltip('スタート', { permanent: false, direction: 'top' });\n\n      L.circleMarker([endPt.lat, endPt.lng], {\n        radius: 9,\n        fillColor: '#dc3545',\n        color: '#ffffff',\n        weight: 2,\n        opacity: 1,\n        fillOpacity: 0.9\n      }).addTo(map).bindTooltip('ゴール', { permanent: false, direction: 'top' });\n    }\n\n    eleData.forEach(function(item) {\n      var dist = typeof item[0] === 'number' ? item[0] : parseFloat(item[0]);\n      var ele = Math.round(item[1]);\n      chartDataPoints.push({\n        x: parseFloat(dist.toFixed(2)),\n        y: ele\n      });\n    });\n\n    \n    var dynamicStepSize = 1.0;\n    if (distKmNum \u003c= 5) {\n      dynamicStepSize = 0.5;   \n    } else if (distKmNum \u003c= 20) {\n      dynamicStepSize = 1.0;   \n    } else if (distKmNum \u003c= 40) {\n      dynamicStepSize = 5.0;   \n    } else {\n      dynamicStepSize = 10.0;  \n    }\n\n    \n    chart.options.scales.x.max = distKmNum;\n\n    \n    var allowedTicks = [];\n    for (var v = 0; v \u003c distKmNum; v += dynamicStepSize) {\n      allowedTicks.push(parseFloat(v.toFixed(1)));\n    }\n    \n\n    \n    chart.options.scales.x.ticks.callback = function(value) {\n      for (var i = 0; i \u003c allowedTicks.length; i++) {\n        if (Math.abs(value - allowedTicks[i]) \u003c 0.01) {\n          return value + ' km';\n        }\n      }\n      \n      return '';\n    };\n\n    \n    chart.options.scales.x.afterBuildTicks = function(axis) {\n      axis.ticks = allowedTicks.map(function(val) {\n        return { value: val };\n      });\n    };\n\n    chart.data.datasets[0].data = chartDataPoints;\n    chart.update();\n\n    \n    extracted.polylines.forEach(function(polyline) {\n      polyline.on('mousemove', function(ev) {\n        if (!trackPoints.length) return;\n\n        var mouseLatLng = ev.latlng;\n        var closestIndex = 0;\n        var minDist = Infinity;\n\n        for (var i = 0; i \u003c trackPoints.length; i++) {\n          var d = mouseLatLng.distanceTo(L.latLng(trackPoints[i].lat, trackPoints[i].lng));\n          if (d \u003c minDist) {\n            minDist = d;\n            closestIndex = i;\n          }\n        }\n\n        updateHoverMarker(closestIndex);\n\n        chart.setActiveElements([{ datasetIndex: 0, index: closestIndex }]);\n        chart.tooltip.setActiveElements([{ datasetIndex: 0, index: closestIndex }], { x: 0, y: 0 });\n        chart.update();\n      });\n    });\n\n  }).addTo(map);\n});\n\u003c/script\u003e\n\u003chr\u003e\n\u003ch3 id=\"山行記録\"\u003e山行記録\u003c/h3\u003e\n\u003cp\u003e記入中\u003c/p\u003e","title":"安寺沢から平石橋"},{"content":"日原林道の伊勢橋を渡った地点で北岸に「せっかい」記号が入る。断崖の上部に導水管の吐出部があって滝のように見えるが、水量が一定せずぎこちない流れを作っている。これが三ツ又窪だ。\n山行のテーマがあり、「目的地への経路として」タワ尾根から三ツ又窪を下ったが、おそろしく手強くて目的地にたどり着けなかった。\n項目 内容 記録日 2026年9月19日（土） 天候 曇天のち13時過ぎから雨が降ったり止んだり パーティ モンターニャ単独 アクセス 西東京バスで東日原バス停 行程 コースタイム 記入中 コースマップ 総距離:- km 累積標高上り:- m 累積標高下り:- m 最高標高:- m 最低標高:- m 山行記録 記入中\n関連する筆者の山行記録 公開日 写真（右クリック→新しいタブ...で拡大します）＋詳細記録 ","permalink":"https://montagna-katokeyci.github.io/oohc/posts/2026-09-19/","summary":"\u003cp\u003e日原林道の伊勢橋を渡った地点で北岸に「せっかい」記号が入る。断崖の上部に導水管の吐出部があって滝のように見えるが、水量が一定せずぎこちない流れを作っている。これが三ツ又窪だ。\u003cbr\u003e\n山行のテーマがあり、「目的地への経路として」タワ尾根から三ツ又窪を下ったが、おそろしく手強くて目的地にたどり着けなかった。\u003c/p\u003e\n\u003chr\u003e\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth style=\"text-align: left\"\u003e項目\u003c/th\u003e\n\t\t\t\t\t\u003cth style=\"text-align: left\"\u003e内容\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e記録日\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e2026年9月19日（土）\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e天候\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e曇天のち13時過ぎから雨が降ったり止んだり\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003eパーティ\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003eモンターニャ単独\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003eアクセス\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e西東京バスで東日原バス停\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e行程\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003chr\u003e\n\u003ch3 id=\"コースタイム\"\u003eコースタイム\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e記入中\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003ch3 id=\"コースマップ\"\u003eコースマップ\u003c/h3\u003e\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003clink rel=\"stylesheet\" href=\"https://unpkg.com/leaflet@1.9.4/dist/leaflet.css\" /\u003e\n\u003cstyle\u003e\n  .gpx-container {\n    width: 100%;\n    margin: 1.5rem 0;\n    border: 1px solid #ccc;\n    border-radius: 8px;\n    overflow: hidden;\n    background: #fff;\n    box-shadow: 0 2px 6px rgba(0,0,0,0.08);\n    font-family: sans-serif;\n  }\n  .gpx-map { height: 380px; width: 100%; }\n  \n   \n  .gpx-summary {\n    display: flex;\n    flex-wrap: nowrap;\n    justify-content: space-between;\n    align-items: center;\n    background: #f8f9fa;\n    padding: 8px 10px;\n    border-top: 1px solid #e0e0e0;\n    border-bottom: 1px solid #e0e0e0;\n    font-size: 0.8rem;\n    color: #333;\n    overflow-x: auto;\n    white-space: nowrap;\n  }\n  .gpx-summary-item {\n    margin: 0 4px;\n  }\n  .gpx-summary-item strong {\n    color: #007bff;\n    font-size: 0.95rem;\n    margin-left: 2px;\n  }\n\n  .gpx-chart-wrapper {\n    height: 180px;\n    width: 100%;\n    padding: 10px;\n    background: #fafafa;\n    box-sizing: border-box;\n  }\n\n   \n  .start-marker-icon, .goal-marker-icon {\n    background: none;\n    border: none;\n    font-weight: bold;\n    font-size: 11px;\n    color: #ffffff;\n    text-align: center;\n    line-height: 18px;\n  }\n\u003c/style\u003e\n\n\n\u003cdiv class=\"gpx-container\"\u003e\n  \u003cdiv id=\"map-653ae321\" class=\"gpx-map\"\u003e\u003c/div\u003e\n  \u003cdiv id=\"summary-653ae321\" class=\"gpx-summary\"\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e総距離:\u003cstrong id=\"sum-dist-653ae321\"\u003e-\u003c/strong\u003e km\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e累積標高上り:\u003cstrong id=\"sum-up-653ae321\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e累積標高下り:\u003cstrong id=\"sum-down-653ae321\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e最高標高:\u003cstrong id=\"sum-max-653ae321\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e最低標高:\u003cstrong id=\"sum-min-653ae321\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n  \u003c/div\u003e\n  \u003cdiv class=\"gpx-chart-wrapper\"\u003e\n    \u003ccanvas id=\"chart-653ae321\"\u003e\u003c/canvas\u003e\n  \u003c/div\u003e\n\u003c/div\u003e\n\n\n\u003cscript src=\"https://unpkg.com/leaflet@1.9.4/dist/leaflet.js\"\u003e\u003c/script\u003e\n\u003cscript src=\"https://cdnjs.cloudflare.com/ajax/libs/leaflet-gpx/1.7.0/gpx.min.js\"\u003e\u003c/script\u003e\n\u003cscript src=\"https://cdn.jsdelivr.net/npm/chart.js\"\u003e\u003c/script\u003e\n\n\u003cscript\u003e\nwindow.addEventListener('load', function() {\n  var gpxUrl = '\\/oohc\\/posts\\/2026-09-19\\/20260919_20260919.gpx';\n\n  \n  var map = L.map('map-653ae321').setView([0, 0], 10);\n  L.tileLayer('https://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png', {\n    attribution: '\u003ca href=\"https://maps.gsi.go.jp/development/ichiran.html\" target=\"_blank\"\u003e国土地理院\u003c/a\u003e',\n    maxZoom: 18\n  }).addTo(map);\n\n  \n  L.control.scale({\n    imperial: false,\n    position: 'bottomleft'\n  }).addTo(map);\n\n  var hoverMarker = null;\n  var trackPoints = [];\n  var timeLabels = []; \n\n  \n  var ctx = document.getElementById('chart-653ae321').getContext('2d');\n  var chart = new Chart(ctx, {\n    type: 'line',\n    data: {\n      datasets: [{\n        label: '標高 (m)',\n        data: [],\n        borderColor: '#007bff',\n        backgroundColor: 'rgba(0, 123, 255, 0.1)',\n        fill: true,\n        borderWidth: 1.5,\n        pointRadius: 0,\n        pointHoverRadius: 6,\n        tension: 0.1\n      }]\n    },\n    options: {\n      responsive: true,\n      maintainAspectRatio: false,\n      interaction: { mode: 'index', intersect: false },\n      plugins: {\n        legend: { display: false },\n        \n        tooltip: {\n          callbacks: {\n            title: function(items) {\n              var index = items[0].dataIndex;\n              var timeStr = timeLabels[index] || '';\n              var distStr = items[0].raw.x.toFixed(2) + ' km';\n              return timeStr ? '時刻: ' + timeStr + '（距離: ' + distStr + '）' : '距離: ' + distStr;\n            },\n            label: function(item) {\n              return '標高: ' + item.raw.y + ' m';\n            }\n          }\n        }\n      },\n      scales: {\n        x: {\n          type: 'linear', \n          display: true,\n          title: { display: true, text: '距離 (km)', font: { size: 10 } },\n          ticks: {\n            font: { size: 10 }\n          },\n          grid: { color: 'rgba(0, 0, 0, 0.05)' }\n        },\n        y: {\n          display: true,\n          title: { display: true, text: '標高 (m)', font: { size: 10 } },\n          ticks: { font: { size: 10 } },\n          grid: { color: 'rgba(0, 0, 0, 0.05)' }\n        }\n      },\n      \n      onHover: function(event, activeElements) {\n        if (activeElements \u0026\u0026 activeElements.length \u003e 0) {\n          var index = activeElements[0].index;\n          updateHoverMarker(index);\n        }\n      }\n    }\n  });\n\n  \n  function updateHoverMarker(index) {\n    var pt = trackPoints[index];\n    if (pt) {\n      if (!hoverMarker) {\n        hoverMarker = L.circleMarker([pt.lat, pt.lng], {\n          radius: 8,\n          fillColor: '#00ffff',\n          color: '#ffffff',\n          weight: 3,\n          opacity: 1,\n          fillOpacity: 1\n        }).addTo(map);\n      } else {\n        hoverMarker.setLatLng([pt.lat, pt.lng]);\n      }\n    }\n  }\n\n  \n  function extractTrackData(layer) {\n    var pts = [];\n    var polylines = [];\n\n    if (typeof layer.getLatLngs === 'function') {\n      var latlngs = layer.getLatLngs();\n      var flat = Array.isArray(latlngs[0]) ? latlngs.flat(Infinity) : latlngs;\n      flat.forEach(function(p) {\n        if (p \u0026\u0026 typeof p.lat === 'number') {\n          pts.push({ lat: p.lat, lng: p.lng });\n        }\n      });\n      if (layer instanceof L.Polyline) {\n        polylines.push(layer);\n      }\n    } else if (typeof layer.eachLayer === 'function') {\n      layer.eachLayer(function(child) {\n        var res = extractTrackData(child);\n        pts = pts.concat(res.pts);\n        polylines = polylines.concat(res.polylines);\n      });\n    }\n    return { pts: pts, polylines: polylines };\n  }\n\n  \n  fetch(gpxUrl)\n    .then(function(response) { return response.text(); })\n    .then(function(xmlText) {\n      var parser = new DOMParser();\n      var xmlDoc = parser.parseFromString(xmlText, \"text/xml\");\n      var trkpts = xmlDoc.getElementsByTagName(\"trkpt\");\n\n      for (var i = 0; i \u003c trkpts.length; i++) {\n        var timeNode = trkpts[i].getElementsByTagName(\"time\")[0];\n        if (timeNode) {\n          var dateObj = new Date(timeNode.textContent);\n          var timeStr = dateObj.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', hour12: false });\n          timeLabels.push(timeStr);\n        } else {\n          timeLabels.push('');\n        }\n      }\n    })\n    .catch(function(err) {\n      console.error(\"GPX Time Parsing Error:\", err);\n    });\n\n  \n  new L.GPX(gpxUrl, {\n    async: true,\n    polyline_options: { color: '#ff3300', weight: 5, opacity: 0.8 },\n    marker_options: { startIconUrl: null, endIconUrl: null, wptIconUrls: null }\n  }).on('loaded', function(e) {\n    var gpx = e.target;\n    map.fitBounds(gpx.getBounds());\n\n    \n    var totalDistMeters = gpx.get_distance();\n    var distKmNum = totalDistMeters / 1000;\n    var distKmStr = distKmNum.toFixed(2);\n    var maxEle = Math.round(gpx.get_elevation_max());\n    var minEle = Math.round(gpx.get_elevation_min());\n    var gainEle = Math.round(gpx.get_elevation_gain());\n    var lossEle = Math.round(gpx.get_elevation_loss());\n\n    document.getElementById('sum-dist-653ae321').innerText = distKmStr;\n    document.getElementById('sum-up-653ae321').innerText = gainEle;\n    document.getElementById('sum-down-653ae321').innerText = lossEle;\n    document.getElementById('sum-max-653ae321').innerText = maxEle;\n    document.getElementById('sum-min-653ae321').innerText = minEle;\n\n    \n    var eleData = gpx.get_elevation_data();\n    var chartDataPoints = [];\n\n    var extracted = extractTrackData(gpx);\n    trackPoints = extracted.pts;\n\n    \n    if (trackPoints.length \u003e 0) {\n      var startPt = trackPoints[0];\n      var endPt = trackPoints[trackPoints.length - 1];\n\n      L.circleMarker([startPt.lat, startPt.lng], {\n        radius: 9,\n        fillColor: '#28a745',\n        color: '#ffffff',\n        weight: 2,\n        opacity: 1,\n        fillOpacity: 0.9\n      }).addTo(map).bindTooltip('スタート', { permanent: false, direction: 'top' });\n\n      L.circleMarker([endPt.lat, endPt.lng], {\n        radius: 9,\n        fillColor: '#dc3545',\n        color: '#ffffff',\n        weight: 2,\n        opacity: 1,\n        fillOpacity: 0.9\n      }).addTo(map).bindTooltip('ゴール', { permanent: false, direction: 'top' });\n    }\n\n    eleData.forEach(function(item) {\n      var dist = typeof item[0] === 'number' ? item[0] : parseFloat(item[0]);\n      var ele = Math.round(item[1]);\n      chartDataPoints.push({\n        x: parseFloat(dist.toFixed(2)),\n        y: ele\n      });\n    });\n\n    \n    var dynamicStepSize = 1.0;\n    if (distKmNum \u003c= 5) {\n      dynamicStepSize = 0.5;   \n    } else if (distKmNum \u003c= 20) {\n      dynamicStepSize = 1.0;   \n    } else if (distKmNum \u003c= 40) {\n      dynamicStepSize = 5.0;   \n    } else {\n      dynamicStepSize = 10.0;  \n    }\n\n    \n    chart.options.scales.x.max = distKmNum;\n\n    \n    var allowedTicks = [];\n    for (var v = 0; v \u003c distKmNum; v += dynamicStepSize) {\n      allowedTicks.push(parseFloat(v.toFixed(1)));\n    }\n    \n\n    \n    chart.options.scales.x.ticks.callback = function(value) {\n      for (var i = 0; i \u003c allowedTicks.length; i++) {\n        if (Math.abs(value - allowedTicks[i]) \u003c 0.01) {\n          return value + ' km';\n        }\n      }\n      \n      return '';\n    };\n\n    \n    chart.options.scales.x.afterBuildTicks = function(axis) {\n      axis.ticks = allowedTicks.map(function(val) {\n        return { value: val };\n      });\n    };\n\n    chart.data.datasets[0].data = chartDataPoints;\n    chart.update();\n\n    \n    extracted.polylines.forEach(function(polyline) {\n      polyline.on('mousemove', function(ev) {\n        if (!trackPoints.length) return;\n\n        var mouseLatLng = ev.latlng;\n        var closestIndex = 0;\n        var minDist = Infinity;\n\n        for (var i = 0; i \u003c trackPoints.length; i++) {\n          var d = mouseLatLng.distanceTo(L.latLng(trackPoints[i].lat, trackPoints[i].lng));\n          if (d \u003c minDist) {\n            minDist = d;\n            closestIndex = i;\n          }\n        }\n\n        updateHoverMarker(closestIndex);\n\n        chart.setActiveElements([{ datasetIndex: 0, index: closestIndex }]);\n        chart.tooltip.setActiveElements([{ datasetIndex: 0, index: closestIndex }], { x: 0, y: 0 });\n        chart.update();\n      });\n    });\n\n  }).addTo(map);\n});\n\u003c/script\u003e\n\u003chr\u003e\n\u003ch3 id=\"山行記録\"\u003e山行記録\u003c/h3\u003e\n\u003cp\u003e記入中\u003c/p\u003e","title":"三ツ又窪"},{"content":"カラ沢を遡行し、石尾根から不老集落に向かい降った。ふたつのテーマに関連はない。「ハイカーの沢歩き」なので沢屋さんの参考にはならない。\nカラ沢尾根に取付くさいに横切る地点と、co980mで水流が現れてからの沢筋の印象の違いは、これがおなじ沢かと思われるほどだ。人工物も意外なほど多い。\n不老集落への道は、植林に消されてざっと半分もたどれただろうか。日頃、横目にして通り過ぎていた景色のなかに、古の生活道が残る。不思議な懐かしさを感じながら下った。\n項目 内容 記録日 2026年9月12日（土） 天候 朝まで雨の残る長雨の合間、曇天＆ガス パーティ モンターニャ単独（コンディション：右膝痛と腰部打撲） アクセス 西東京バスて東日原バス停 行程 東日原バス停、日原橋、カラ沢、二又（co1060m）、カラ沢の頭、石尾根、石尾根co870m付近、不老林道、将門神社、峰畑集落跡、不老集落、奥多摩駅 コースタイム 08:28～東日原バス停スタート 09:14〜カラ沢遡行開始 10:10～（co900m）～10:33 10:46〜水流が現れる、co980m 11:03〜二又を右又に入る 12:45〜カラ沢の頭〜13:09 14:35～石尾根co870m（P934の東350m）～14:45 16:19～将門神社～16:30 16:34～峰畑集落跡 17:31～不老集落西端 17:43～不老バス停フィニッシュ コースマップ 総距離:- km 累積標高上り:- m 累積標高下り:- m 最高標高:- m 最低標高:- m 山行記録 カラ沢遡行 すべてこれから記入します。\n不老径路 すべてこれから記入します。\n写真（右クリック→新しいタブ...で拡大します）＋詳細記録 （09:10・写真1） （09:18・写真2） （09:42・写真3） （10:13・写真4） （10:39・写真5） （10:46・写真6） （10:56・写真7） （11:04・写真8） （11:14・写真9） （11:52・写真10） （11:55・写真11） （11:58・写真12） （12:14・写真13） （12:46・写真14） （15:12・写真15） （15:24・写真16） （15:59・写真17） （16:14・写真18） （16:25・写真19） （16:34・写真20） （16:54・写真21） （17:13・写真22） （17:29・写真23） （17:31・写真24） ","permalink":"https://montagna-katokeyci.github.io/oohc/posts/2026-09-12/","summary":"\u003cp\u003eカラ沢を遡行し、石尾根から不老集落に向かい降った。ふたつのテーマに関連はない。「ハイカーの沢歩き」なので沢屋さんの参考にはならない。\u003cbr\u003e\nカラ沢尾根に取付くさいに横切る地点と、co980mで水流が現れてからの沢筋の印象の違いは、これがおなじ沢かと思われるほどだ。人工物も意外なほど多い。\u003cbr\u003e\n不老集落への道は、植林に消されてざっと半分もたどれただろうか。日頃、横目にして通り過ぎていた景色のなかに、古の生活道が残る。不思議な懐かしさを感じながら下った。\u003c/p\u003e\n\u003chr\u003e\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth style=\"text-align: left\"\u003e項目\u003c/th\u003e\n\t\t\t\t\t\u003cth style=\"text-align: left\"\u003e内容\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e記録日\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e2026年9月12日（土）\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e天候\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e朝まで雨の残る長雨の合間、曇天＆ガス\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003eパーティ\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003eモンターニャ単独（コンディション：右膝痛と腰部打撲）\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003eアクセス\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e西東京バスて東日原バス停\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e行程\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e東日原バス停、日原橋、カラ沢、二又（co1060m）、カラ沢の頭、石尾根、石尾根co870m付近、不老林道、将門神社、峰畑集落跡、不老集落、奥多摩駅\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003chr\u003e\n\u003ch3 id=\"コースタイム\"\u003eコースタイム\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e08:28～東日原バス停スタート\u003c/li\u003e\n\u003cli\u003e09:14〜カラ沢遡行開始\u003c/li\u003e\n\u003cli\u003e10:10～（co900m）～10:33\u003c/li\u003e\n\u003cli\u003e10:46〜水流が現れる、co980m\u003c/li\u003e\n\u003cli\u003e11:03〜二又を右又に入る\u003c/li\u003e\n\u003cli\u003e12:45〜カラ沢の頭〜13:09\u003c/li\u003e\n\u003cli\u003e14:35～石尾根co870m（P934の東350m）～14:45\u003c/li\u003e\n\u003cli\u003e16:19～将門神社～16:30\u003c/li\u003e\n\u003cli\u003e16:34～峰畑集落跡\u003c/li\u003e\n\u003cli\u003e17:31～不老集落西端\u003c/li\u003e\n\u003cli\u003e17:43～不老バス停フィニッシュ\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003ch3 id=\"コースマップ\"\u003eコースマップ\u003c/h3\u003e\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003clink rel=\"stylesheet\" href=\"https://unpkg.com/leaflet@1.9.4/dist/leaflet.css\" /\u003e\n\u003cstyle\u003e\n  .gpx-container {\n    width: 100%;\n    margin: 1.5rem 0;\n    border: 1px solid #ccc;\n    border-radius: 8px;\n    overflow: hidden;\n    background: #fff;\n    box-shadow: 0 2px 6px rgba(0,0,0,0.08);\n    font-family: sans-serif;\n  }\n  .gpx-map { height: 380px; width: 100%; }\n  \n   \n  .gpx-summary {\n    display: flex;\n    flex-wrap: nowrap;\n    justify-content: space-between;\n    align-items: center;\n    background: #f8f9fa;\n    padding: 8px 10px;\n    border-top: 1px solid #e0e0e0;\n    border-bottom: 1px solid #e0e0e0;\n    font-size: 0.8rem;\n    color: #333;\n    overflow-x: auto;\n    white-space: nowrap;\n  }\n  .gpx-summary-item {\n    margin: 0 4px;\n  }\n  .gpx-summary-item strong {\n    color: #007bff;\n    font-size: 0.95rem;\n    margin-left: 2px;\n  }\n\n  .gpx-chart-wrapper {\n    height: 180px;\n    width: 100%;\n    padding: 10px;\n    background: #fafafa;\n    box-sizing: border-box;\n  }\n\n   \n  .start-marker-icon, .goal-marker-icon {\n    background: none;\n    border: none;\n    font-weight: bold;\n    font-size: 11px;\n    color: #ffffff;\n    text-align: center;\n    line-height: 18px;\n  }\n\u003c/style\u003e\n\n\n\u003cdiv class=\"gpx-container\"\u003e\n  \u003cdiv id=\"map-a71e3601\" class=\"gpx-map\"\u003e\u003c/div\u003e\n  \u003cdiv id=\"summary-a71e3601\" class=\"gpx-summary\"\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e総距離:\u003cstrong id=\"sum-dist-a71e3601\"\u003e-\u003c/strong\u003e km\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e累積標高上り:\u003cstrong id=\"sum-up-a71e3601\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e累積標高下り:\u003cstrong id=\"sum-down-a71e3601\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e最高標高:\u003cstrong id=\"sum-max-a71e3601\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e最低標高:\u003cstrong id=\"sum-min-a71e3601\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n  \u003c/div\u003e\n  \u003cdiv class=\"gpx-chart-wrapper\"\u003e\n    \u003ccanvas id=\"chart-a71e3601\"\u003e\u003c/canvas\u003e\n  \u003c/div\u003e\n\u003c/div\u003e\n\n\n\u003cscript src=\"https://unpkg.com/leaflet@1.9.4/dist/leaflet.js\"\u003e\u003c/script\u003e\n\u003cscript src=\"https://cdnjs.cloudflare.com/ajax/libs/leaflet-gpx/1.7.0/gpx.min.js\"\u003e\u003c/script\u003e\n\u003cscript src=\"https://cdn.jsdelivr.net/npm/chart.js\"\u003e\u003c/script\u003e\n\n\u003cscript\u003e\nwindow.addEventListener('load', function() {\n  var gpxUrl = '\\/oohc\\/posts\\/2026-09-12\\/20260912_20260912.gpx';\n\n  \n  var map = L.map('map-a71e3601').setView([0, 0], 10);\n  L.tileLayer('https://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png', {\n    attribution: '\u003ca href=\"https://maps.gsi.go.jp/development/ichiran.html\" target=\"_blank\"\u003e国土地理院\u003c/a\u003e',\n    maxZoom: 18\n  }).addTo(map);\n\n  \n  L.control.scale({\n    imperial: false,\n    position: 'bottomleft'\n  }).addTo(map);\n\n  var hoverMarker = null;\n  var trackPoints = [];\n  var timeLabels = []; \n\n  \n  var ctx = document.getElementById('chart-a71e3601').getContext('2d');\n  var chart = new Chart(ctx, {\n    type: 'line',\n    data: {\n      datasets: [{\n        label: '標高 (m)',\n        data: [],\n        borderColor: '#007bff',\n        backgroundColor: 'rgba(0, 123, 255, 0.1)',\n        fill: true,\n        borderWidth: 1.5,\n        pointRadius: 0,\n        pointHoverRadius: 6,\n        tension: 0.1\n      }]\n    },\n    options: {\n      responsive: true,\n      maintainAspectRatio: false,\n      interaction: { mode: 'index', intersect: false },\n      plugins: {\n        legend: { display: false },\n        \n        tooltip: {\n          callbacks: {\n            title: function(items) {\n              var index = items[0].dataIndex;\n              var timeStr = timeLabels[index] || '';\n              var distStr = items[0].raw.x.toFixed(2) + ' km';\n              return timeStr ? '時刻: ' + timeStr + '（距離: ' + distStr + '）' : '距離: ' + distStr;\n            },\n            label: function(item) {\n              return '標高: ' + item.raw.y + ' m';\n            }\n          }\n        }\n      },\n      scales: {\n        x: {\n          type: 'linear', \n          display: true,\n          title: { display: true, text: '距離 (km)', font: { size: 10 } },\n          ticks: {\n            font: { size: 10 }\n          },\n          grid: { color: 'rgba(0, 0, 0, 0.05)' }\n        },\n        y: {\n          display: true,\n          title: { display: true, text: '標高 (m)', font: { size: 10 } },\n          ticks: { font: { size: 10 } },\n          grid: { color: 'rgba(0, 0, 0, 0.05)' }\n        }\n      },\n      \n      onHover: function(event, activeElements) {\n        if (activeElements \u0026\u0026 activeElements.length \u003e 0) {\n          var index = activeElements[0].index;\n          updateHoverMarker(index);\n        }\n      }\n    }\n  });\n\n  \n  function updateHoverMarker(index) {\n    var pt = trackPoints[index];\n    if (pt) {\n      if (!hoverMarker) {\n        hoverMarker = L.circleMarker([pt.lat, pt.lng], {\n          radius: 8,\n          fillColor: '#00ffff',\n          color: '#ffffff',\n          weight: 3,\n          opacity: 1,\n          fillOpacity: 1\n        }).addTo(map);\n      } else {\n        hoverMarker.setLatLng([pt.lat, pt.lng]);\n      }\n    }\n  }\n\n  \n  function extractTrackData(layer) {\n    var pts = [];\n    var polylines = [];\n\n    if (typeof layer.getLatLngs === 'function') {\n      var latlngs = layer.getLatLngs();\n      var flat = Array.isArray(latlngs[0]) ? latlngs.flat(Infinity) : latlngs;\n      flat.forEach(function(p) {\n        if (p \u0026\u0026 typeof p.lat === 'number') {\n          pts.push({ lat: p.lat, lng: p.lng });\n        }\n      });\n      if (layer instanceof L.Polyline) {\n        polylines.push(layer);\n      }\n    } else if (typeof layer.eachLayer === 'function') {\n      layer.eachLayer(function(child) {\n        var res = extractTrackData(child);\n        pts = pts.concat(res.pts);\n        polylines = polylines.concat(res.polylines);\n      });\n    }\n    return { pts: pts, polylines: polylines };\n  }\n\n  \n  fetch(gpxUrl)\n    .then(function(response) { return response.text(); })\n    .then(function(xmlText) {\n      var parser = new DOMParser();\n      var xmlDoc = parser.parseFromString(xmlText, \"text/xml\");\n      var trkpts = xmlDoc.getElementsByTagName(\"trkpt\");\n\n      for (var i = 0; i \u003c trkpts.length; i++) {\n        var timeNode = trkpts[i].getElementsByTagName(\"time\")[0];\n        if (timeNode) {\n          var dateObj = new Date(timeNode.textContent);\n          var timeStr = dateObj.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', hour12: false });\n          timeLabels.push(timeStr);\n        } else {\n          timeLabels.push('');\n        }\n      }\n    })\n    .catch(function(err) {\n      console.error(\"GPX Time Parsing Error:\", err);\n    });\n\n  \n  new L.GPX(gpxUrl, {\n    async: true,\n    polyline_options: { color: '#ff3300', weight: 5, opacity: 0.8 },\n    marker_options: { startIconUrl: null, endIconUrl: null, wptIconUrls: null }\n  }).on('loaded', function(e) {\n    var gpx = e.target;\n    map.fitBounds(gpx.getBounds());\n\n    \n    var totalDistMeters = gpx.get_distance();\n    var distKmNum = totalDistMeters / 1000;\n    var distKmStr = distKmNum.toFixed(2);\n    var maxEle = Math.round(gpx.get_elevation_max());\n    var minEle = Math.round(gpx.get_elevation_min());\n    var gainEle = Math.round(gpx.get_elevation_gain());\n    var lossEle = Math.round(gpx.get_elevation_loss());\n\n    document.getElementById('sum-dist-a71e3601').innerText = distKmStr;\n    document.getElementById('sum-up-a71e3601').innerText = gainEle;\n    document.getElementById('sum-down-a71e3601').innerText = lossEle;\n    document.getElementById('sum-max-a71e3601').innerText = maxEle;\n    document.getElementById('sum-min-a71e3601').innerText = minEle;\n\n    \n    var eleData = gpx.get_elevation_data();\n    var chartDataPoints = [];\n\n    var extracted = extractTrackData(gpx);\n    trackPoints = extracted.pts;\n\n    \n    if (trackPoints.length \u003e 0) {\n      var startPt = trackPoints[0];\n      var endPt = trackPoints[trackPoints.length - 1];\n\n      L.circleMarker([startPt.lat, startPt.lng], {\n        radius: 9,\n        fillColor: '#28a745',\n        color: '#ffffff',\n        weight: 2,\n        opacity: 1,\n        fillOpacity: 0.9\n      }).addTo(map).bindTooltip('スタート', { permanent: false, direction: 'top' });\n\n      L.circleMarker([endPt.lat, endPt.lng], {\n        radius: 9,\n        fillColor: '#dc3545',\n        color: '#ffffff',\n        weight: 2,\n        opacity: 1,\n        fillOpacity: 0.9\n      }).addTo(map).bindTooltip('ゴール', { permanent: false, direction: 'top' });\n    }\n\n    eleData.forEach(function(item) {\n      var dist = typeof item[0] === 'number' ? item[0] : parseFloat(item[0]);\n      var ele = Math.round(item[1]);\n      chartDataPoints.push({\n        x: parseFloat(dist.toFixed(2)),\n        y: ele\n      });\n    });\n\n    \n    var dynamicStepSize = 1.0;\n    if (distKmNum \u003c= 5) {\n      dynamicStepSize = 0.5;   \n    } else if (distKmNum \u003c= 20) {\n      dynamicStepSize = 1.0;   \n    } else if (distKmNum \u003c= 40) {\n      dynamicStepSize = 5.0;   \n    } else {\n      dynamicStepSize = 10.0;  \n    }\n\n    \n    chart.options.scales.x.max = distKmNum;\n\n    \n    var allowedTicks = [];\n    for (var v = 0; v \u003c distKmNum; v += dynamicStepSize) {\n      allowedTicks.push(parseFloat(v.toFixed(1)));\n    }\n    \n\n    \n    chart.options.scales.x.ticks.callback = function(value) {\n      for (var i = 0; i \u003c allowedTicks.length; i++) {\n        if (Math.abs(value - allowedTicks[i]) \u003c 0.01) {\n          return value + ' km';\n        }\n      }\n      \n      return '';\n    };\n\n    \n    chart.options.scales.x.afterBuildTicks = function(axis) {\n      axis.ticks = allowedTicks.map(function(val) {\n        return { value: val };\n      });\n    };\n\n    chart.data.datasets[0].data = chartDataPoints;\n    chart.update();\n\n    \n    extracted.polylines.forEach(function(polyline) {\n      polyline.on('mousemove', function(ev) {\n        if (!trackPoints.length) return;\n\n        var mouseLatLng = ev.latlng;\n        var closestIndex = 0;\n        var minDist = Infinity;\n\n        for (var i = 0; i \u003c trackPoints.length; i++) {\n          var d = mouseLatLng.distanceTo(L.latLng(trackPoints[i].lat, trackPoints[i].lng));\n          if (d \u003c minDist) {\n            minDist = d;\n            closestIndex = i;\n          }\n        }\n\n        updateHoverMarker(closestIndex);\n\n        chart.setActiveElements([{ datasetIndex: 0, index: closestIndex }]);\n        chart.tooltip.setActiveElements([{ datasetIndex: 0, index: closestIndex }], { x: 0, y: 0 });\n        chart.update();\n      });\n    });\n\n  }).addTo(map);\n});\n\u003c/script\u003e\n\u003chr\u003e\n\u003ch3 id=\"山行記録\"\u003e山行記録\u003c/h3\u003e\n\u003ch4 id=\"カラ沢遡行\"\u003eカラ沢遡行\u003c/h4\u003e\n\u003cp\u003eすべてこれから記入します。\u003c/p\u003e","title":"カラ沢遡行と不老径路"},{"content":"不老林道終点＝オキノ十二天からはじまった廃径をたどる探索行も最終回。ヒカゲザス尾根を越えるあたりから「もしかして……」と意識していた鞘口のクビレにたどり着いた。まさか全行程をたどれるとは思いもよらなかった。鞘口のクビレからは巳ノ戸林道～ヤケト尾根上段径路と続くので、氷川から唐松谷の前窪出合いに至る、山腹を繋ぐ壮大なルートが完成する。\n帰りの青梅線車中でハイボールが美味かった。\n項目 内容 記録日 2026年9月5日（土） 天候 長雨の合間、小雨のち曇り・ガス パーティ モンターニャ単独（コンディション：右膝痛と腰部打撲） アクセス 西東京バスで東日原バス停 行程 東日原バス停、ネズミサス尾根、カラ沢の頭、石尾根、城山、コマ尾根、コマ尾根co1260m付近、金左小屋窪、鷹ノ巣谷中尾根、小六谷、カイキ尾根、稲村岩尾根、巳ノ戸沢、鞘口のクビレ、鷹ノ巣尾根、八丁山、巳ノ戸尾根、東日原バス停 コースタイム 08:22～東日原バス停スタート 10:15～カラ沢の頭～10:42 10:48～城山からコマ尾根の下降開始 11:26～前回到達地点、コマ尾根co1260m～11:57 12:45ごろ～金左小屋窪、二又のすぐ上 13:12～鷹ノ巣谷中尾根～13:35 14:35～小六谷～14:45 15:21～カイキ尾根 15:27～稲村岩尾根 15:56～巳ノ戸沢 16:15～鞘口のクビレ～16:30 17:07～八丁山 18:20～中日原バス停フィニッシュ コースマップ 総距離:- km 累積標高上り:- m 累積標高下り:- m 最高標高:- m 最低標高:- m 山行記録 （最終回）日原川下流右岸中段道～コマ尾根から鞘口のクビレまで 前回最終到達地点のコマ尾根co1260mから、細いが明瞭な踏み跡をスタートする。水流のない金左小屋窪の二又のすぐ上を横断したあと、中尾根の鼻先を回り終えるまで踏み跡が上下に分かれ、道跡を追いにくい。\n小六谷へは急斜面を降り対岸を登り返す。崖道をたどる緊張感と、見下ろす小六谷の一直線の流れがハイライトになる。谷を発って300mは引き続きの険路、崖っぷちの木の根に助けられる。\n稲村岩尾根からは「鷹ノ巣山北面」エリア、広く薄くザレて道跡探しに苦労する。幸い傾斜は緩んでいる。鞘口のクビレに近づき明瞭な踏み跡に戻ることができた。\nメモ 鞘口のクビレは、巳ノ戸林道の日原方向・おなじく巳ノ戸の大クビレ方向への新道と旧道・鷹ノ巣尾根の八丁山方向とヒルメシクイのタワ方向、以上の5方向に日原川下流右岸中段道を加えた六叉路だった。\n出だしの日原橋で派手にすっ転ぶ。この7年半、「転んだ」ことはないのだが。濡れた床板より、2週間のブランクと歩行技術の衰えを疑ってかかるべきだろう。十日たつが、何かの拍子にまだ痛む。\n撤収路の巳ノ戸尾根は八丁山から先、目障りなテープがすっかり片付けられている。尾根から巳ノ戸集落跡に降る斜面にはまだ残る。\n金左小屋窪の左又を遡っているかのようなGPXの軌跡が残るが、遡ってはいない。「左わきにアックスをかかえ、左手でスマホのGPXを操作した」さいの、スマホの磁気センサーの狂いによると思われる。\n関連する筆者の山行記録 Part 5（カラ沢尾根からコマ尾根）\nhttps://www.yamakei-online.com/cl_record/detail.php?id=337600\nPart 4（タル沢尾根からカラ沢尾根）\nhttps://www.yamakei-online.com/cl_record/detail.php?id=335807\nPart 3（山ノ神尾根からタル沢尾根）\nhttps://www.yamakei-online.com/cl_record/detail.php?id=335316\nPart 2（ヒカゲザス尾根から山ノ神尾根）\nhttps://www.yamakei-online.com/cl_record/detail.php?id=335031\nPart 1（不老林道始点からヒカゲザス尾根）\nhttps://www.yamakei-online.com/cl_record/detail.php?id=334701\n巳ノ戸林道（新道）\nhttps://www.yamakei-online.com/cl_record/detail.php?id=307170\n巳ノ戸林道（旧道）\nhttps://www.yamakei-online.com/cl_record/detail.php?id=326430\nヤケト尾根上段径路上流の最終回\nhttps://www.yamakei-online.com/cl_record/detail.php?id=304862\n公開日 20260920\n写真（右クリック→新しいタブ...で拡大します）＋詳細記録 （00:00・写真1） ゴール地点の鞘口のクビレは、なんと。六叉路だった。 （00:00・写真2） 筆者が6回に分けてたどった日原川下流右岸中段道を青線でしめす。不老林道の始点から山ノ神尾根までと、 （00:00・写真3） 山ノ神尾根から鞘口のクビレまで。赤線は筆者の他の山行ログ。 （08:16・写真4） 奥多摩駅まで雨が残り、東日原でやっと止む。\n日原橋で派手にすっ転び、脚を上げると痛む腰をさすりながらカラ沢の頭に上がり、 （10:48・写真5） 城山に回る。アックスを下ろしチェーンスパイクをつける。 （11:33・写真6） 250m下降してコマ尾根のco1260m付近。前回たどってきた下流方向と、 （11:56・写真7） きょう辿る上流方向。付近は酒瓶が1本だけ転がる。 （12:01・写真8） 等高に進む踏み跡を分けて上を取る。 （12:12・写真9） コマ尾根のひとつ西隣の尾根を回りながら。付近は雰囲気が良い。\nお「たまにはのんびりしたいがなあ。先は長いし湿りすぎだし。そのうちのんびりしか歩けなくなったらまた来ような」\nオ「…………」 （12:35・写真10） 水線の入る金左小屋窪の、1本手前の無名窪を振り返って。山側の崖から水が湧きだし、すぐ下方でまとまった流れになっている。 （12:43・写真11） 金左小屋窪の左又にさしかかる。こちらは流れがない。 （12:50・写真12） 次いで右又も流れなし。さらに二又に分かれている。通過した標高では、金左小屋窪にワサビ田の痕跡はなかった。 （12:59・写真13） その後は踏み跡が錯綜し、やっと落ち着く。 （13:12・写真14） 鷹ノ巣谷の中尾根（金左小屋窪・小六谷中尾根）に回りこむ。あんぱんと一服。 （13:42・写真15） 再始動後も踏み跡が入り交じり、上下して足裏感覚を取り戻す。 （13:51・写真16） 越えれば小六谷が見えるだろう小尾根でいったん道跡を失う。等高に進む気になれずバックし、 （13:55・写真17） 上がって急斜面を回避する踏み跡に乗る。 （14:16・写真18） 小六谷を下方に見ながら近づく。しかし対岸がシンプルに崖で、道が続かない。 （14:20・写真19） ここもバックし、分岐して谷へ降る明瞭な道跡を見つける。 （14:31・写真20） 崖っぷちの道はオルソくんを落とさないように撮影。上流下流とも見渡せる距離が長く、見事だった。 （14:35・写真21） 小六谷に下りる。\nお「おじさんの経験則でいうとだな。谷に下りることができればもらったようなもの。マリアさまにおかれてはご機嫌麗しいようで祝着至極に尽きる。よし、ガンガン行くぞ！」\nオ「…………」 （14:35・写真22） 下流方向。「両岸とも崖」によくぞ道を作ったものだし、たどれるのも僥倖だ。 （14:50・写真23） 稲村岩尾根のP1562から東に下る岩尾根の下を通過する。振り返って。 （14:54・写真24） ふたたび崖を辿る道になる。ボイスレコーダーに「カイキ尾根まで350ｍくらいか、ここを越えれば安全圏だと思うので集中していきたい」。\n道下のコケは、残念ながら石積みではない。 （14:57・写真25） お「祈ろう。祈りながら通過する一択だ」\nオ「……………………」 （15:00・写真26） 通過後に振り返る。木の根に助けられた。 （15:21・写真27） カイキ尾根の石柱地点を横断する。 （15:27・写真28） 続いて稲村岩尾根。 （15:35・写真29） 稲村岩尾根の北面に入ってからは踏み跡が弱い。上下しても足裏感覚の確証が得られない。 （15:49・写真30） 「まだマシ」ないちばん下の踏み跡を進む。 （15:56・写真31） 巳ノ戸沢を渡り、 （16:02・写真32） やっと道跡に戻る。 （16:19・写真33） 鞘口のクビレに着く。\nお「近々年金生活に入るおじさんに、難路の踏破とはマリアさまから洒落たプレゼントだ……。よし、本日から我々はマリアさまの僕となる。目覚めたら西方に向かい遥拝。寝る前にも遥拝だ。いちにち五回はやめておく。おじさんも忙しいからな」\nオ「…………」 （16:26・写真34） （18:12・写真35） 八丁山への通行禁止ロープを身を縮めてくぐる。調子に乗るものではない。 （19:56・写真36） やり遂げた後の一杯は最高。\nお「キミも泥だらけだなあ。汚いと女子にモテないぞ？ 帰ったら洗濯されような」\nオ「……………………」 ","permalink":"https://montagna-katokeyci.github.io/oohc/posts/2026-09-05/","summary":"\u003cp\u003e不老林道終点＝オキノ十二天からはじまった廃径をたどる探索行も最終回。ヒカゲザス尾根を越えるあたりから「もしかして……」と意識していた鞘口のクビレにたどり着いた。まさか全行程をたどれるとは思いもよらなかった。鞘口のクビレからは巳ノ戸林道～ヤケト尾根上段径路と続くので、氷川から唐松谷の前窪出合いに至る、山腹を繋ぐ壮大なルートが完成する。\u003cbr\u003e\n帰りの青梅線車中でハイボールが美味かった。\u003c/p\u003e\n\u003chr\u003e\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth style=\"text-align: left\"\u003e項目\u003c/th\u003e\n\t\t\t\t\t\u003cth style=\"text-align: left\"\u003e内容\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e記録日\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e2026年9月5日（土）\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e天候\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e長雨の合間、小雨のち曇り・ガス\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003eパーティ\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003eモンターニャ単独（コンディション：右膝痛と腰部打撲）\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003eアクセス\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e西東京バスで東日原バス停\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e行程\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e東日原バス停、ネズミサス尾根、カラ沢の頭、石尾根、城山、コマ尾根、コマ尾根co1260m付近、金左小屋窪、鷹ノ巣谷中尾根、小六谷、カイキ尾根、稲村岩尾根、巳ノ戸沢、鞘口のクビレ、鷹ノ巣尾根、八丁山、巳ノ戸尾根、東日原バス停\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003chr\u003e\n\u003ch3 id=\"コースタイム\"\u003eコースタイム\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e08:22～東日原バス停スタート\u003c/li\u003e\n\u003cli\u003e10:15～カラ沢の頭～10:42\u003c/li\u003e\n\u003cli\u003e10:48～城山からコマ尾根の下降開始\u003c/li\u003e\n\u003cli\u003e11:26～前回到達地点、コマ尾根co1260m～11:57\u003c/li\u003e\n\u003cli\u003e12:45ごろ～金左小屋窪、二又のすぐ上\u003c/li\u003e\n\u003cli\u003e13:12～鷹ノ巣谷中尾根～13:35\u003c/li\u003e\n\u003cli\u003e14:35～小六谷～14:45\u003c/li\u003e\n\u003cli\u003e15:21～カイキ尾根\u003c/li\u003e\n\u003cli\u003e15:27～稲村岩尾根\u003c/li\u003e\n\u003cli\u003e15:56～巳ノ戸沢\u003c/li\u003e\n\u003cli\u003e16:15～鞘口のクビレ～16:30\u003c/li\u003e\n\u003cli\u003e17:07～八丁山\u003c/li\u003e\n\u003cli\u003e18:20～中日原バス停フィニッシュ\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003ch3 id=\"コースマップ\"\u003eコースマップ\u003c/h3\u003e\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003clink rel=\"stylesheet\" href=\"https://unpkg.com/leaflet@1.9.4/dist/leaflet.css\" /\u003e\n\u003cstyle\u003e\n  .gpx-container {\n    width: 100%;\n    margin: 1.5rem 0;\n    border: 1px solid #ccc;\n    border-radius: 8px;\n    overflow: hidden;\n    background: #fff;\n    box-shadow: 0 2px 6px rgba(0,0,0,0.08);\n    font-family: sans-serif;\n  }\n  .gpx-map { height: 380px; width: 100%; }\n  \n   \n  .gpx-summary {\n    display: flex;\n    flex-wrap: nowrap;\n    justify-content: space-between;\n    align-items: center;\n    background: #f8f9fa;\n    padding: 8px 10px;\n    border-top: 1px solid #e0e0e0;\n    border-bottom: 1px solid #e0e0e0;\n    font-size: 0.8rem;\n    color: #333;\n    overflow-x: auto;\n    white-space: nowrap;\n  }\n  .gpx-summary-item {\n    margin: 0 4px;\n  }\n  .gpx-summary-item strong {\n    color: #007bff;\n    font-size: 0.95rem;\n    margin-left: 2px;\n  }\n\n  .gpx-chart-wrapper {\n    height: 180px;\n    width: 100%;\n    padding: 10px;\n    background: #fafafa;\n    box-sizing: border-box;\n  }\n\n   \n  .start-marker-icon, .goal-marker-icon {\n    background: none;\n    border: none;\n    font-weight: bold;\n    font-size: 11px;\n    color: #ffffff;\n    text-align: center;\n    line-height: 18px;\n  }\n\u003c/style\u003e\n\n\n\u003cdiv class=\"gpx-container\"\u003e\n  \u003cdiv id=\"map-364703c4\" class=\"gpx-map\"\u003e\u003c/div\u003e\n  \u003cdiv id=\"summary-364703c4\" class=\"gpx-summary\"\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e総距離:\u003cstrong id=\"sum-dist-364703c4\"\u003e-\u003c/strong\u003e km\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e累積標高上り:\u003cstrong id=\"sum-up-364703c4\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e累積標高下り:\u003cstrong id=\"sum-down-364703c4\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e最高標高:\u003cstrong id=\"sum-max-364703c4\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e最低標高:\u003cstrong id=\"sum-min-364703c4\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n  \u003c/div\u003e\n  \u003cdiv class=\"gpx-chart-wrapper\"\u003e\n    \u003ccanvas id=\"chart-364703c4\"\u003e\u003c/canvas\u003e\n  \u003c/div\u003e\n\u003c/div\u003e\n\n\n\u003cscript src=\"https://unpkg.com/leaflet@1.9.4/dist/leaflet.js\"\u003e\u003c/script\u003e\n\u003cscript src=\"https://cdnjs.cloudflare.com/ajax/libs/leaflet-gpx/1.7.0/gpx.min.js\"\u003e\u003c/script\u003e\n\u003cscript src=\"https://cdn.jsdelivr.net/npm/chart.js\"\u003e\u003c/script\u003e\n\n\u003cscript\u003e\nwindow.addEventListener('load', function() {\n  var gpxUrl = '\\/oohc\\/posts\\/2026-09-05\\/20260905_20260905_ed.gpx';\n\n  \n  var map = L.map('map-364703c4').setView([0, 0], 10);\n  L.tileLayer('https://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png', {\n    attribution: '\u003ca href=\"https://maps.gsi.go.jp/development/ichiran.html\" target=\"_blank\"\u003e国土地理院\u003c/a\u003e',\n    maxZoom: 18\n  }).addTo(map);\n\n  \n  L.control.scale({\n    imperial: false,\n    position: 'bottomleft'\n  }).addTo(map);\n\n  var hoverMarker = null;\n  var trackPoints = [];\n  var timeLabels = []; \n\n  \n  var ctx = document.getElementById('chart-364703c4').getContext('2d');\n  var chart = new Chart(ctx, {\n    type: 'line',\n    data: {\n      datasets: [{\n        label: '標高 (m)',\n        data: [],\n        borderColor: '#007bff',\n        backgroundColor: 'rgba(0, 123, 255, 0.1)',\n        fill: true,\n        borderWidth: 1.5,\n        pointRadius: 0,\n        pointHoverRadius: 6,\n        tension: 0.1\n      }]\n    },\n    options: {\n      responsive: true,\n      maintainAspectRatio: false,\n      interaction: { mode: 'index', intersect: false },\n      plugins: {\n        legend: { display: false },\n        \n        tooltip: {\n          callbacks: {\n            title: function(items) {\n              var index = items[0].dataIndex;\n              var timeStr = timeLabels[index] || '';\n              var distStr = items[0].raw.x.toFixed(2) + ' km';\n              return timeStr ? '時刻: ' + timeStr + '（距離: ' + distStr + '）' : '距離: ' + distStr;\n            },\n            label: function(item) {\n              return '標高: ' + item.raw.y + ' m';\n            }\n          }\n        }\n      },\n      scales: {\n        x: {\n          type: 'linear', \n          display: true,\n          title: { display: true, text: '距離 (km)', font: { size: 10 } },\n          ticks: {\n            font: { size: 10 }\n          },\n          grid: { color: 'rgba(0, 0, 0, 0.05)' }\n        },\n        y: {\n          display: true,\n          title: { display: true, text: '標高 (m)', font: { size: 10 } },\n          ticks: { font: { size: 10 } },\n          grid: { color: 'rgba(0, 0, 0, 0.05)' }\n        }\n      },\n      \n      onHover: function(event, activeElements) {\n        if (activeElements \u0026\u0026 activeElements.length \u003e 0) {\n          var index = activeElements[0].index;\n          updateHoverMarker(index);\n        }\n      }\n    }\n  });\n\n  \n  function updateHoverMarker(index) {\n    var pt = trackPoints[index];\n    if (pt) {\n      if (!hoverMarker) {\n        hoverMarker = L.circleMarker([pt.lat, pt.lng], {\n          radius: 8,\n          fillColor: '#00ffff',\n          color: '#ffffff',\n          weight: 3,\n          opacity: 1,\n          fillOpacity: 1\n        }).addTo(map);\n      } else {\n        hoverMarker.setLatLng([pt.lat, pt.lng]);\n      }\n    }\n  }\n\n  \n  function extractTrackData(layer) {\n    var pts = [];\n    var polylines = [];\n\n    if (typeof layer.getLatLngs === 'function') {\n      var latlngs = layer.getLatLngs();\n      var flat = Array.isArray(latlngs[0]) ? latlngs.flat(Infinity) : latlngs;\n      flat.forEach(function(p) {\n        if (p \u0026\u0026 typeof p.lat === 'number') {\n          pts.push({ lat: p.lat, lng: p.lng });\n        }\n      });\n      if (layer instanceof L.Polyline) {\n        polylines.push(layer);\n      }\n    } else if (typeof layer.eachLayer === 'function') {\n      layer.eachLayer(function(child) {\n        var res = extractTrackData(child);\n        pts = pts.concat(res.pts);\n        polylines = polylines.concat(res.polylines);\n      });\n    }\n    return { pts: pts, polylines: polylines };\n  }\n\n  \n  fetch(gpxUrl)\n    .then(function(response) { return response.text(); })\n    .then(function(xmlText) {\n      var parser = new DOMParser();\n      var xmlDoc = parser.parseFromString(xmlText, \"text/xml\");\n      var trkpts = xmlDoc.getElementsByTagName(\"trkpt\");\n\n      for (var i = 0; i \u003c trkpts.length; i++) {\n        var timeNode = trkpts[i].getElementsByTagName(\"time\")[0];\n        if (timeNode) {\n          var dateObj = new Date(timeNode.textContent);\n          var timeStr = dateObj.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', hour12: false });\n          timeLabels.push(timeStr);\n        } else {\n          timeLabels.push('');\n        }\n      }\n    })\n    .catch(function(err) {\n      console.error(\"GPX Time Parsing Error:\", err);\n    });\n\n  \n  new L.GPX(gpxUrl, {\n    async: true,\n    polyline_options: { color: '#ff3300', weight: 5, opacity: 0.8 },\n    marker_options: { startIconUrl: null, endIconUrl: null, wptIconUrls: null }\n  }).on('loaded', function(e) {\n    var gpx = e.target;\n    map.fitBounds(gpx.getBounds());\n\n    \n    var totalDistMeters = gpx.get_distance();\n    var distKmNum = totalDistMeters / 1000;\n    var distKmStr = distKmNum.toFixed(2);\n    var maxEle = Math.round(gpx.get_elevation_max());\n    var minEle = Math.round(gpx.get_elevation_min());\n    var gainEle = Math.round(gpx.get_elevation_gain());\n    var lossEle = Math.round(gpx.get_elevation_loss());\n\n    document.getElementById('sum-dist-364703c4').innerText = distKmStr;\n    document.getElementById('sum-up-364703c4').innerText = gainEle;\n    document.getElementById('sum-down-364703c4').innerText = lossEle;\n    document.getElementById('sum-max-364703c4').innerText = maxEle;\n    document.getElementById('sum-min-364703c4').innerText = minEle;\n\n    \n    var eleData = gpx.get_elevation_data();\n    var chartDataPoints = [];\n\n    var extracted = extractTrackData(gpx);\n    trackPoints = extracted.pts;\n\n    \n    if (trackPoints.length \u003e 0) {\n      var startPt = trackPoints[0];\n      var endPt = trackPoints[trackPoints.length - 1];\n\n      L.circleMarker([startPt.lat, startPt.lng], {\n        radius: 9,\n        fillColor: '#28a745',\n        color: '#ffffff',\n        weight: 2,\n        opacity: 1,\n        fillOpacity: 0.9\n      }).addTo(map).bindTooltip('スタート', { permanent: false, direction: 'top' });\n\n      L.circleMarker([endPt.lat, endPt.lng], {\n        radius: 9,\n        fillColor: '#dc3545',\n        color: '#ffffff',\n        weight: 2,\n        opacity: 1,\n        fillOpacity: 0.9\n      }).addTo(map).bindTooltip('ゴール', { permanent: false, direction: 'top' });\n    }\n\n    eleData.forEach(function(item) {\n      var dist = typeof item[0] === 'number' ? item[0] : parseFloat(item[0]);\n      var ele = Math.round(item[1]);\n      chartDataPoints.push({\n        x: parseFloat(dist.toFixed(2)),\n        y: ele\n      });\n    });\n\n    \n    var dynamicStepSize = 1.0;\n    if (distKmNum \u003c= 5) {\n      dynamicStepSize = 0.5;   \n    } else if (distKmNum \u003c= 20) {\n      dynamicStepSize = 1.0;   \n    } else if (distKmNum \u003c= 40) {\n      dynamicStepSize = 5.0;   \n    } else {\n      dynamicStepSize = 10.0;  \n    }\n\n    \n    chart.options.scales.x.max = distKmNum;\n\n    \n    var allowedTicks = [];\n    for (var v = 0; v \u003c distKmNum; v += dynamicStepSize) {\n      allowedTicks.push(parseFloat(v.toFixed(1)));\n    }\n    \n\n    \n    chart.options.scales.x.ticks.callback = function(value) {\n      for (var i = 0; i \u003c allowedTicks.length; i++) {\n        if (Math.abs(value - allowedTicks[i]) \u003c 0.01) {\n          return value + ' km';\n        }\n      }\n      \n      return '';\n    };\n\n    \n    chart.options.scales.x.afterBuildTicks = function(axis) {\n      axis.ticks = allowedTicks.map(function(val) {\n        return { value: val };\n      });\n    };\n\n    chart.data.datasets[0].data = chartDataPoints;\n    chart.update();\n\n    \n    extracted.polylines.forEach(function(polyline) {\n      polyline.on('mousemove', function(ev) {\n        if (!trackPoints.length) return;\n\n        var mouseLatLng = ev.latlng;\n        var closestIndex = 0;\n        var minDist = Infinity;\n\n        for (var i = 0; i \u003c trackPoints.length; i++) {\n          var d = mouseLatLng.distanceTo(L.latLng(trackPoints[i].lat, trackPoints[i].lng));\n          if (d \u003c minDist) {\n            minDist = d;\n            closestIndex = i;\n          }\n        }\n\n        updateHoverMarker(closestIndex);\n\n        chart.setActiveElements([{ datasetIndex: 0, index: closestIndex }]);\n        chart.tooltip.setActiveElements([{ datasetIndex: 0, index: closestIndex }], { x: 0, y: 0 });\n        chart.update();\n      });\n    });\n\n  }).addTo(map);\n});\n\u003c/script\u003e\n\u003chr\u003e\n\u003ch3 id=\"山行記録\"\u003e山行記録\u003c/h3\u003e\n\u003ch4 id=\"最終回日原川下流右岸中段道コマ尾根から鞘口のクビレまで\"\u003e（最終回）日原川下流右岸中段道～コマ尾根から鞘口のクビレまで\u003c/h4\u003e\n\u003cp\u003e前回最終到達地点のコマ尾根co1260mから、細いが明瞭な踏み跡をスタートする。水流のない金左小屋窪の二又のすぐ上を横断したあと、中尾根の鼻先を回り終えるまで踏み跡が上下に分かれ、道跡を追いにくい。\u003cbr\u003e\n小六谷へは急斜面を降り対岸を登り返す。崖道をたどる緊張感と、見下ろす小六谷の一直線の流れがハイライトになる。谷を発って300mは引き続きの険路、崖っぷちの木の根に助けられる。\u003cbr\u003e\n稲村岩尾根からは「鷹ノ巣山北面」エリア、広く薄くザレて道跡探しに苦労する。幸い傾斜は緩んでいる。鞘口のクビレに近づき明瞭な踏み跡に戻ることができた。\u003c/p\u003e","title":"Part 6/最終回 : 日原川下流右岸中段道"},{"content":"筆者：モンターニャ（加藤キーチ）\nお問い合わせは、oxytonbarあっとまーくgmail.com まで。コピペして@に変えてください。\n/重要～最後までお読みください/\n①繰り返しますが、山行記録は案内を意図していません。記録をなぞった結果について責任を負うことはできません。\n②古書を読み込み・あるいは断片的な情報を繋ぎ合わせて「失われた径路」や「知られざる径路」を浮き彫りにし、現代の山行記録として再構築する作業には、膨大な時間と経験の蓄積と労力を要しています。筆者のオリジナルの山行記録をなぞるさいには、\n1.該当山行記録のリンクを貼り、出展を明記する\n2.筆者に連絡を入れる\n以上2点を求めます。節度を欠く輩には、マリアさまの天罰が下ります（本当）。\n/～ここまで/\nオフトレイル歩きのデイ・ハイカー、1961年生まれ。犬と暮らす間に長いブランクが生じました。トレランシューズですが走りません（走れません）。2023年から奥多摩の日原川流域 （ゴンザス尾根～石尾根）にエリアを絞って歩いています。\nスタイル：公共交通機関を利用した日帰りのみ。\n信条：マリアさま頼みのイチかバチか。\n得意：道迷いと忘れ物。入山口で愚図る。\nタブー（やらないこと）：ストックを持つ、ロープを使う、山頂で麺類をズルズルすする、汚い格好のまま電車に乗る。\nex-：もとバックパッカー55ヶ国/1年4ヶ月、もと白い犬の飼主、もとバーテンダー、ル・クレジオとカズオ・イシグロのノーベル文学賞的中も宝くじ当たったことなし。\n2019年から再開した山歩きの記録は、「山と渓谷オンライン」に350回ほどupしています。\nhttps://www.yamakei-online.com/cl_history/?id=307097\n筆者の山行データ\n総距離 約7,104.6km（平均20.4km）累計349回\n累積標高差 上り約788,828m 下り約774,730m\nコースタイム 標準52,270分 自己28,637分 倍率0.55\n（山と渓谷オンラインから、2019年2月～2026年7月）\n","permalink":"https://montagna-katokeyci.github.io/oohc/profile/","summary":"\u003cp\u003e筆者：モンターニャ（加藤キーチ）\u003c/p\u003e\n\u003cp\u003eお問い合わせは、oxytonbarあっとまーくgmail.com まで。コピペして@に変えてください。\u003c/p\u003e\n\u003cp\u003e/\u003cem\u003e重要～最後までお読みください\u003c/em\u003e/\u003cbr\u003e\n①繰り返しますが、山行記録は案内を意図していません。記録をなぞった結果について責任を負うことはできません。\u003cbr\u003e\n②古書を読み込み・あるいは断片的な情報を繋ぎ合わせて「失われた径路」や「知られざる径路」を浮き彫りにし、現代の山行記録として再構築する作業には、膨大な時間と経験の蓄積と労力を要しています。筆者のオリジナルの山行記録をなぞるさいには、\u003cbr\u003e\n1.該当山行記録のリンクを貼り、出展を明記する\u003cbr\u003e\n2.筆者に連絡を入れる\u003cbr\u003e\n以上2点を求めます。節度を欠く輩には、マリアさまの天罰が下ります（本当）。\u003cbr\u003e\n/\u003cem\u003e～ここまで\u003c/em\u003e/\u003c/p\u003e\n\u003cp\u003eオフトレイル歩きのデイ・ハイカー、1961年生まれ。犬と暮らす間に長いブランクが生じました。トレランシューズですが走りません（走れません）。2023年から奥多摩の日原川流域 （ゴンザス尾根～石尾根）にエリアを絞って歩いています。\u003c/p\u003e\n\u003cp\u003eスタイル：公共交通機関を利用した日帰りのみ。\u003cbr\u003e\n信条：マリアさま頼みのイチかバチか。\u003cbr\u003e\n得意：道迷いと忘れ物。入山口で愚図る。\u003cbr\u003e\nタブー（やらないこと）：ストックを持つ、ロープを使う、山頂で麺類をズルズルすする、汚い格好のまま電車に乗る。\u003cbr\u003e\nex-：もとバックパッカー55ヶ国/1年4ヶ月、もと白い犬の飼主、もとバーテンダー、ル・クレジオとカズオ・イシグロのノーベル文学賞的中も宝くじ当たったことなし。\u003c/p\u003e\n\u003cp\u003e2019年から再開した山歩きの記録は、「山と渓谷オンライン」に350回ほどupしています。\u003cbr\u003e\n\u003ca href=\"https://www.yamakei-online.com/cl_history/?id=307097\" target=\"_blank\" rel=\"noopener noreferrer\"\u003ehttps://www.yamakei-online.com/cl_history/?id=307097\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e筆者の山行データ\u003cbr\u003e\n総距離 約7,104.6km（平均20.4km）累計349回\u003cbr\u003e\n累積標高差 上り約788,828m 下り約774,730m\u003cbr\u003e\nコースタイム 標準52,270分 自己28,637分 倍率0.55\u003cbr\u003e\n（山と渓谷オンラインから、2019年2月～2026年7月）\u003c/p\u003e","title":"プロフィール"},{"content":"かつて倉沢集落とヨコスズ尾根を繋いでいた旧径を歩く。これだけ酔狂な山歩きをしながら、今日まで個人の未踏だった。\nサインが多い植林の山中、「水色ビニテ」が行程の概略を案内してくれる。案内してくれてはいるのだが間が遠すぎ、「あのー、途中のルートを知りたいんですけど」が3回あった。\n項目 内容 記録日 2026年8月16日（日） 天候 曇り パーティ モンターニャ単独 アクセス 西東京バスで倉沢バス停 行程 コースタイム 記入中 コースマップ 総距離:- km 累積標高上り:- m 累積標高下り:- m 最高標高:- m 最低標高:- m 山行記録 記入中\n関連する筆者の山行記録 公開日 写真（右クリック→新しいタブ...で拡大します）＋詳細記録 ","permalink":"https://montagna-katokeyci.github.io/oohc/posts/2026-08-16/","summary":"\u003cp\u003eかつて倉沢集落とヨコスズ尾根を繋いでいた旧径を歩く。これだけ酔狂な山歩きをしながら、今日まで個人の未踏だった。\u003cbr\u003e\nサインが多い植林の山中、「水色ビニテ」が行程の概略を案内してくれる。案内してくれてはいるのだが間が遠すぎ、「あのー、途中のルートを知りたいんですけど」が3回あった。\u003c/p\u003e\n\u003chr\u003e\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth style=\"text-align: left\"\u003e項目\u003c/th\u003e\n\t\t\t\t\t\u003cth style=\"text-align: left\"\u003e内容\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e記録日\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e2026年8月16日（日）\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e天候\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e曇り\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003eパーティ\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003eモンターニャ単独\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003eアクセス\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e西東京バスで倉沢バス停\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e行程\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003chr\u003e\n\u003ch3 id=\"コースタイム\"\u003eコースタイム\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e記入中\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003ch3 id=\"コースマップ\"\u003eコースマップ\u003c/h3\u003e\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003clink rel=\"stylesheet\" href=\"https://unpkg.com/leaflet@1.9.4/dist/leaflet.css\" /\u003e\n\u003cstyle\u003e\n  .gpx-container {\n    width: 100%;\n    margin: 1.5rem 0;\n    border: 1px solid #ccc;\n    border-radius: 8px;\n    overflow: hidden;\n    background: #fff;\n    box-shadow: 0 2px 6px rgba(0,0,0,0.08);\n    font-family: sans-serif;\n  }\n  .gpx-map { height: 380px; width: 100%; }\n  \n   \n  .gpx-summary {\n    display: flex;\n    flex-wrap: nowrap;\n    justify-content: space-between;\n    align-items: center;\n    background: #f8f9fa;\n    padding: 8px 10px;\n    border-top: 1px solid #e0e0e0;\n    border-bottom: 1px solid #e0e0e0;\n    font-size: 0.8rem;\n    color: #333;\n    overflow-x: auto;\n    white-space: nowrap;\n  }\n  .gpx-summary-item {\n    margin: 0 4px;\n  }\n  .gpx-summary-item strong {\n    color: #007bff;\n    font-size: 0.95rem;\n    margin-left: 2px;\n  }\n\n  .gpx-chart-wrapper {\n    height: 180px;\n    width: 100%;\n    padding: 10px;\n    background: #fafafa;\n    box-sizing: border-box;\n  }\n\n   \n  .start-marker-icon, .goal-marker-icon {\n    background: none;\n    border: none;\n    font-weight: bold;\n    font-size: 11px;\n    color: #ffffff;\n    text-align: center;\n    line-height: 18px;\n  }\n\u003c/style\u003e\n\n\n\u003cdiv class=\"gpx-container\"\u003e\n  \u003cdiv id=\"map-83fc718b\" class=\"gpx-map\"\u003e\u003c/div\u003e\n  \u003cdiv id=\"summary-83fc718b\" class=\"gpx-summary\"\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e総距離:\u003cstrong id=\"sum-dist-83fc718b\"\u003e-\u003c/strong\u003e km\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e累積標高上り:\u003cstrong id=\"sum-up-83fc718b\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e累積標高下り:\u003cstrong id=\"sum-down-83fc718b\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e最高標高:\u003cstrong id=\"sum-max-83fc718b\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e最低標高:\u003cstrong id=\"sum-min-83fc718b\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n  \u003c/div\u003e\n  \u003cdiv class=\"gpx-chart-wrapper\"\u003e\n    \u003ccanvas id=\"chart-83fc718b\"\u003e\u003c/canvas\u003e\n  \u003c/div\u003e\n\u003c/div\u003e\n\n\n\u003cscript src=\"https://unpkg.com/leaflet@1.9.4/dist/leaflet.js\"\u003e\u003c/script\u003e\n\u003cscript src=\"https://cdnjs.cloudflare.com/ajax/libs/leaflet-gpx/1.7.0/gpx.min.js\"\u003e\u003c/script\u003e\n\u003cscript src=\"https://cdn.jsdelivr.net/npm/chart.js\"\u003e\u003c/script\u003e\n\n\u003cscript\u003e\nwindow.addEventListener('load', function() {\n  var gpxUrl = '\\/oohc\\/posts\\/2026-08-16\\/20260816_20260816.gpx';\n\n  \n  var map = L.map('map-83fc718b').setView([0, 0], 10);\n  L.tileLayer('https://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png', {\n    attribution: '\u003ca href=\"https://maps.gsi.go.jp/development/ichiran.html\" target=\"_blank\"\u003e国土地理院\u003c/a\u003e',\n    maxZoom: 18\n  }).addTo(map);\n\n  \n  L.control.scale({\n    imperial: false,\n    position: 'bottomleft'\n  }).addTo(map);\n\n  var hoverMarker = null;\n  var trackPoints = [];\n  var timeLabels = []; \n\n  \n  var ctx = document.getElementById('chart-83fc718b').getContext('2d');\n  var chart = new Chart(ctx, {\n    type: 'line',\n    data: {\n      datasets: [{\n        label: '標高 (m)',\n        data: [],\n        borderColor: '#007bff',\n        backgroundColor: 'rgba(0, 123, 255, 0.1)',\n        fill: true,\n        borderWidth: 1.5,\n        pointRadius: 0,\n        pointHoverRadius: 6,\n        tension: 0.1\n      }]\n    },\n    options: {\n      responsive: true,\n      maintainAspectRatio: false,\n      interaction: { mode: 'index', intersect: false },\n      plugins: {\n        legend: { display: false },\n        \n        tooltip: {\n          callbacks: {\n            title: function(items) {\n              var index = items[0].dataIndex;\n              var timeStr = timeLabels[index] || '';\n              var distStr = items[0].raw.x.toFixed(2) + ' km';\n              return timeStr ? '時刻: ' + timeStr + '（距離: ' + distStr + '）' : '距離: ' + distStr;\n            },\n            label: function(item) {\n              return '標高: ' + item.raw.y + ' m';\n            }\n          }\n        }\n      },\n      scales: {\n        x: {\n          type: 'linear', \n          display: true,\n          title: { display: true, text: '距離 (km)', font: { size: 10 } },\n          ticks: {\n            font: { size: 10 }\n          },\n          grid: { color: 'rgba(0, 0, 0, 0.05)' }\n        },\n        y: {\n          display: true,\n          title: { display: true, text: '標高 (m)', font: { size: 10 } },\n          ticks: { font: { size: 10 } },\n          grid: { color: 'rgba(0, 0, 0, 0.05)' }\n        }\n      },\n      \n      onHover: function(event, activeElements) {\n        if (activeElements \u0026\u0026 activeElements.length \u003e 0) {\n          var index = activeElements[0].index;\n          updateHoverMarker(index);\n        }\n      }\n    }\n  });\n\n  \n  function updateHoverMarker(index) {\n    var pt = trackPoints[index];\n    if (pt) {\n      if (!hoverMarker) {\n        hoverMarker = L.circleMarker([pt.lat, pt.lng], {\n          radius: 8,\n          fillColor: '#00ffff',\n          color: '#ffffff',\n          weight: 3,\n          opacity: 1,\n          fillOpacity: 1\n        }).addTo(map);\n      } else {\n        hoverMarker.setLatLng([pt.lat, pt.lng]);\n      }\n    }\n  }\n\n  \n  function extractTrackData(layer) {\n    var pts = [];\n    var polylines = [];\n\n    if (typeof layer.getLatLngs === 'function') {\n      var latlngs = layer.getLatLngs();\n      var flat = Array.isArray(latlngs[0]) ? latlngs.flat(Infinity) : latlngs;\n      flat.forEach(function(p) {\n        if (p \u0026\u0026 typeof p.lat === 'number') {\n          pts.push({ lat: p.lat, lng: p.lng });\n        }\n      });\n      if (layer instanceof L.Polyline) {\n        polylines.push(layer);\n      }\n    } else if (typeof layer.eachLayer === 'function') {\n      layer.eachLayer(function(child) {\n        var res = extractTrackData(child);\n        pts = pts.concat(res.pts);\n        polylines = polylines.concat(res.polylines);\n      });\n    }\n    return { pts: pts, polylines: polylines };\n  }\n\n  \n  fetch(gpxUrl)\n    .then(function(response) { return response.text(); })\n    .then(function(xmlText) {\n      var parser = new DOMParser();\n      var xmlDoc = parser.parseFromString(xmlText, \"text/xml\");\n      var trkpts = xmlDoc.getElementsByTagName(\"trkpt\");\n\n      for (var i = 0; i \u003c trkpts.length; i++) {\n        var timeNode = trkpts[i].getElementsByTagName(\"time\")[0];\n        if (timeNode) {\n          var dateObj = new Date(timeNode.textContent);\n          var timeStr = dateObj.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', hour12: false });\n          timeLabels.push(timeStr);\n        } else {\n          timeLabels.push('');\n        }\n      }\n    })\n    .catch(function(err) {\n      console.error(\"GPX Time Parsing Error:\", err);\n    });\n\n  \n  new L.GPX(gpxUrl, {\n    async: true,\n    polyline_options: { color: '#ff3300', weight: 5, opacity: 0.8 },\n    marker_options: { startIconUrl: null, endIconUrl: null, wptIconUrls: null }\n  }).on('loaded', function(e) {\n    var gpx = e.target;\n    map.fitBounds(gpx.getBounds());\n\n    \n    var totalDistMeters = gpx.get_distance();\n    var distKmNum = totalDistMeters / 1000;\n    var distKmStr = distKmNum.toFixed(2);\n    var maxEle = Math.round(gpx.get_elevation_max());\n    var minEle = Math.round(gpx.get_elevation_min());\n    var gainEle = Math.round(gpx.get_elevation_gain());\n    var lossEle = Math.round(gpx.get_elevation_loss());\n\n    document.getElementById('sum-dist-83fc718b').innerText = distKmStr;\n    document.getElementById('sum-up-83fc718b').innerText = gainEle;\n    document.getElementById('sum-down-83fc718b').innerText = lossEle;\n    document.getElementById('sum-max-83fc718b').innerText = maxEle;\n    document.getElementById('sum-min-83fc718b').innerText = minEle;\n\n    \n    var eleData = gpx.get_elevation_data();\n    var chartDataPoints = [];\n\n    var extracted = extractTrackData(gpx);\n    trackPoints = extracted.pts;\n\n    \n    if (trackPoints.length \u003e 0) {\n      var startPt = trackPoints[0];\n      var endPt = trackPoints[trackPoints.length - 1];\n\n      L.circleMarker([startPt.lat, startPt.lng], {\n        radius: 9,\n        fillColor: '#28a745',\n        color: '#ffffff',\n        weight: 2,\n        opacity: 1,\n        fillOpacity: 0.9\n      }).addTo(map).bindTooltip('スタート', { permanent: false, direction: 'top' });\n\n      L.circleMarker([endPt.lat, endPt.lng], {\n        radius: 9,\n        fillColor: '#dc3545',\n        color: '#ffffff',\n        weight: 2,\n        opacity: 1,\n        fillOpacity: 0.9\n      }).addTo(map).bindTooltip('ゴール', { permanent: false, direction: 'top' });\n    }\n\n    eleData.forEach(function(item) {\n      var dist = typeof item[0] === 'number' ? item[0] : parseFloat(item[0]);\n      var ele = Math.round(item[1]);\n      chartDataPoints.push({\n        x: parseFloat(dist.toFixed(2)),\n        y: ele\n      });\n    });\n\n    \n    var dynamicStepSize = 1.0;\n    if (distKmNum \u003c= 5) {\n      dynamicStepSize = 0.5;   \n    } else if (distKmNum \u003c= 20) {\n      dynamicStepSize = 1.0;   \n    } else if (distKmNum \u003c= 40) {\n      dynamicStepSize = 5.0;   \n    } else {\n      dynamicStepSize = 10.0;  \n    }\n\n    \n    chart.options.scales.x.max = distKmNum;\n\n    \n    var allowedTicks = [];\n    for (var v = 0; v \u003c distKmNum; v += dynamicStepSize) {\n      allowedTicks.push(parseFloat(v.toFixed(1)));\n    }\n    \n\n    \n    chart.options.scales.x.ticks.callback = function(value) {\n      for (var i = 0; i \u003c allowedTicks.length; i++) {\n        if (Math.abs(value - allowedTicks[i]) \u003c 0.01) {\n          return value + ' km';\n        }\n      }\n      \n      return '';\n    };\n\n    \n    chart.options.scales.x.afterBuildTicks = function(axis) {\n      axis.ticks = allowedTicks.map(function(val) {\n        return { value: val };\n      });\n    };\n\n    chart.data.datasets[0].data = chartDataPoints;\n    chart.update();\n\n    \n    extracted.polylines.forEach(function(polyline) {\n      polyline.on('mousemove', function(ev) {\n        if (!trackPoints.length) return;\n\n        var mouseLatLng = ev.latlng;\n        var closestIndex = 0;\n        var minDist = Infinity;\n\n        for (var i = 0; i \u003c trackPoints.length; i++) {\n          var d = mouseLatLng.distanceTo(L.latLng(trackPoints[i].lat, trackPoints[i].lng));\n          if (d \u003c minDist) {\n            minDist = d;\n            closestIndex = i;\n          }\n        }\n\n        updateHoverMarker(closestIndex);\n\n        chart.setActiveElements([{ datasetIndex: 0, index: closestIndex }]);\n        chart.tooltip.setActiveElements([{ datasetIndex: 0, index: closestIndex }], { x: 0, y: 0 });\n        chart.update();\n      });\n    });\n\n  }).addTo(map);\n});\n\u003c/script\u003e\n\u003chr\u003e\n\u003ch3 id=\"山行記録\"\u003e山行記録\u003c/h3\u003e\n\u003cp\u003e記入中\u003c/p\u003e","title":"倉沢からヨコスズ尾根"},{"content":"亀の歩みの5回目、なんとかコマ尾根まで回り込めた。ただし、赤ナギ窪を横断する前後でかなり標高を違えてしまう。渡った左岸で振り返っても、右岸に道はない。赤ナギ窪そのものが岩盤をさらしている状態なので、「かつて通っていたルート」の解明は非常に困難だろう。\n項目 内容 記録日 2026年8月11日（火） 天候 陽射しの届く薄曇り、風あり→午後風強し、湿気なし パーティ モンターニャ単独 アクセス 西東京バスで東日原バス停 行程 コースタイム 記入中* コースマップ 総距離:- km 累積標高上り:- m 累積標高下り:- m 最高標高:- m 最低標高:- m 山行記録 記入中です\n関連する筆者の山行記録 公開日 写真（右クリック→新しいタブ...で拡大します）＋詳細記録 ","permalink":"https://montagna-katokeyci.github.io/oohc/posts/2026-08-11/","summary":"\u003cp\u003e亀の歩みの5回目、なんとかコマ尾根まで回り込めた。ただし、赤ナギ窪を横断する前後でかなり標高を違えてしまう。渡った左岸で振り返っても、右岸に道はない。赤ナギ窪そのものが岩盤をさらしている状態なので、「かつて通っていたルート」の解明は非常に困難だろう。\u003c/p\u003e\n\u003chr\u003e\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth style=\"text-align: left\"\u003e項目\u003c/th\u003e\n\t\t\t\t\t\u003cth style=\"text-align: left\"\u003e内容\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e記録日\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e2026年8月11日（火）\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e天候\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e陽射しの届く薄曇り、風あり→午後風強し、湿気なし\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003eパーティ\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003eモンターニャ単独\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003eアクセス\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e西東京バスで東日原バス停\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e行程\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003chr\u003e\n\u003ch3 id=\"コースタイム\"\u003eコースタイム\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e記入中*\u003c/li\u003e\n\u003cli\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003ch3 id=\"コースマップ\"\u003eコースマップ\u003c/h3\u003e\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003clink rel=\"stylesheet\" href=\"https://unpkg.com/leaflet@1.9.4/dist/leaflet.css\" /\u003e\n\u003cstyle\u003e\n  .gpx-container {\n    width: 100%;\n    margin: 1.5rem 0;\n    border: 1px solid #ccc;\n    border-radius: 8px;\n    overflow: hidden;\n    background: #fff;\n    box-shadow: 0 2px 6px rgba(0,0,0,0.08);\n    font-family: sans-serif;\n  }\n  .gpx-map { height: 380px; width: 100%; }\n  \n   \n  .gpx-summary {\n    display: flex;\n    flex-wrap: nowrap;\n    justify-content: space-between;\n    align-items: center;\n    background: #f8f9fa;\n    padding: 8px 10px;\n    border-top: 1px solid #e0e0e0;\n    border-bottom: 1px solid #e0e0e0;\n    font-size: 0.8rem;\n    color: #333;\n    overflow-x: auto;\n    white-space: nowrap;\n  }\n  .gpx-summary-item {\n    margin: 0 4px;\n  }\n  .gpx-summary-item strong {\n    color: #007bff;\n    font-size: 0.95rem;\n    margin-left: 2px;\n  }\n\n  .gpx-chart-wrapper {\n    height: 180px;\n    width: 100%;\n    padding: 10px;\n    background: #fafafa;\n    box-sizing: border-box;\n  }\n\n   \n  .start-marker-icon, .goal-marker-icon {\n    background: none;\n    border: none;\n    font-weight: bold;\n    font-size: 11px;\n    color: #ffffff;\n    text-align: center;\n    line-height: 18px;\n  }\n\u003c/style\u003e\n\n\n\u003cdiv class=\"gpx-container\"\u003e\n  \u003cdiv id=\"map-67a2e86c\" class=\"gpx-map\"\u003e\u003c/div\u003e\n  \u003cdiv id=\"summary-67a2e86c\" class=\"gpx-summary\"\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e総距離:\u003cstrong id=\"sum-dist-67a2e86c\"\u003e-\u003c/strong\u003e km\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e累積標高上り:\u003cstrong id=\"sum-up-67a2e86c\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e累積標高下り:\u003cstrong id=\"sum-down-67a2e86c\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e最高標高:\u003cstrong id=\"sum-max-67a2e86c\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e最低標高:\u003cstrong id=\"sum-min-67a2e86c\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n  \u003c/div\u003e\n  \u003cdiv class=\"gpx-chart-wrapper\"\u003e\n    \u003ccanvas id=\"chart-67a2e86c\"\u003e\u003c/canvas\u003e\n  \u003c/div\u003e\n\u003c/div\u003e\n\n\n\u003cscript src=\"https://unpkg.com/leaflet@1.9.4/dist/leaflet.js\"\u003e\u003c/script\u003e\n\u003cscript src=\"https://cdnjs.cloudflare.com/ajax/libs/leaflet-gpx/1.7.0/gpx.min.js\"\u003e\u003c/script\u003e\n\u003cscript src=\"https://cdn.jsdelivr.net/npm/chart.js\"\u003e\u003c/script\u003e\n\n\u003cscript\u003e\nwindow.addEventListener('load', function() {\n  var gpxUrl = '\\/oohc\\/posts\\/2026-08-11\\/20260811_20260811.gpx';\n\n  \n  var map = L.map('map-67a2e86c').setView([0, 0], 10);\n  L.tileLayer('https://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png', {\n    attribution: '\u003ca href=\"https://maps.gsi.go.jp/development/ichiran.html\" target=\"_blank\"\u003e国土地理院\u003c/a\u003e',\n    maxZoom: 18\n  }).addTo(map);\n\n  \n  L.control.scale({\n    imperial: false,\n    position: 'bottomleft'\n  }).addTo(map);\n\n  var hoverMarker = null;\n  var trackPoints = [];\n  var timeLabels = []; \n\n  \n  var ctx = document.getElementById('chart-67a2e86c').getContext('2d');\n  var chart = new Chart(ctx, {\n    type: 'line',\n    data: {\n      datasets: [{\n        label: '標高 (m)',\n        data: [],\n        borderColor: '#007bff',\n        backgroundColor: 'rgba(0, 123, 255, 0.1)',\n        fill: true,\n        borderWidth: 1.5,\n        pointRadius: 0,\n        pointHoverRadius: 6,\n        tension: 0.1\n      }]\n    },\n    options: {\n      responsive: true,\n      maintainAspectRatio: false,\n      interaction: { mode: 'index', intersect: false },\n      plugins: {\n        legend: { display: false },\n        \n        tooltip: {\n          callbacks: {\n            title: function(items) {\n              var index = items[0].dataIndex;\n              var timeStr = timeLabels[index] || '';\n              var distStr = items[0].raw.x.toFixed(2) + ' km';\n              return timeStr ? '時刻: ' + timeStr + '（距離: ' + distStr + '）' : '距離: ' + distStr;\n            },\n            label: function(item) {\n              return '標高: ' + item.raw.y + ' m';\n            }\n          }\n        }\n      },\n      scales: {\n        x: {\n          type: 'linear', \n          display: true,\n          title: { display: true, text: '距離 (km)', font: { size: 10 } },\n          ticks: {\n            font: { size: 10 }\n          },\n          grid: { color: 'rgba(0, 0, 0, 0.05)' }\n        },\n        y: {\n          display: true,\n          title: { display: true, text: '標高 (m)', font: { size: 10 } },\n          ticks: { font: { size: 10 } },\n          grid: { color: 'rgba(0, 0, 0, 0.05)' }\n        }\n      },\n      \n      onHover: function(event, activeElements) {\n        if (activeElements \u0026\u0026 activeElements.length \u003e 0) {\n          var index = activeElements[0].index;\n          updateHoverMarker(index);\n        }\n      }\n    }\n  });\n\n  \n  function updateHoverMarker(index) {\n    var pt = trackPoints[index];\n    if (pt) {\n      if (!hoverMarker) {\n        hoverMarker = L.circleMarker([pt.lat, pt.lng], {\n          radius: 8,\n          fillColor: '#00ffff',\n          color: '#ffffff',\n          weight: 3,\n          opacity: 1,\n          fillOpacity: 1\n        }).addTo(map);\n      } else {\n        hoverMarker.setLatLng([pt.lat, pt.lng]);\n      }\n    }\n  }\n\n  \n  function extractTrackData(layer) {\n    var pts = [];\n    var polylines = [];\n\n    if (typeof layer.getLatLngs === 'function') {\n      var latlngs = layer.getLatLngs();\n      var flat = Array.isArray(latlngs[0]) ? latlngs.flat(Infinity) : latlngs;\n      flat.forEach(function(p) {\n        if (p \u0026\u0026 typeof p.lat === 'number') {\n          pts.push({ lat: p.lat, lng: p.lng });\n        }\n      });\n      if (layer instanceof L.Polyline) {\n        polylines.push(layer);\n      }\n    } else if (typeof layer.eachLayer === 'function') {\n      layer.eachLayer(function(child) {\n        var res = extractTrackData(child);\n        pts = pts.concat(res.pts);\n        polylines = polylines.concat(res.polylines);\n      });\n    }\n    return { pts: pts, polylines: polylines };\n  }\n\n  \n  fetch(gpxUrl)\n    .then(function(response) { return response.text(); })\n    .then(function(xmlText) {\n      var parser = new DOMParser();\n      var xmlDoc = parser.parseFromString(xmlText, \"text/xml\");\n      var trkpts = xmlDoc.getElementsByTagName(\"trkpt\");\n\n      for (var i = 0; i \u003c trkpts.length; i++) {\n        var timeNode = trkpts[i].getElementsByTagName(\"time\")[0];\n        if (timeNode) {\n          var dateObj = new Date(timeNode.textContent);\n          var timeStr = dateObj.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', hour12: false });\n          timeLabels.push(timeStr);\n        } else {\n          timeLabels.push('');\n        }\n      }\n    })\n    .catch(function(err) {\n      console.error(\"GPX Time Parsing Error:\", err);\n    });\n\n  \n  new L.GPX(gpxUrl, {\n    async: true,\n    polyline_options: { color: '#ff3300', weight: 5, opacity: 0.8 },\n    marker_options: { startIconUrl: null, endIconUrl: null, wptIconUrls: null }\n  }).on('loaded', function(e) {\n    var gpx = e.target;\n    map.fitBounds(gpx.getBounds());\n\n    \n    var totalDistMeters = gpx.get_distance();\n    var distKmNum = totalDistMeters / 1000;\n    var distKmStr = distKmNum.toFixed(2);\n    var maxEle = Math.round(gpx.get_elevation_max());\n    var minEle = Math.round(gpx.get_elevation_min());\n    var gainEle = Math.round(gpx.get_elevation_gain());\n    var lossEle = Math.round(gpx.get_elevation_loss());\n\n    document.getElementById('sum-dist-67a2e86c').innerText = distKmStr;\n    document.getElementById('sum-up-67a2e86c').innerText = gainEle;\n    document.getElementById('sum-down-67a2e86c').innerText = lossEle;\n    document.getElementById('sum-max-67a2e86c').innerText = maxEle;\n    document.getElementById('sum-min-67a2e86c').innerText = minEle;\n\n    \n    var eleData = gpx.get_elevation_data();\n    var chartDataPoints = [];\n\n    var extracted = extractTrackData(gpx);\n    trackPoints = extracted.pts;\n\n    \n    if (trackPoints.length \u003e 0) {\n      var startPt = trackPoints[0];\n      var endPt = trackPoints[trackPoints.length - 1];\n\n      L.circleMarker([startPt.lat, startPt.lng], {\n        radius: 9,\n        fillColor: '#28a745',\n        color: '#ffffff',\n        weight: 2,\n        opacity: 1,\n        fillOpacity: 0.9\n      }).addTo(map).bindTooltip('スタート', { permanent: false, direction: 'top' });\n\n      L.circleMarker([endPt.lat, endPt.lng], {\n        radius: 9,\n        fillColor: '#dc3545',\n        color: '#ffffff',\n        weight: 2,\n        opacity: 1,\n        fillOpacity: 0.9\n      }).addTo(map).bindTooltip('ゴール', { permanent: false, direction: 'top' });\n    }\n\n    eleData.forEach(function(item) {\n      var dist = typeof item[0] === 'number' ? item[0] : parseFloat(item[0]);\n      var ele = Math.round(item[1]);\n      chartDataPoints.push({\n        x: parseFloat(dist.toFixed(2)),\n        y: ele\n      });\n    });\n\n    \n    var dynamicStepSize = 1.0;\n    if (distKmNum \u003c= 5) {\n      dynamicStepSize = 0.5;   \n    } else if (distKmNum \u003c= 20) {\n      dynamicStepSize = 1.0;   \n    } else if (distKmNum \u003c= 40) {\n      dynamicStepSize = 5.0;   \n    } else {\n      dynamicStepSize = 10.0;  \n    }\n\n    \n    chart.options.scales.x.max = distKmNum;\n\n    \n    var allowedTicks = [];\n    for (var v = 0; v \u003c distKmNum; v += dynamicStepSize) {\n      allowedTicks.push(parseFloat(v.toFixed(1)));\n    }\n    \n\n    \n    chart.options.scales.x.ticks.callback = function(value) {\n      for (var i = 0; i \u003c allowedTicks.length; i++) {\n        if (Math.abs(value - allowedTicks[i]) \u003c 0.01) {\n          return value + ' km';\n        }\n      }\n      \n      return '';\n    };\n\n    \n    chart.options.scales.x.afterBuildTicks = function(axis) {\n      axis.ticks = allowedTicks.map(function(val) {\n        return { value: val };\n      });\n    };\n\n    chart.data.datasets[0].data = chartDataPoints;\n    chart.update();\n\n    \n    extracted.polylines.forEach(function(polyline) {\n      polyline.on('mousemove', function(ev) {\n        if (!trackPoints.length) return;\n\n        var mouseLatLng = ev.latlng;\n        var closestIndex = 0;\n        var minDist = Infinity;\n\n        for (var i = 0; i \u003c trackPoints.length; i++) {\n          var d = mouseLatLng.distanceTo(L.latLng(trackPoints[i].lat, trackPoints[i].lng));\n          if (d \u003c minDist) {\n            minDist = d;\n            closestIndex = i;\n          }\n        }\n\n        updateHoverMarker(closestIndex);\n\n        chart.setActiveElements([{ datasetIndex: 0, index: closestIndex }]);\n        chart.tooltip.setActiveElements([{ datasetIndex: 0, index: closestIndex }], { x: 0, y: 0 });\n        chart.update();\n      });\n    });\n\n  }).addTo(map);\n});\n\u003c/script\u003e\n\u003chr\u003e\n\u003ch3 id=\"山行記録\"\u003e山行記録\u003c/h3\u003e\n\u003cp\u003e記入中です\u003c/p\u003e","title":"Part 5 : 日原川下流右岸中段道"},{"content":"日向沢林道を終点まで歩いたが、踊平のトンネルから終点まで、すでに道の体をなしていない。前週の疲れが残り、「息抜きの山歩き」コースを選んだつもりが。やたらと汗をかき、激しく疲労した。ここ2年のなかではいちばんの疲れ具合で、熱中症にならぬよう、マリアさまに祈りながらフラフラ歩いた。\n項目 内容 記録日 2026年8月2日（日） 天候 雲量多い晴れ→曇り、弱い風あり パーティ モンターニャ単独 アクセス 西東京バスて川乗橋バス停 行程 コースタイム 08:00～川乗橋バス停スタート 08:27～川乗山登山口（細倉橋） 09:19～林道分岐（林道川乗線・林道日向沢線） 09:29～川乗林道終点付近～09:54 記入中 コースマップ 総距離:- km 累積標高上り:- m 累積標高下り:- m 最高標高:- m 最低標高:- m 山行記録 記入中です\n関連する筆者の山行記録 公開日 写真（右クリック→新しいタブ...で拡大します）＋詳細記録 ","permalink":"https://montagna-katokeyci.github.io/oohc/posts/2026-08-02/","summary":"\u003cp\u003e日向沢林道を終点まで歩いたが、踊平のトンネルから終点まで、すでに道の体をなしていない。前週の疲れが残り、「息抜きの山歩き」コースを選んだつもりが。やたらと汗をかき、激しく疲労した。ここ2年のなかではいちばんの疲れ具合で、熱中症にならぬよう、マリアさまに祈りながらフラフラ歩いた。\u003c/p\u003e\n\u003chr\u003e\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth style=\"text-align: left\"\u003e項目\u003c/th\u003e\n\t\t\t\t\t\u003cth style=\"text-align: left\"\u003e内容\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e記録日\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e2026年8月2日（日）\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e天候\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e雲量多い晴れ→曇り、弱い風あり\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003eパーティ\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003eモンターニャ単独\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003eアクセス\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e西東京バスて川乗橋バス停\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e行程\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003chr\u003e\n\u003ch3 id=\"コースタイム\"\u003eコースタイム\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e08:00～川乗橋バス停スタート\u003c/li\u003e\n\u003cli\u003e08:27～川乗山登山口（細倉橋）\u003c/li\u003e\n\u003cli\u003e09:19～林道分岐（林道川乗線・林道日向沢線）\u003c/li\u003e\n\u003cli\u003e09:29～川乗林道終点付近～09:54\u003c/li\u003e\n\u003cli\u003e記入中\u003c/li\u003e\n\u003cli\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003ch3 id=\"コースマップ\"\u003eコースマップ\u003c/h3\u003e\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003clink rel=\"stylesheet\" href=\"https://unpkg.com/leaflet@1.9.4/dist/leaflet.css\" /\u003e\n\u003cstyle\u003e\n  .gpx-container {\n    width: 100%;\n    margin: 1.5rem 0;\n    border: 1px solid #ccc;\n    border-radius: 8px;\n    overflow: hidden;\n    background: #fff;\n    box-shadow: 0 2px 6px rgba(0,0,0,0.08);\n    font-family: sans-serif;\n  }\n  .gpx-map { height: 380px; width: 100%; }\n  \n   \n  .gpx-summary {\n    display: flex;\n    flex-wrap: nowrap;\n    justify-content: space-between;\n    align-items: center;\n    background: #f8f9fa;\n    padding: 8px 10px;\n    border-top: 1px solid #e0e0e0;\n    border-bottom: 1px solid #e0e0e0;\n    font-size: 0.8rem;\n    color: #333;\n    overflow-x: auto;\n    white-space: nowrap;\n  }\n  .gpx-summary-item {\n    margin: 0 4px;\n  }\n  .gpx-summary-item strong {\n    color: #007bff;\n    font-size: 0.95rem;\n    margin-left: 2px;\n  }\n\n  .gpx-chart-wrapper {\n    height: 180px;\n    width: 100%;\n    padding: 10px;\n    background: #fafafa;\n    box-sizing: border-box;\n  }\n\n   \n  .start-marker-icon, .goal-marker-icon {\n    background: none;\n    border: none;\n    font-weight: bold;\n    font-size: 11px;\n    color: #ffffff;\n    text-align: center;\n    line-height: 18px;\n  }\n\u003c/style\u003e\n\n\n\u003cdiv class=\"gpx-container\"\u003e\n  \u003cdiv id=\"map-7a6a14db\" class=\"gpx-map\"\u003e\u003c/div\u003e\n  \u003cdiv id=\"summary-7a6a14db\" class=\"gpx-summary\"\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e総距離:\u003cstrong id=\"sum-dist-7a6a14db\"\u003e-\u003c/strong\u003e km\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e累積標高上り:\u003cstrong id=\"sum-up-7a6a14db\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e累積標高下り:\u003cstrong id=\"sum-down-7a6a14db\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e最高標高:\u003cstrong id=\"sum-max-7a6a14db\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e最低標高:\u003cstrong id=\"sum-min-7a6a14db\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n  \u003c/div\u003e\n  \u003cdiv class=\"gpx-chart-wrapper\"\u003e\n    \u003ccanvas id=\"chart-7a6a14db\"\u003e\u003c/canvas\u003e\n  \u003c/div\u003e\n\u003c/div\u003e\n\n\n\u003cscript src=\"https://unpkg.com/leaflet@1.9.4/dist/leaflet.js\"\u003e\u003c/script\u003e\n\u003cscript src=\"https://cdnjs.cloudflare.com/ajax/libs/leaflet-gpx/1.7.0/gpx.min.js\"\u003e\u003c/script\u003e\n\u003cscript src=\"https://cdn.jsdelivr.net/npm/chart.js\"\u003e\u003c/script\u003e\n\n\u003cscript\u003e\nwindow.addEventListener('load', function() {\n  var gpxUrl = '\\/oohc\\/posts\\/2026-08-02\\/20260802_20260802.gpx';\n\n  \n  var map = L.map('map-7a6a14db').setView([0, 0], 10);\n  L.tileLayer('https://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png', {\n    attribution: '\u003ca href=\"https://maps.gsi.go.jp/development/ichiran.html\" target=\"_blank\"\u003e国土地理院\u003c/a\u003e',\n    maxZoom: 18\n  }).addTo(map);\n\n  \n  L.control.scale({\n    imperial: false,\n    position: 'bottomleft'\n  }).addTo(map);\n\n  var hoverMarker = null;\n  var trackPoints = [];\n  var timeLabels = []; \n\n  \n  var ctx = document.getElementById('chart-7a6a14db').getContext('2d');\n  var chart = new Chart(ctx, {\n    type: 'line',\n    data: {\n      datasets: [{\n        label: '標高 (m)',\n        data: [],\n        borderColor: '#007bff',\n        backgroundColor: 'rgba(0, 123, 255, 0.1)',\n        fill: true,\n        borderWidth: 1.5,\n        pointRadius: 0,\n        pointHoverRadius: 6,\n        tension: 0.1\n      }]\n    },\n    options: {\n      responsive: true,\n      maintainAspectRatio: false,\n      interaction: { mode: 'index', intersect: false },\n      plugins: {\n        legend: { display: false },\n        \n        tooltip: {\n          callbacks: {\n            title: function(items) {\n              var index = items[0].dataIndex;\n              var timeStr = timeLabels[index] || '';\n              var distStr = items[0].raw.x.toFixed(2) + ' km';\n              return timeStr ? '時刻: ' + timeStr + '（距離: ' + distStr + '）' : '距離: ' + distStr;\n            },\n            label: function(item) {\n              return '標高: ' + item.raw.y + ' m';\n            }\n          }\n        }\n      },\n      scales: {\n        x: {\n          type: 'linear', \n          display: true,\n          title: { display: true, text: '距離 (km)', font: { size: 10 } },\n          ticks: {\n            font: { size: 10 }\n          },\n          grid: { color: 'rgba(0, 0, 0, 0.05)' }\n        },\n        y: {\n          display: true,\n          title: { display: true, text: '標高 (m)', font: { size: 10 } },\n          ticks: { font: { size: 10 } },\n          grid: { color: 'rgba(0, 0, 0, 0.05)' }\n        }\n      },\n      \n      onHover: function(event, activeElements) {\n        if (activeElements \u0026\u0026 activeElements.length \u003e 0) {\n          var index = activeElements[0].index;\n          updateHoverMarker(index);\n        }\n      }\n    }\n  });\n\n  \n  function updateHoverMarker(index) {\n    var pt = trackPoints[index];\n    if (pt) {\n      if (!hoverMarker) {\n        hoverMarker = L.circleMarker([pt.lat, pt.lng], {\n          radius: 8,\n          fillColor: '#00ffff',\n          color: '#ffffff',\n          weight: 3,\n          opacity: 1,\n          fillOpacity: 1\n        }).addTo(map);\n      } else {\n        hoverMarker.setLatLng([pt.lat, pt.lng]);\n      }\n    }\n  }\n\n  \n  function extractTrackData(layer) {\n    var pts = [];\n    var polylines = [];\n\n    if (typeof layer.getLatLngs === 'function') {\n      var latlngs = layer.getLatLngs();\n      var flat = Array.isArray(latlngs[0]) ? latlngs.flat(Infinity) : latlngs;\n      flat.forEach(function(p) {\n        if (p \u0026\u0026 typeof p.lat === 'number') {\n          pts.push({ lat: p.lat, lng: p.lng });\n        }\n      });\n      if (layer instanceof L.Polyline) {\n        polylines.push(layer);\n      }\n    } else if (typeof layer.eachLayer === 'function') {\n      layer.eachLayer(function(child) {\n        var res = extractTrackData(child);\n        pts = pts.concat(res.pts);\n        polylines = polylines.concat(res.polylines);\n      });\n    }\n    return { pts: pts, polylines: polylines };\n  }\n\n  \n  fetch(gpxUrl)\n    .then(function(response) { return response.text(); })\n    .then(function(xmlText) {\n      var parser = new DOMParser();\n      var xmlDoc = parser.parseFromString(xmlText, \"text/xml\");\n      var trkpts = xmlDoc.getElementsByTagName(\"trkpt\");\n\n      for (var i = 0; i \u003c trkpts.length; i++) {\n        var timeNode = trkpts[i].getElementsByTagName(\"time\")[0];\n        if (timeNode) {\n          var dateObj = new Date(timeNode.textContent);\n          var timeStr = dateObj.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', hour12: false });\n          timeLabels.push(timeStr);\n        } else {\n          timeLabels.push('');\n        }\n      }\n    })\n    .catch(function(err) {\n      console.error(\"GPX Time Parsing Error:\", err);\n    });\n\n  \n  new L.GPX(gpxUrl, {\n    async: true,\n    polyline_options: { color: '#ff3300', weight: 5, opacity: 0.8 },\n    marker_options: { startIconUrl: null, endIconUrl: null, wptIconUrls: null }\n  }).on('loaded', function(e) {\n    var gpx = e.target;\n    map.fitBounds(gpx.getBounds());\n\n    \n    var totalDistMeters = gpx.get_distance();\n    var distKmNum = totalDistMeters / 1000;\n    var distKmStr = distKmNum.toFixed(2);\n    var maxEle = Math.round(gpx.get_elevation_max());\n    var minEle = Math.round(gpx.get_elevation_min());\n    var gainEle = Math.round(gpx.get_elevation_gain());\n    var lossEle = Math.round(gpx.get_elevation_loss());\n\n    document.getElementById('sum-dist-7a6a14db').innerText = distKmStr;\n    document.getElementById('sum-up-7a6a14db').innerText = gainEle;\n    document.getElementById('sum-down-7a6a14db').innerText = lossEle;\n    document.getElementById('sum-max-7a6a14db').innerText = maxEle;\n    document.getElementById('sum-min-7a6a14db').innerText = minEle;\n\n    \n    var eleData = gpx.get_elevation_data();\n    var chartDataPoints = [];\n\n    var extracted = extractTrackData(gpx);\n    trackPoints = extracted.pts;\n\n    \n    if (trackPoints.length \u003e 0) {\n      var startPt = trackPoints[0];\n      var endPt = trackPoints[trackPoints.length - 1];\n\n      L.circleMarker([startPt.lat, startPt.lng], {\n        radius: 9,\n        fillColor: '#28a745',\n        color: '#ffffff',\n        weight: 2,\n        opacity: 1,\n        fillOpacity: 0.9\n      }).addTo(map).bindTooltip('スタート', { permanent: false, direction: 'top' });\n\n      L.circleMarker([endPt.lat, endPt.lng], {\n        radius: 9,\n        fillColor: '#dc3545',\n        color: '#ffffff',\n        weight: 2,\n        opacity: 1,\n        fillOpacity: 0.9\n      }).addTo(map).bindTooltip('ゴール', { permanent: false, direction: 'top' });\n    }\n\n    eleData.forEach(function(item) {\n      var dist = typeof item[0] === 'number' ? item[0] : parseFloat(item[0]);\n      var ele = Math.round(item[1]);\n      chartDataPoints.push({\n        x: parseFloat(dist.toFixed(2)),\n        y: ele\n      });\n    });\n\n    \n    var dynamicStepSize = 1.0;\n    if (distKmNum \u003c= 5) {\n      dynamicStepSize = 0.5;   \n    } else if (distKmNum \u003c= 20) {\n      dynamicStepSize = 1.0;   \n    } else if (distKmNum \u003c= 40) {\n      dynamicStepSize = 5.0;   \n    } else {\n      dynamicStepSize = 10.0;  \n    }\n\n    \n    chart.options.scales.x.max = distKmNum;\n\n    \n    var allowedTicks = [];\n    for (var v = 0; v \u003c distKmNum; v += dynamicStepSize) {\n      allowedTicks.push(parseFloat(v.toFixed(1)));\n    }\n    \n\n    \n    chart.options.scales.x.ticks.callback = function(value) {\n      for (var i = 0; i \u003c allowedTicks.length; i++) {\n        if (Math.abs(value - allowedTicks[i]) \u003c 0.01) {\n          return value + ' km';\n        }\n      }\n      \n      return '';\n    };\n\n    \n    chart.options.scales.x.afterBuildTicks = function(axis) {\n      axis.ticks = allowedTicks.map(function(val) {\n        return { value: val };\n      });\n    };\n\n    chart.data.datasets[0].data = chartDataPoints;\n    chart.update();\n\n    \n    extracted.polylines.forEach(function(polyline) {\n      polyline.on('mousemove', function(ev) {\n        if (!trackPoints.length) return;\n\n        var mouseLatLng = ev.latlng;\n        var closestIndex = 0;\n        var minDist = Infinity;\n\n        for (var i = 0; i \u003c trackPoints.length; i++) {\n          var d = mouseLatLng.distanceTo(L.latLng(trackPoints[i].lat, trackPoints[i].lng));\n          if (d \u003c minDist) {\n            minDist = d;\n            closestIndex = i;\n          }\n        }\n\n        updateHoverMarker(closestIndex);\n\n        chart.setActiveElements([{ datasetIndex: 0, index: closestIndex }]);\n        chart.tooltip.setActiveElements([{ datasetIndex: 0, index: closestIndex }], { x: 0, y: 0 });\n        chart.update();\n      });\n    });\n\n  }).addTo(map);\n});\n\u003c/script\u003e\n\u003chr\u003e\n\u003ch3 id=\"山行記録\"\u003e山行記録\u003c/h3\u003e\n\u003cp\u003e記入中です\u003c/p\u003e","title":"日向沢林道"},{"content":"年に一度の北アルプス詣で、毎度おなじコース、６回目。\n今年もなんとかジャンダルム周回コースを歩き通せた。天気予報が悪いほうにハズれてジャンダルムへ向かう途中から濃いガス、奥穂の手前から小雨が降りだし、吊り尾根では雷鳴が轟き稲妻が光る悪天候になってしまった。前穂に上がるのを断念し、岩も鎖もツルツルすべる吊り尾根と重太郎新道を逃げるように下った。\n項目 内容 記録日 2026年7月26日（日） 天候 晴れ→曇り→ガスと小雨と雷→ときに本降り パーティ モンターニャ単独 アクセス 前日7月25日、新宿駅10:00（あずさ13号）～12:37松本駅13:29（アルピコ交通上高地線）～13:59新島々駅14:10（アルピコ交通バス）～15:15上高地バスターミナル、西糸屋山荘大部屋宿泊。当日26日、上高地バスターミナル17:15～18:20新島々駅18:41～19:10松本駅20:10（あずさ60号）～22:45新宿駅 ※アルピコ交通バスは予約制 行程 西穂登山口（上高地田代橋）、西穂山荘、西穂高岳、天狗岳、ジャンダルム、奥穂高岳、吊尾根、紀美子平、重太郎新道、河童橋 コースタイム 01:34〜西糸屋山荘スタート 01:49〜田代橋 西穂高岳登山口〜01:52 03:19〜西穂山荘〜03:24 05:09〜西穂高岳 05:19〜（P1）〜05:34 05:58〜（間ノ岳手前のピーク）〜06:09 07:13〜天狗の頭〜07:17 08:38〜ジャンダルム〜08:44 09:54〜奥穂高岳〜10:17 11:38〜紀美子平 13:25ごろ〜岳沢小屋付近 14:52〜河童橋フィニッシュ コースマップ 総距離:- km 累積標高上り:- m 累積標高下り:- m 最高標高:- m 最低標高:- m 山行記録 西穂高岳～奥穂高岳の稜線の難しさ 筆者の登山スタイルが「アルパインではなくもっぱら（オフトレイル）ハイキング」である点に留意してお読みいただきたい。\n西穂から奥穂までのコースタイムを「8時間から10時間」とする記事や記録を見かけるが、危なっかしい記述だなあ、と思っている。\n「西穂山荘に泊まって翌朝は早出すれば穂高岳山荘に着ける」と読み取る人は多いだろうし、じっさい山行記録にも「無事に」8時間で歩きとおせた記録がupされる。\n1.ふだんのコースタイムが70%を上回るようなら、本ルートに取り組むにあたって体力面で不安がある。\n2.岩と向き合い下降する（「クライムダウン」）難度の高い技術が求められる。\n3.ルートを外せばリスクが一気に跳ね上がる。日頃から「自らルートを探し求める山行」に取り組んでいるかが問われる。\n以上が、このルートを概観したときの要点になると筆者は考えている。\nもし、西穂～奥穂の稜線にチャレンジする下調べでこの記事にたどりついたなら、下記の「関連する筆者の山行記録」から2025年の記録を参照してほしい。ひっくるめてまとめてあると思う。\n2026年のジャンダルム周回を振り返る 登山口から西穂山荘まで自己最速で上がっており、その時点では「よし、やれるな」と手応えを感じていた。しかし、西穂を過ぎたP1から追いかけられたw　追いすがる3人パーティを責めるのは筋違いで、この稜線がはじめてなら筆者もそうしただろう。苦手な熊鈴の音をチリンチリンと聞かされ続け、無数の悪場を「ちゃんと通過できそうか」と振り返り、自分のリズムを失った。\n天狗の頭を通過したあと、ガスで濡れた岩で足をすべらせ神経質になった。3L担いだ水は、1Lも消費していない。アミノバイタル3包は手付かず。 一日を振り返り、なにかちぐはぐな印象で終わってしまったのは残念だった。技術的には、教科書の少ない（ほとんどない）「クライムダウン」に慣れる必要がある、と痛烈に感じた。\nメモ 山行を終え、どこで夕食をとるかが毎年の課題になっている。\nアルピコ交通の松本駅着が19時10分、最終の「あずさ」の発車時刻は20時10分。「北アルプスの玄関口」松本駅なら1時間あれば十分なはずだが、これといった店が見つからない。\n今年は、いままで見落としていた駅近くのラーメン店「おおぼし」に目をつけ、行きの昼食に立ち寄った。席の間隔が広めで、荷物の多い登山者でも気兼ねなく利用できる。味はまあまあ。帰りにも寄ることにして、課題をひとつクリアしたつもりだったのだが。\n19時13分に、8割がた席の埋まった店に入る。最終のあずさに乗ることを告げると、「いま混んでいるので」と断られてしまった。\n前日の入店時に気にはなっていたのだが、ラーメンはなぜか2杯ずつしかキッチンから出てこない。なのにホールには二人いる。レビューを散々眺めて気づくのは、松本駅周辺の飲食店は「着席の案内まで待ち時間が長い、料理の提供が遅い」悪評がついてまわっていること。これまで利用していた餃子のチェーン店は、ラーメンと餃子を完食できずに席を立っていた。 残念ながら、「おおぼし」も松本基準のサービスの店のようだ。\n駅前には全国チェーンの「M屋」もあることはある。しかし筆者の舌では人間が食べるものの 味がしないので、利用しないことにしている。 コンビニのカップ麺にポットから湯を注いで今回の夕食を終えた。「松本駅の夕食難民」が住処を見つけられるのは、いつだろう。\n関連する筆者の山行記録 2025年、自己コースタイム最速\nhttps://www.yamakei-online.com/cl_record/detail.php?id=320791\n2023年、自己コースタイム最悪\nhttps://www.yamakei-online.com/cl_record/detail.php?id=277101\n2022年、天狗のコルの墜落死亡事故直後に通過する\nhttps://www.yamakei-online.com/cl_record/detail.php?id=249980\n2021年、はじめて前穂に上がり完全周回\nhttps://www.yamakei-online.com/cl_record/detail.php?id=226302\n2020年、大雨で槍ヶ岳に変更、高山病と低体温症にかかる\nhttps://www.yamakei-online.com/cl_record/detail.php?id=195886\n2019年、初の周回チャレンジ、参考にすると遭難しますw\nhttps://www.yamakei-online.com/cl_record/detail.php?id=167616\n公開日 20260928\n写真（右クリック→新しいタブ...で拡大します）＋詳細記録 （21:44・写真1） 前日のWindyから、ECMWFが最上段、気象庁のMSMは最下段。ともに頼りにしている。\n重太郎新道で降られる覚悟はしていたが、09時から降られてしまった。 （13:08・写真2） かなり入念にリサーチして当たりをつけたラーメン店「おおぼし」。駅から最短距離の飲食店。前日土曜に利用し、席の間隔が広く・小型のザックなら入れられる荷物置き（カゴ）がカウンターの各席にあって、好印象だったのだが。 （17:18・写真3） クマとの遭遇の注意書きが、ここでも増えた。宿泊先の西糸屋山荘にて。 （17:22・写真4） 西糸屋山荘の外観。設備は古めだけれど、清潔でリーズナブルな料金で宿泊できる。 （01:49・写真5） 田代橋ちかくの西穂登山口をスタートする。 （03:20・写真6） 西穂山荘前からテント場。高山の朝は早い。 （04:11・写真7） 西穂独標から東方向を撮ったと思う。明るくなり始めた空に黒い雲を見て不穏を嗅ぎとったが、当たってしまった。 （05:17・写真8） 通過した西穂高岳をP1から振り返る。朝食休憩。 （05:41・写真9） 赤岩岳へ続く進路。 （06:28・写真10） 間ノ岳へのガレ場の登り。 （06:45・写真11） 間ノ岳と天狗ノ頭の鞍部、間天のコルへの下りを振り返る。\n「途中で終わるクサリ」が撤去されていたと思うが、記憶違いかな？ （06:50・写真12） 天狗ノ頭を撮ったはず。 （06:58・写真13） 天狗ノ頭への登り、逆層スラブ。 （08:40・写真14） 1時間40分とばして（笑、ジャンダルム。道中で足をすべらせ、ナーバスになっている。 （09:11・写真15） ロバの耳を巻くあたり。 （09:19・写真16） ジャンダルム・ロバの耳から、鞍部への下りを振り返って。クサリはあるにせよ、回りこみながらの下降はルート上でいちばん嫌だと感じる。 （09:31・写真17） 馬の背。対照的に、足の置き場がハッキリして問題なし。 （09:49・写真18） 奥穂高岳に着く。 （09:51・写真19） お「寒いし滑るしゴロゴロ鳴るしで、おじさんは怖気づいた。前穂はあきらめるから、下降路の安全は確保してくれるようにマリアさまにお願いしといて。既読がつくまで、だぞ？」\nオ「…………」 （09:55・写真20） 宿の弁当の残り半分を食べる。見えないし小雨だし雷だしwww （11:38・写真21） いつも賑わう紀美子平が無人。 （12:18・写真22） 重太郎新道を傘を差して下降する。\nお「既読ついた？」\nオ「…………」 （12:30・写真23） 岳沢小屋へ向かう下り道は、少人数のパーティがダンゴになって濡れながら下っている。最後尾に遭対協のメンバーさんがいる安心感。\nお「マリアさまは遭対協をつけてくれたか。年寄りに優しいなあ」\nオ「…………」 （14:52・写真24） 上高地でも降った様子。宿に預けた荷物を取りに戻り、インフォメーションセンターのシャワーをはじめて使わせてもらった。 ","permalink":"https://montagna-katokeyci.github.io/oohc/posts/2026-07-26/","summary":"\u003cp\u003e年に一度の北アルプス詣で、毎度おなじコース、６回目。\u003cbr\u003e\n今年もなんとかジャンダルム周回コースを歩き通せた。天気予報が悪いほうにハズれてジャンダルムへ向かう途中から濃いガス、奥穂の手前から小雨が降りだし、吊り尾根では雷鳴が轟き稲妻が光る悪天候になってしまった。前穂に上がるのを断念し、岩も鎖もツルツルすべる吊り尾根と重太郎新道を逃げるように下った。\u003c/p\u003e\n\u003chr\u003e\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth style=\"text-align: left\"\u003e項目\u003c/th\u003e\n\t\t\t\t\t\u003cth style=\"text-align: left\"\u003e内容\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e記録日\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e2026年7月26日（日）\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e天候\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e晴れ→曇り→ガスと小雨と雷→ときに本降り\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003eパーティ\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003eモンターニャ単独\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003eアクセス\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e前日7月25日、新宿駅10:00（あずさ13号）～12:37松本駅13:29（アルピコ交通上高地線）～13:59新島々駅14:10（アルピコ交通バス）～15:15上高地バスターミナル、西糸屋山荘大部屋宿泊。当日26日、上高地バスターミナル17:15～18:20新島々駅18:41～19:10松本駅20:10（あずさ60号）～22:45新宿駅 ※アルピコ交通バスは予約制\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e行程\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e西穂登山口（上高地田代橋）、西穂山荘、西穂高岳、天狗岳、ジャンダルム、奥穂高岳、吊尾根、紀美子平、重太郎新道、河童橋\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003chr\u003e\n\u003ch3 id=\"コースタイム\"\u003eコースタイム\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e01:34〜西糸屋山荘スタート\u003c/li\u003e\n\u003cli\u003e01:49〜田代橋 西穂高岳登山口〜01:52\u003c/li\u003e\n\u003cli\u003e03:19〜西穂山荘〜03:24\u003c/li\u003e\n\u003cli\u003e05:09〜西穂高岳\u003c/li\u003e\n\u003cli\u003e05:19〜（P1）〜05:34\u003c/li\u003e\n\u003cli\u003e05:58〜（間ノ岳手前のピーク）〜06:09\u003c/li\u003e\n\u003cli\u003e07:13〜天狗の頭〜07:17\u003c/li\u003e\n\u003cli\u003e08:38〜ジャンダルム〜08:44\u003c/li\u003e\n\u003cli\u003e09:54〜奥穂高岳〜10:17\u003c/li\u003e\n\u003cli\u003e11:38〜紀美子平\u003c/li\u003e\n\u003cli\u003e13:25ごろ〜岳沢小屋付近\u003c/li\u003e\n\u003cli\u003e14:52〜河童橋フィニッシュ\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003ch3 id=\"コースマップ\"\u003eコースマップ\u003c/h3\u003e\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003clink rel=\"stylesheet\" href=\"https://unpkg.com/leaflet@1.9.4/dist/leaflet.css\" /\u003e\n\u003cstyle\u003e\n  .gpx-container {\n    width: 100%;\n    margin: 1.5rem 0;\n    border: 1px solid #ccc;\n    border-radius: 8px;\n    overflow: hidden;\n    background: #fff;\n    box-shadow: 0 2px 6px rgba(0,0,0,0.08);\n    font-family: sans-serif;\n  }\n  .gpx-map { height: 380px; width: 100%; }\n  \n   \n  .gpx-summary {\n    display: flex;\n    flex-wrap: nowrap;\n    justify-content: space-between;\n    align-items: center;\n    background: #f8f9fa;\n    padding: 8px 10px;\n    border-top: 1px solid #e0e0e0;\n    border-bottom: 1px solid #e0e0e0;\n    font-size: 0.8rem;\n    color: #333;\n    overflow-x: auto;\n    white-space: nowrap;\n  }\n  .gpx-summary-item {\n    margin: 0 4px;\n  }\n  .gpx-summary-item strong {\n    color: #007bff;\n    font-size: 0.95rem;\n    margin-left: 2px;\n  }\n\n  .gpx-chart-wrapper {\n    height: 180px;\n    width: 100%;\n    padding: 10px;\n    background: #fafafa;\n    box-sizing: border-box;\n  }\n\n   \n  .start-marker-icon, .goal-marker-icon {\n    background: none;\n    border: none;\n    font-weight: bold;\n    font-size: 11px;\n    color: #ffffff;\n    text-align: center;\n    line-height: 18px;\n  }\n\u003c/style\u003e\n\n\n\u003cdiv class=\"gpx-container\"\u003e\n  \u003cdiv id=\"map-e738978e\" class=\"gpx-map\"\u003e\u003c/div\u003e\n  \u003cdiv id=\"summary-e738978e\" class=\"gpx-summary\"\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e総距離:\u003cstrong id=\"sum-dist-e738978e\"\u003e-\u003c/strong\u003e km\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e累積標高上り:\u003cstrong id=\"sum-up-e738978e\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e累積標高下り:\u003cstrong id=\"sum-down-e738978e\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e最高標高:\u003cstrong id=\"sum-max-e738978e\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e最低標高:\u003cstrong id=\"sum-min-e738978e\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n  \u003c/div\u003e\n  \u003cdiv class=\"gpx-chart-wrapper\"\u003e\n    \u003ccanvas id=\"chart-e738978e\"\u003e\u003c/canvas\u003e\n  \u003c/div\u003e\n\u003c/div\u003e\n\n\n\u003cscript src=\"https://unpkg.com/leaflet@1.9.4/dist/leaflet.js\"\u003e\u003c/script\u003e\n\u003cscript src=\"https://cdnjs.cloudflare.com/ajax/libs/leaflet-gpx/1.7.0/gpx.min.js\"\u003e\u003c/script\u003e\n\u003cscript src=\"https://cdn.jsdelivr.net/npm/chart.js\"\u003e\u003c/script\u003e\n\n\u003cscript\u003e\nwindow.addEventListener('load', function() {\n  var gpxUrl = '\\/oohc\\/posts\\/2026-07-26\\/20260726_20260726.gpx';\n\n  \n  var map = L.map('map-e738978e').setView([0, 0], 10);\n  L.tileLayer('https://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png', {\n    attribution: '\u003ca href=\"https://maps.gsi.go.jp/development/ichiran.html\" target=\"_blank\"\u003e国土地理院\u003c/a\u003e',\n    maxZoom: 18\n  }).addTo(map);\n\n  \n  L.control.scale({\n    imperial: false,\n    position: 'bottomleft'\n  }).addTo(map);\n\n  var hoverMarker = null;\n  var trackPoints = [];\n  var timeLabels = []; \n\n  \n  var ctx = document.getElementById('chart-e738978e').getContext('2d');\n  var chart = new Chart(ctx, {\n    type: 'line',\n    data: {\n      datasets: [{\n        label: '標高 (m)',\n        data: [],\n        borderColor: '#007bff',\n        backgroundColor: 'rgba(0, 123, 255, 0.1)',\n        fill: true,\n        borderWidth: 1.5,\n        pointRadius: 0,\n        pointHoverRadius: 6,\n        tension: 0.1\n      }]\n    },\n    options: {\n      responsive: true,\n      maintainAspectRatio: false,\n      interaction: { mode: 'index', intersect: false },\n      plugins: {\n        legend: { display: false },\n        \n        tooltip: {\n          callbacks: {\n            title: function(items) {\n              var index = items[0].dataIndex;\n              var timeStr = timeLabels[index] || '';\n              var distStr = items[0].raw.x.toFixed(2) + ' km';\n              return timeStr ? '時刻: ' + timeStr + '（距離: ' + distStr + '）' : '距離: ' + distStr;\n            },\n            label: function(item) {\n              return '標高: ' + item.raw.y + ' m';\n            }\n          }\n        }\n      },\n      scales: {\n        x: {\n          type: 'linear', \n          display: true,\n          title: { display: true, text: '距離 (km)', font: { size: 10 } },\n          ticks: {\n            font: { size: 10 }\n          },\n          grid: { color: 'rgba(0, 0, 0, 0.05)' }\n        },\n        y: {\n          display: true,\n          title: { display: true, text: '標高 (m)', font: { size: 10 } },\n          ticks: { font: { size: 10 } },\n          grid: { color: 'rgba(0, 0, 0, 0.05)' }\n        }\n      },\n      \n      onHover: function(event, activeElements) {\n        if (activeElements \u0026\u0026 activeElements.length \u003e 0) {\n          var index = activeElements[0].index;\n          updateHoverMarker(index);\n        }\n      }\n    }\n  });\n\n  \n  function updateHoverMarker(index) {\n    var pt = trackPoints[index];\n    if (pt) {\n      if (!hoverMarker) {\n        hoverMarker = L.circleMarker([pt.lat, pt.lng], {\n          radius: 8,\n          fillColor: '#00ffff',\n          color: '#ffffff',\n          weight: 3,\n          opacity: 1,\n          fillOpacity: 1\n        }).addTo(map);\n      } else {\n        hoverMarker.setLatLng([pt.lat, pt.lng]);\n      }\n    }\n  }\n\n  \n  function extractTrackData(layer) {\n    var pts = [];\n    var polylines = [];\n\n    if (typeof layer.getLatLngs === 'function') {\n      var latlngs = layer.getLatLngs();\n      var flat = Array.isArray(latlngs[0]) ? latlngs.flat(Infinity) : latlngs;\n      flat.forEach(function(p) {\n        if (p \u0026\u0026 typeof p.lat === 'number') {\n          pts.push({ lat: p.lat, lng: p.lng });\n        }\n      });\n      if (layer instanceof L.Polyline) {\n        polylines.push(layer);\n      }\n    } else if (typeof layer.eachLayer === 'function') {\n      layer.eachLayer(function(child) {\n        var res = extractTrackData(child);\n        pts = pts.concat(res.pts);\n        polylines = polylines.concat(res.polylines);\n      });\n    }\n    return { pts: pts, polylines: polylines };\n  }\n\n  \n  fetch(gpxUrl)\n    .then(function(response) { return response.text(); })\n    .then(function(xmlText) {\n      var parser = new DOMParser();\n      var xmlDoc = parser.parseFromString(xmlText, \"text/xml\");\n      var trkpts = xmlDoc.getElementsByTagName(\"trkpt\");\n\n      for (var i = 0; i \u003c trkpts.length; i++) {\n        var timeNode = trkpts[i].getElementsByTagName(\"time\")[0];\n        if (timeNode) {\n          var dateObj = new Date(timeNode.textContent);\n          var timeStr = dateObj.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', hour12: false });\n          timeLabels.push(timeStr);\n        } else {\n          timeLabels.push('');\n        }\n      }\n    })\n    .catch(function(err) {\n      console.error(\"GPX Time Parsing Error:\", err);\n    });\n\n  \n  new L.GPX(gpxUrl, {\n    async: true,\n    polyline_options: { color: '#ff3300', weight: 5, opacity: 0.8 },\n    marker_options: { startIconUrl: null, endIconUrl: null, wptIconUrls: null }\n  }).on('loaded', function(e) {\n    var gpx = e.target;\n    map.fitBounds(gpx.getBounds());\n\n    \n    var totalDistMeters = gpx.get_distance();\n    var distKmNum = totalDistMeters / 1000;\n    var distKmStr = distKmNum.toFixed(2);\n    var maxEle = Math.round(gpx.get_elevation_max());\n    var minEle = Math.round(gpx.get_elevation_min());\n    var gainEle = Math.round(gpx.get_elevation_gain());\n    var lossEle = Math.round(gpx.get_elevation_loss());\n\n    document.getElementById('sum-dist-e738978e').innerText = distKmStr;\n    document.getElementById('sum-up-e738978e').innerText = gainEle;\n    document.getElementById('sum-down-e738978e').innerText = lossEle;\n    document.getElementById('sum-max-e738978e').innerText = maxEle;\n    document.getElementById('sum-min-e738978e').innerText = minEle;\n\n    \n    var eleData = gpx.get_elevation_data();\n    var chartDataPoints = [];\n\n    var extracted = extractTrackData(gpx);\n    trackPoints = extracted.pts;\n\n    \n    if (trackPoints.length \u003e 0) {\n      var startPt = trackPoints[0];\n      var endPt = trackPoints[trackPoints.length - 1];\n\n      L.circleMarker([startPt.lat, startPt.lng], {\n        radius: 9,\n        fillColor: '#28a745',\n        color: '#ffffff',\n        weight: 2,\n        opacity: 1,\n        fillOpacity: 0.9\n      }).addTo(map).bindTooltip('スタート', { permanent: false, direction: 'top' });\n\n      L.circleMarker([endPt.lat, endPt.lng], {\n        radius: 9,\n        fillColor: '#dc3545',\n        color: '#ffffff',\n        weight: 2,\n        opacity: 1,\n        fillOpacity: 0.9\n      }).addTo(map).bindTooltip('ゴール', { permanent: false, direction: 'top' });\n    }\n\n    eleData.forEach(function(item) {\n      var dist = typeof item[0] === 'number' ? item[0] : parseFloat(item[0]);\n      var ele = Math.round(item[1]);\n      chartDataPoints.push({\n        x: parseFloat(dist.toFixed(2)),\n        y: ele\n      });\n    });\n\n    \n    var dynamicStepSize = 1.0;\n    if (distKmNum \u003c= 5) {\n      dynamicStepSize = 0.5;   \n    } else if (distKmNum \u003c= 20) {\n      dynamicStepSize = 1.0;   \n    } else if (distKmNum \u003c= 40) {\n      dynamicStepSize = 5.0;   \n    } else {\n      dynamicStepSize = 10.0;  \n    }\n\n    \n    chart.options.scales.x.max = distKmNum;\n\n    \n    var allowedTicks = [];\n    for (var v = 0; v \u003c distKmNum; v += dynamicStepSize) {\n      allowedTicks.push(parseFloat(v.toFixed(1)));\n    }\n    \n\n    \n    chart.options.scales.x.ticks.callback = function(value) {\n      for (var i = 0; i \u003c allowedTicks.length; i++) {\n        if (Math.abs(value - allowedTicks[i]) \u003c 0.01) {\n          return value + ' km';\n        }\n      }\n      \n      return '';\n    };\n\n    \n    chart.options.scales.x.afterBuildTicks = function(axis) {\n      axis.ticks = allowedTicks.map(function(val) {\n        return { value: val };\n      });\n    };\n\n    chart.data.datasets[0].data = chartDataPoints;\n    chart.update();\n\n    \n    extracted.polylines.forEach(function(polyline) {\n      polyline.on('mousemove', function(ev) {\n        if (!trackPoints.length) return;\n\n        var mouseLatLng = ev.latlng;\n        var closestIndex = 0;\n        var minDist = Infinity;\n\n        for (var i = 0; i \u003c trackPoints.length; i++) {\n          var d = mouseLatLng.distanceTo(L.latLng(trackPoints[i].lat, trackPoints[i].lng));\n          if (d \u003c minDist) {\n            minDist = d;\n            closestIndex = i;\n          }\n        }\n\n        updateHoverMarker(closestIndex);\n\n        chart.setActiveElements([{ datasetIndex: 0, index: closestIndex }]);\n        chart.tooltip.setActiveElements([{ datasetIndex: 0, index: closestIndex }], { x: 0, y: 0 });\n        chart.update();\n      });\n    });\n\n  }).addTo(map);\n});\n\u003c/script\u003e\n\u003chr\u003e\n\u003ch3 id=\"山行記録\"\u003e山行記録\u003c/h3\u003e\n\u003ch4 id=\"西穂高岳奥穂高岳の稜線の難しさ\"\u003e西穂高岳～奥穂高岳の稜線の難しさ\u003c/h4\u003e\n\u003cp\u003e筆者の登山スタイルが「アルパインではなくもっぱら（オフトレイル）ハイキング」である点に留意してお読みいただきたい。\u003cbr\u003e\n西穂から奥穂までのコースタイムを「8時間から10時間」とする記事や記録を見かけるが、危なっかしい記述だなあ、と思っている。\u003cbr\u003e\n「西穂山荘に泊まって翌朝は早出すれば穂高岳山荘に着ける」と読み取る人は多いだろうし、じっさい山行記録にも「無事に」8時間で歩きとおせた記録がupされる。\u003c/p\u003e","title":"ジャンダルム周回 ver.2026（西穂高岳～奥穂高岳）"},{"content":"トレーニング山行。真夏にやるルートではないのだが、「長めに歩いて雲取山に上がる」「足首を横にひねらない一般登山道を歩き、オフトレイルは抜き」の条件に当てはまるルートを、他に探せなかった。\nとにかく汗をかいたが、夏の雲が陽射しを遮る時間が長く、まだマシだったろう。ピーカンだったら鷹ノ巣あたりであきらめていたはずだ。\n項目 内容 記録日 2026年7月19日（日） 天候 晴れたり曇ったり2対8、風なし、鷹ノ巣山頂にはトンボがいっぱい パーティ モンターニャ単独 アクセス JR青梅線で奥多摩駅 行程 奥多摩駅、石尾根、三ノ木戸山、六ツ石山、鷹ノ巣山、日陰名栗山、高丸山、七ツ石山、雲取山、鴨沢ルート、鴨沢バス停 コースタイム 07:40〜奥多摩駅スタート 09:35～六ツ石山 10:42～鷹ノ巣山～10:51 12:16～七ツ石山 13:14～雲取山～13:21 15:52～鴨沢バス停フィニッシュ コースマップ 総距離:- km 累積標高上り:- m 累積標高下り:- m 最高標高:- m 最低標高:- m 山行記録 石尾根から雲取山、トレーニングハイク 翌週のジャンダルム周回に備えて2000mまで登っておく。ジャンダルムや奥穂高岳で顔がむくむのは高山病の初期症状ではないかと疑っているが、2000mで効果があるのかどうか。正直心許ない。\nメリノウールシャツを選んだのは失敗だった。\n公開日 20260923\n写真（右クリック→新しいタブ...で拡大します）＋詳細記録 （13:16・写真1） 見事に何も見えない雲取山頂。 （13:48・写真2） 「wifi使えます、売店はありません」@五十人平野営場。 （15:57・写真3） お「16時08分の次は18時04分。17時台ナシの空白の2時間だぞ？なんとかしていただきたい、ってマリアさまにお願いしといて」\nオ「…………」\nバス運転手の不足は盛んに報道されている。山のバスの将来も明るくない。 ","permalink":"https://montagna-katokeyci.github.io/oohc/posts/2026-07-19/","summary":"\u003cp\u003eトレーニング山行。真夏にやるルートではないのだが、「長めに歩いて雲取山に上がる」「足首を横にひねらない一般登山道を歩き、オフトレイルは抜き」の条件に当てはまるルートを、他に探せなかった。\u003cbr\u003e\nとにかく汗をかいたが、夏の雲が陽射しを遮る時間が長く、まだマシだったろう。ピーカンだったら鷹ノ巣あたりであきらめていたはずだ。\u003c/p\u003e\n\u003chr\u003e\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth style=\"text-align: left\"\u003e項目\u003c/th\u003e\n\t\t\t\t\t\u003cth style=\"text-align: left\"\u003e内容\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e記録日\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e2026年7月19日（日）\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e天候\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e晴れたり曇ったり2対8、風なし、鷹ノ巣山頂にはトンボがいっぱい\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003eパーティ\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003eモンターニャ単独\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003eアクセス\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003eJR青梅線で奥多摩駅\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e行程\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e奥多摩駅、石尾根、三ノ木戸山、六ツ石山、鷹ノ巣山、日陰名栗山、高丸山、七ツ石山、雲取山、鴨沢ルート、鴨沢バス停\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003chr\u003e\n\u003ch3 id=\"コースタイム\"\u003eコースタイム\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e07:40〜奥多摩駅スタート\u003c/li\u003e\n\u003cli\u003e09:35～六ツ石山\u003c/li\u003e\n\u003cli\u003e10:42～鷹ノ巣山～10:51\u003c/li\u003e\n\u003cli\u003e12:16～七ツ石山\u003c/li\u003e\n\u003cli\u003e13:14～雲取山～13:21\u003c/li\u003e\n\u003cli\u003e15:52～鴨沢バス停フィニッシュ\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003ch3 id=\"コースマップ\"\u003eコースマップ\u003c/h3\u003e\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003clink rel=\"stylesheet\" href=\"https://unpkg.com/leaflet@1.9.4/dist/leaflet.css\" /\u003e\n\u003cstyle\u003e\n  .gpx-container {\n    width: 100%;\n    margin: 1.5rem 0;\n    border: 1px solid #ccc;\n    border-radius: 8px;\n    overflow: hidden;\n    background: #fff;\n    box-shadow: 0 2px 6px rgba(0,0,0,0.08);\n    font-family: sans-serif;\n  }\n  .gpx-map { height: 380px; width: 100%; }\n  \n   \n  .gpx-summary {\n    display: flex;\n    flex-wrap: nowrap;\n    justify-content: space-between;\n    align-items: center;\n    background: #f8f9fa;\n    padding: 8px 10px;\n    border-top: 1px solid #e0e0e0;\n    border-bottom: 1px solid #e0e0e0;\n    font-size: 0.8rem;\n    color: #333;\n    overflow-x: auto;\n    white-space: nowrap;\n  }\n  .gpx-summary-item {\n    margin: 0 4px;\n  }\n  .gpx-summary-item strong {\n    color: #007bff;\n    font-size: 0.95rem;\n    margin-left: 2px;\n  }\n\n  .gpx-chart-wrapper {\n    height: 180px;\n    width: 100%;\n    padding: 10px;\n    background: #fafafa;\n    box-sizing: border-box;\n  }\n\n   \n  .start-marker-icon, .goal-marker-icon {\n    background: none;\n    border: none;\n    font-weight: bold;\n    font-size: 11px;\n    color: #ffffff;\n    text-align: center;\n    line-height: 18px;\n  }\n\u003c/style\u003e\n\n\n\u003cdiv class=\"gpx-container\"\u003e\n  \u003cdiv id=\"map-0381d021\" class=\"gpx-map\"\u003e\u003c/div\u003e\n  \u003cdiv id=\"summary-0381d021\" class=\"gpx-summary\"\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e総距離:\u003cstrong id=\"sum-dist-0381d021\"\u003e-\u003c/strong\u003e km\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e累積標高上り:\u003cstrong id=\"sum-up-0381d021\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e累積標高下り:\u003cstrong id=\"sum-down-0381d021\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e最高標高:\u003cstrong id=\"sum-max-0381d021\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e最低標高:\u003cstrong id=\"sum-min-0381d021\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n  \u003c/div\u003e\n  \u003cdiv class=\"gpx-chart-wrapper\"\u003e\n    \u003ccanvas id=\"chart-0381d021\"\u003e\u003c/canvas\u003e\n  \u003c/div\u003e\n\u003c/div\u003e\n\n\n\u003cscript src=\"https://unpkg.com/leaflet@1.9.4/dist/leaflet.js\"\u003e\u003c/script\u003e\n\u003cscript src=\"https://cdnjs.cloudflare.com/ajax/libs/leaflet-gpx/1.7.0/gpx.min.js\"\u003e\u003c/script\u003e\n\u003cscript src=\"https://cdn.jsdelivr.net/npm/chart.js\"\u003e\u003c/script\u003e\n\n\u003cscript\u003e\nwindow.addEventListener('load', function() {\n  var gpxUrl = '\\/oohc\\/posts\\/2026-07-19\\/20260719_20260719.gpx';\n\n  \n  var map = L.map('map-0381d021').setView([0, 0], 10);\n  L.tileLayer('https://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png', {\n    attribution: '\u003ca href=\"https://maps.gsi.go.jp/development/ichiran.html\" target=\"_blank\"\u003e国土地理院\u003c/a\u003e',\n    maxZoom: 18\n  }).addTo(map);\n\n  \n  L.control.scale({\n    imperial: false,\n    position: 'bottomleft'\n  }).addTo(map);\n\n  var hoverMarker = null;\n  var trackPoints = [];\n  var timeLabels = []; \n\n  \n  var ctx = document.getElementById('chart-0381d021').getContext('2d');\n  var chart = new Chart(ctx, {\n    type: 'line',\n    data: {\n      datasets: [{\n        label: '標高 (m)',\n        data: [],\n        borderColor: '#007bff',\n        backgroundColor: 'rgba(0, 123, 255, 0.1)',\n        fill: true,\n        borderWidth: 1.5,\n        pointRadius: 0,\n        pointHoverRadius: 6,\n        tension: 0.1\n      }]\n    },\n    options: {\n      responsive: true,\n      maintainAspectRatio: false,\n      interaction: { mode: 'index', intersect: false },\n      plugins: {\n        legend: { display: false },\n        \n        tooltip: {\n          callbacks: {\n            title: function(items) {\n              var index = items[0].dataIndex;\n              var timeStr = timeLabels[index] || '';\n              var distStr = items[0].raw.x.toFixed(2) + ' km';\n              return timeStr ? '時刻: ' + timeStr + '（距離: ' + distStr + '）' : '距離: ' + distStr;\n            },\n            label: function(item) {\n              return '標高: ' + item.raw.y + ' m';\n            }\n          }\n        }\n      },\n      scales: {\n        x: {\n          type: 'linear', \n          display: true,\n          title: { display: true, text: '距離 (km)', font: { size: 10 } },\n          ticks: {\n            font: { size: 10 }\n          },\n          grid: { color: 'rgba(0, 0, 0, 0.05)' }\n        },\n        y: {\n          display: true,\n          title: { display: true, text: '標高 (m)', font: { size: 10 } },\n          ticks: { font: { size: 10 } },\n          grid: { color: 'rgba(0, 0, 0, 0.05)' }\n        }\n      },\n      \n      onHover: function(event, activeElements) {\n        if (activeElements \u0026\u0026 activeElements.length \u003e 0) {\n          var index = activeElements[0].index;\n          updateHoverMarker(index);\n        }\n      }\n    }\n  });\n\n  \n  function updateHoverMarker(index) {\n    var pt = trackPoints[index];\n    if (pt) {\n      if (!hoverMarker) {\n        hoverMarker = L.circleMarker([pt.lat, pt.lng], {\n          radius: 8,\n          fillColor: '#00ffff',\n          color: '#ffffff',\n          weight: 3,\n          opacity: 1,\n          fillOpacity: 1\n        }).addTo(map);\n      } else {\n        hoverMarker.setLatLng([pt.lat, pt.lng]);\n      }\n    }\n  }\n\n  \n  function extractTrackData(layer) {\n    var pts = [];\n    var polylines = [];\n\n    if (typeof layer.getLatLngs === 'function') {\n      var latlngs = layer.getLatLngs();\n      var flat = Array.isArray(latlngs[0]) ? latlngs.flat(Infinity) : latlngs;\n      flat.forEach(function(p) {\n        if (p \u0026\u0026 typeof p.lat === 'number') {\n          pts.push({ lat: p.lat, lng: p.lng });\n        }\n      });\n      if (layer instanceof L.Polyline) {\n        polylines.push(layer);\n      }\n    } else if (typeof layer.eachLayer === 'function') {\n      layer.eachLayer(function(child) {\n        var res = extractTrackData(child);\n        pts = pts.concat(res.pts);\n        polylines = polylines.concat(res.polylines);\n      });\n    }\n    return { pts: pts, polylines: polylines };\n  }\n\n  \n  fetch(gpxUrl)\n    .then(function(response) { return response.text(); })\n    .then(function(xmlText) {\n      var parser = new DOMParser();\n      var xmlDoc = parser.parseFromString(xmlText, \"text/xml\");\n      var trkpts = xmlDoc.getElementsByTagName(\"trkpt\");\n\n      for (var i = 0; i \u003c trkpts.length; i++) {\n        var timeNode = trkpts[i].getElementsByTagName(\"time\")[0];\n        if (timeNode) {\n          var dateObj = new Date(timeNode.textContent);\n          var timeStr = dateObj.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', hour12: false });\n          timeLabels.push(timeStr);\n        } else {\n          timeLabels.push('');\n        }\n      }\n    })\n    .catch(function(err) {\n      console.error(\"GPX Time Parsing Error:\", err);\n    });\n\n  \n  new L.GPX(gpxUrl, {\n    async: true,\n    polyline_options: { color: '#ff3300', weight: 5, opacity: 0.8 },\n    marker_options: { startIconUrl: null, endIconUrl: null, wptIconUrls: null }\n  }).on('loaded', function(e) {\n    var gpx = e.target;\n    map.fitBounds(gpx.getBounds());\n\n    \n    var totalDistMeters = gpx.get_distance();\n    var distKmNum = totalDistMeters / 1000;\n    var distKmStr = distKmNum.toFixed(2);\n    var maxEle = Math.round(gpx.get_elevation_max());\n    var minEle = Math.round(gpx.get_elevation_min());\n    var gainEle = Math.round(gpx.get_elevation_gain());\n    var lossEle = Math.round(gpx.get_elevation_loss());\n\n    document.getElementById('sum-dist-0381d021').innerText = distKmStr;\n    document.getElementById('sum-up-0381d021').innerText = gainEle;\n    document.getElementById('sum-down-0381d021').innerText = lossEle;\n    document.getElementById('sum-max-0381d021').innerText = maxEle;\n    document.getElementById('sum-min-0381d021').innerText = minEle;\n\n    \n    var eleData = gpx.get_elevation_data();\n    var chartDataPoints = [];\n\n    var extracted = extractTrackData(gpx);\n    trackPoints = extracted.pts;\n\n    \n    if (trackPoints.length \u003e 0) {\n      var startPt = trackPoints[0];\n      var endPt = trackPoints[trackPoints.length - 1];\n\n      L.circleMarker([startPt.lat, startPt.lng], {\n        radius: 9,\n        fillColor: '#28a745',\n        color: '#ffffff',\n        weight: 2,\n        opacity: 1,\n        fillOpacity: 0.9\n      }).addTo(map).bindTooltip('スタート', { permanent: false, direction: 'top' });\n\n      L.circleMarker([endPt.lat, endPt.lng], {\n        radius: 9,\n        fillColor: '#dc3545',\n        color: '#ffffff',\n        weight: 2,\n        opacity: 1,\n        fillOpacity: 0.9\n      }).addTo(map).bindTooltip('ゴール', { permanent: false, direction: 'top' });\n    }\n\n    eleData.forEach(function(item) {\n      var dist = typeof item[0] === 'number' ? item[0] : parseFloat(item[0]);\n      var ele = Math.round(item[1]);\n      chartDataPoints.push({\n        x: parseFloat(dist.toFixed(2)),\n        y: ele\n      });\n    });\n\n    \n    var dynamicStepSize = 1.0;\n    if (distKmNum \u003c= 5) {\n      dynamicStepSize = 0.5;   \n    } else if (distKmNum \u003c= 20) {\n      dynamicStepSize = 1.0;   \n    } else if (distKmNum \u003c= 40) {\n      dynamicStepSize = 5.0;   \n    } else {\n      dynamicStepSize = 10.0;  \n    }\n\n    \n    chart.options.scales.x.max = distKmNum;\n\n    \n    var allowedTicks = [];\n    for (var v = 0; v \u003c distKmNum; v += dynamicStepSize) {\n      allowedTicks.push(parseFloat(v.toFixed(1)));\n    }\n    \n\n    \n    chart.options.scales.x.ticks.callback = function(value) {\n      for (var i = 0; i \u003c allowedTicks.length; i++) {\n        if (Math.abs(value - allowedTicks[i]) \u003c 0.01) {\n          return value + ' km';\n        }\n      }\n      \n      return '';\n    };\n\n    \n    chart.options.scales.x.afterBuildTicks = function(axis) {\n      axis.ticks = allowedTicks.map(function(val) {\n        return { value: val };\n      });\n    };\n\n    chart.data.datasets[0].data = chartDataPoints;\n    chart.update();\n\n    \n    extracted.polylines.forEach(function(polyline) {\n      polyline.on('mousemove', function(ev) {\n        if (!trackPoints.length) return;\n\n        var mouseLatLng = ev.latlng;\n        var closestIndex = 0;\n        var minDist = Infinity;\n\n        for (var i = 0; i \u003c trackPoints.length; i++) {\n          var d = mouseLatLng.distanceTo(L.latLng(trackPoints[i].lat, trackPoints[i].lng));\n          if (d \u003c minDist) {\n            minDist = d;\n            closestIndex = i;\n          }\n        }\n\n        updateHoverMarker(closestIndex);\n\n        chart.setActiveElements([{ datasetIndex: 0, index: closestIndex }]);\n        chart.tooltip.setActiveElements([{ datasetIndex: 0, index: closestIndex }], { x: 0, y: 0 });\n        chart.update();\n      });\n    });\n\n  }).addTo(map);\n});\n\u003c/script\u003e\n\u003chr\u003e\n\u003ch3 id=\"山行記録\"\u003e山行記録\u003c/h3\u003e\n\u003ch4 id=\"石尾根から雲取山トレーニングハイク\"\u003e 石尾根から雲取山、トレーニングハイク\u003c/h4\u003e\n\u003cp\u003e翌週のジャンダルム周回に備えて2000mまで登っておく。ジャンダルムや奥穂高岳で顔がむくむのは高山病の初期症状ではないかと疑っているが、2000mで効果があるのかどうか。正直心許ない。\u003cbr\u003e\nメリノウールシャツを選んだのは失敗だった。\u003c/p\u003e","title":"石尾根から雲取山"},{"content":"日原川下流右岸中段道の4回目は、タル沢尾根co1100mからの西進。毎回カメの歩みのようだが、今回もタル沢尾根を発ちカラ沢尾根までしかたどれなかった。しかし薄い踏み跡が細々と続き、「かつて道があった」のは疑いようがない。\n項目 内容 記録日 2026年7月11日（土） 天候 曇り緩い風あり、急に暑くなり虫が張り切りだして参った。 パーティ モンターニャ単独 アクセス 西東京バスで東日原バス停 行程 東日原バス停、タル沢尾根、タル沢尾根co1100m付近、日原川下流右岸中段道、カラ沢、カラ沢尾根、カラ沢の頭、石尾根、鷹ノ巣山、石尾根、奥多摩駅 コースタイム 記入中 コースマップ 総距離:- km 累積標高上り:- m 累積標高下り:- m 最高標高:- m 最低標高:- m 山行記録 記入中\n関連する筆者の山行記録 公開日 写真（右クリック→新しいタブ...で拡大します）＋詳細記録 ","permalink":"https://montagna-katokeyci.github.io/oohc/posts/2026-07-11/","summary":"\u003cp\u003e日原川下流右岸中段道の4回目は、タル沢尾根co1100mからの西進。毎回カメの歩みのようだが、今回もタル沢尾根を発ちカラ沢尾根までしかたどれなかった。しかし薄い踏み跡が細々と続き、「かつて道があった」のは疑いようがない。\u003c/p\u003e\n\u003chr\u003e\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth style=\"text-align: left\"\u003e項目\u003c/th\u003e\n\t\t\t\t\t\u003cth style=\"text-align: left\"\u003e内容\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e記録日\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e2026年7月11日（土）\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e天候\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e曇り緩い風あり、急に暑くなり虫が張り切りだして参った。\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003eパーティ\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003eモンターニャ単独\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003eアクセス\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e西東京バスで東日原バス停\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e行程\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e東日原バス停、タル沢尾根、タル沢尾根co1100m付近、日原川下流右岸中段道、カラ沢、カラ沢尾根、カラ沢の頭、石尾根、鷹ノ巣山、石尾根、奥多摩駅\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003chr\u003e\n\u003ch3 id=\"コースタイム\"\u003eコースタイム\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e記入中\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003ch3 id=\"コースマップ\"\u003eコースマップ\u003c/h3\u003e\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003clink rel=\"stylesheet\" href=\"https://unpkg.com/leaflet@1.9.4/dist/leaflet.css\" /\u003e\n\u003cstyle\u003e\n  .gpx-container {\n    width: 100%;\n    margin: 1.5rem 0;\n    border: 1px solid #ccc;\n    border-radius: 8px;\n    overflow: hidden;\n    background: #fff;\n    box-shadow: 0 2px 6px rgba(0,0,0,0.08);\n    font-family: sans-serif;\n  }\n  .gpx-map { height: 380px; width: 100%; }\n  \n   \n  .gpx-summary {\n    display: flex;\n    flex-wrap: nowrap;\n    justify-content: space-between;\n    align-items: center;\n    background: #f8f9fa;\n    padding: 8px 10px;\n    border-top: 1px solid #e0e0e0;\n    border-bottom: 1px solid #e0e0e0;\n    font-size: 0.8rem;\n    color: #333;\n    overflow-x: auto;\n    white-space: nowrap;\n  }\n  .gpx-summary-item {\n    margin: 0 4px;\n  }\n  .gpx-summary-item strong {\n    color: #007bff;\n    font-size: 0.95rem;\n    margin-left: 2px;\n  }\n\n  .gpx-chart-wrapper {\n    height: 180px;\n    width: 100%;\n    padding: 10px;\n    background: #fafafa;\n    box-sizing: border-box;\n  }\n\n   \n  .start-marker-icon, .goal-marker-icon {\n    background: none;\n    border: none;\n    font-weight: bold;\n    font-size: 11px;\n    color: #ffffff;\n    text-align: center;\n    line-height: 18px;\n  }\n\u003c/style\u003e\n\n\n\u003cdiv class=\"gpx-container\"\u003e\n  \u003cdiv id=\"map-d34ee381\" class=\"gpx-map\"\u003e\u003c/div\u003e\n  \u003cdiv id=\"summary-d34ee381\" class=\"gpx-summary\"\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e総距離:\u003cstrong id=\"sum-dist-d34ee381\"\u003e-\u003c/strong\u003e km\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e累積標高上り:\u003cstrong id=\"sum-up-d34ee381\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e累積標高下り:\u003cstrong id=\"sum-down-d34ee381\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e最高標高:\u003cstrong id=\"sum-max-d34ee381\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e最低標高:\u003cstrong id=\"sum-min-d34ee381\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n  \u003c/div\u003e\n  \u003cdiv class=\"gpx-chart-wrapper\"\u003e\n    \u003ccanvas id=\"chart-d34ee381\"\u003e\u003c/canvas\u003e\n  \u003c/div\u003e\n\u003c/div\u003e\n\n\n\u003cscript src=\"https://unpkg.com/leaflet@1.9.4/dist/leaflet.js\"\u003e\u003c/script\u003e\n\u003cscript src=\"https://cdnjs.cloudflare.com/ajax/libs/leaflet-gpx/1.7.0/gpx.min.js\"\u003e\u003c/script\u003e\n\u003cscript src=\"https://cdn.jsdelivr.net/npm/chart.js\"\u003e\u003c/script\u003e\n\n\u003cscript\u003e\nwindow.addEventListener('load', function() {\n  var gpxUrl = '\\/oohc\\/posts\\/2026-07-11\\/20260711_20260711.gpx';\n\n  \n  var map = L.map('map-d34ee381').setView([0, 0], 10);\n  L.tileLayer('https://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png', {\n    attribution: '\u003ca href=\"https://maps.gsi.go.jp/development/ichiran.html\" target=\"_blank\"\u003e国土地理院\u003c/a\u003e',\n    maxZoom: 18\n  }).addTo(map);\n\n  \n  L.control.scale({\n    imperial: false,\n    position: 'bottomleft'\n  }).addTo(map);\n\n  var hoverMarker = null;\n  var trackPoints = [];\n  var timeLabels = []; \n\n  \n  var ctx = document.getElementById('chart-d34ee381').getContext('2d');\n  var chart = new Chart(ctx, {\n    type: 'line',\n    data: {\n      datasets: [{\n        label: '標高 (m)',\n        data: [],\n        borderColor: '#007bff',\n        backgroundColor: 'rgba(0, 123, 255, 0.1)',\n        fill: true,\n        borderWidth: 1.5,\n        pointRadius: 0,\n        pointHoverRadius: 6,\n        tension: 0.1\n      }]\n    },\n    options: {\n      responsive: true,\n      maintainAspectRatio: false,\n      interaction: { mode: 'index', intersect: false },\n      plugins: {\n        legend: { display: false },\n        \n        tooltip: {\n          callbacks: {\n            title: function(items) {\n              var index = items[0].dataIndex;\n              var timeStr = timeLabels[index] || '';\n              var distStr = items[0].raw.x.toFixed(2) + ' km';\n              return timeStr ? '時刻: ' + timeStr + '（距離: ' + distStr + '）' : '距離: ' + distStr;\n            },\n            label: function(item) {\n              return '標高: ' + item.raw.y + ' m';\n            }\n          }\n        }\n      },\n      scales: {\n        x: {\n          type: 'linear', \n          display: true,\n          title: { display: true, text: '距離 (km)', font: { size: 10 } },\n          ticks: {\n            font: { size: 10 }\n          },\n          grid: { color: 'rgba(0, 0, 0, 0.05)' }\n        },\n        y: {\n          display: true,\n          title: { display: true, text: '標高 (m)', font: { size: 10 } },\n          ticks: { font: { size: 10 } },\n          grid: { color: 'rgba(0, 0, 0, 0.05)' }\n        }\n      },\n      \n      onHover: function(event, activeElements) {\n        if (activeElements \u0026\u0026 activeElements.length \u003e 0) {\n          var index = activeElements[0].index;\n          updateHoverMarker(index);\n        }\n      }\n    }\n  });\n\n  \n  function updateHoverMarker(index) {\n    var pt = trackPoints[index];\n    if (pt) {\n      if (!hoverMarker) {\n        hoverMarker = L.circleMarker([pt.lat, pt.lng], {\n          radius: 8,\n          fillColor: '#00ffff',\n          color: '#ffffff',\n          weight: 3,\n          opacity: 1,\n          fillOpacity: 1\n        }).addTo(map);\n      } else {\n        hoverMarker.setLatLng([pt.lat, pt.lng]);\n      }\n    }\n  }\n\n  \n  function extractTrackData(layer) {\n    var pts = [];\n    var polylines = [];\n\n    if (typeof layer.getLatLngs === 'function') {\n      var latlngs = layer.getLatLngs();\n      var flat = Array.isArray(latlngs[0]) ? latlngs.flat(Infinity) : latlngs;\n      flat.forEach(function(p) {\n        if (p \u0026\u0026 typeof p.lat === 'number') {\n          pts.push({ lat: p.lat, lng: p.lng });\n        }\n      });\n      if (layer instanceof L.Polyline) {\n        polylines.push(layer);\n      }\n    } else if (typeof layer.eachLayer === 'function') {\n      layer.eachLayer(function(child) {\n        var res = extractTrackData(child);\n        pts = pts.concat(res.pts);\n        polylines = polylines.concat(res.polylines);\n      });\n    }\n    return { pts: pts, polylines: polylines };\n  }\n\n  \n  fetch(gpxUrl)\n    .then(function(response) { return response.text(); })\n    .then(function(xmlText) {\n      var parser = new DOMParser();\n      var xmlDoc = parser.parseFromString(xmlText, \"text/xml\");\n      var trkpts = xmlDoc.getElementsByTagName(\"trkpt\");\n\n      for (var i = 0; i \u003c trkpts.length; i++) {\n        var timeNode = trkpts[i].getElementsByTagName(\"time\")[0];\n        if (timeNode) {\n          var dateObj = new Date(timeNode.textContent);\n          var timeStr = dateObj.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', hour12: false });\n          timeLabels.push(timeStr);\n        } else {\n          timeLabels.push('');\n        }\n      }\n    })\n    .catch(function(err) {\n      console.error(\"GPX Time Parsing Error:\", err);\n    });\n\n  \n  new L.GPX(gpxUrl, {\n    async: true,\n    polyline_options: { color: '#ff3300', weight: 5, opacity: 0.8 },\n    marker_options: { startIconUrl: null, endIconUrl: null, wptIconUrls: null }\n  }).on('loaded', function(e) {\n    var gpx = e.target;\n    map.fitBounds(gpx.getBounds());\n\n    \n    var totalDistMeters = gpx.get_distance();\n    var distKmNum = totalDistMeters / 1000;\n    var distKmStr = distKmNum.toFixed(2);\n    var maxEle = Math.round(gpx.get_elevation_max());\n    var minEle = Math.round(gpx.get_elevation_min());\n    var gainEle = Math.round(gpx.get_elevation_gain());\n    var lossEle = Math.round(gpx.get_elevation_loss());\n\n    document.getElementById('sum-dist-d34ee381').innerText = distKmStr;\n    document.getElementById('sum-up-d34ee381').innerText = gainEle;\n    document.getElementById('sum-down-d34ee381').innerText = lossEle;\n    document.getElementById('sum-max-d34ee381').innerText = maxEle;\n    document.getElementById('sum-min-d34ee381').innerText = minEle;\n\n    \n    var eleData = gpx.get_elevation_data();\n    var chartDataPoints = [];\n\n    var extracted = extractTrackData(gpx);\n    trackPoints = extracted.pts;\n\n    \n    if (trackPoints.length \u003e 0) {\n      var startPt = trackPoints[0];\n      var endPt = trackPoints[trackPoints.length - 1];\n\n      L.circleMarker([startPt.lat, startPt.lng], {\n        radius: 9,\n        fillColor: '#28a745',\n        color: '#ffffff',\n        weight: 2,\n        opacity: 1,\n        fillOpacity: 0.9\n      }).addTo(map).bindTooltip('スタート', { permanent: false, direction: 'top' });\n\n      L.circleMarker([endPt.lat, endPt.lng], {\n        radius: 9,\n        fillColor: '#dc3545',\n        color: '#ffffff',\n        weight: 2,\n        opacity: 1,\n        fillOpacity: 0.9\n      }).addTo(map).bindTooltip('ゴール', { permanent: false, direction: 'top' });\n    }\n\n    eleData.forEach(function(item) {\n      var dist = typeof item[0] === 'number' ? item[0] : parseFloat(item[0]);\n      var ele = Math.round(item[1]);\n      chartDataPoints.push({\n        x: parseFloat(dist.toFixed(2)),\n        y: ele\n      });\n    });\n\n    \n    var dynamicStepSize = 1.0;\n    if (distKmNum \u003c= 5) {\n      dynamicStepSize = 0.5;   \n    } else if (distKmNum \u003c= 20) {\n      dynamicStepSize = 1.0;   \n    } else if (distKmNum \u003c= 40) {\n      dynamicStepSize = 5.0;   \n    } else {\n      dynamicStepSize = 10.0;  \n    }\n\n    \n    chart.options.scales.x.max = distKmNum;\n\n    \n    var allowedTicks = [];\n    for (var v = 0; v \u003c distKmNum; v += dynamicStepSize) {\n      allowedTicks.push(parseFloat(v.toFixed(1)));\n    }\n    \n\n    \n    chart.options.scales.x.ticks.callback = function(value) {\n      for (var i = 0; i \u003c allowedTicks.length; i++) {\n        if (Math.abs(value - allowedTicks[i]) \u003c 0.01) {\n          return value + ' km';\n        }\n      }\n      \n      return '';\n    };\n\n    \n    chart.options.scales.x.afterBuildTicks = function(axis) {\n      axis.ticks = allowedTicks.map(function(val) {\n        return { value: val };\n      });\n    };\n\n    chart.data.datasets[0].data = chartDataPoints;\n    chart.update();\n\n    \n    extracted.polylines.forEach(function(polyline) {\n      polyline.on('mousemove', function(ev) {\n        if (!trackPoints.length) return;\n\n        var mouseLatLng = ev.latlng;\n        var closestIndex = 0;\n        var minDist = Infinity;\n\n        for (var i = 0; i \u003c trackPoints.length; i++) {\n          var d = mouseLatLng.distanceTo(L.latLng(trackPoints[i].lat, trackPoints[i].lng));\n          if (d \u003c minDist) {\n            minDist = d;\n            closestIndex = i;\n          }\n        }\n\n        updateHoverMarker(closestIndex);\n\n        chart.setActiveElements([{ datasetIndex: 0, index: closestIndex }]);\n        chart.tooltip.setActiveElements([{ datasetIndex: 0, index: closestIndex }], { x: 0, y: 0 });\n        chart.update();\n      });\n    });\n\n  }).addTo(map);\n});\n\u003c/script\u003e\n\u003chr\u003e\n\u003ch3 id=\"山行記録\"\u003e山行記録\u003c/h3\u003e\n\u003cp\u003e記入中\u003c/p\u003e","title":"Part 4 : 日原川下流右岸中段道"},{"content":"6月6日の続き。長沢谷の踊窪から二軒小屋尾根のP1300下に上がり、トラバースして崩落地手前の窪までたどったのが前回、今回はその続きを狙ったのだが。 緩傾斜で崖っぷちに出会わないぶん、動物の踏み跡だらけで道跡がさっぱりわからない。細かく上下しながら上流へ向かったが、徒労に終わった。\n項目 内容 記録日 2026年7月04日（土） 天候 晴れたり曇ったり→小雨→曇り パーティ モンターニャ単独 アクセス 西東京バスで東日原バス停 行程 東日原バス停、日原林道、長沢谷、二軒小屋尾根、大ダワ林道古道（？）、モミソ窪右岸尾根、二軒小屋尾根、日原林道、東日原バス停 コースタイム 記入中 コースマップ 総距離:- km 累積標高上り:- m 累積標高下り:- m 最高標高:- m 最低標高:- m 山行記録 記入中\n関連する筆者の山行記録 公開日 写真（右クリック→新しいタブ...で拡大します）＋詳細記録 ","permalink":"https://montagna-katokeyci.github.io/oohc/posts/2026-07-04/","summary":"\u003cp\u003e6月6日の続き。長沢谷の踊窪から二軒小屋尾根のP1300下に上がり、トラバースして崩落地手前の窪までたどったのが前回、今回はその続きを狙ったのだが。\n緩傾斜で崖っぷちに出会わないぶん、動物の踏み跡だらけで道跡がさっぱりわからない。細かく上下しながら上流へ向かったが、徒労に終わった。\u003c/p\u003e\n\u003chr\u003e\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth style=\"text-align: left\"\u003e項目\u003c/th\u003e\n\t\t\t\t\t\u003cth style=\"text-align: left\"\u003e内容\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e記録日\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e2026年7月04日（土）\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e天候\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e晴れたり曇ったり→小雨→曇り\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003eパーティ\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003eモンターニャ単独\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003eアクセス\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e西東京バスで東日原バス停\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e行程\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e東日原バス停、日原林道、長沢谷、二軒小屋尾根、大ダワ林道古道（？）、モミソ窪右岸尾根、二軒小屋尾根、日原林道、東日原バス停\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003chr\u003e\n\u003ch3 id=\"コースタイム\"\u003eコースタイム\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e記入中\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003ch3 id=\"コースマップ\"\u003eコースマップ\u003c/h3\u003e\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003clink rel=\"stylesheet\" href=\"https://unpkg.com/leaflet@1.9.4/dist/leaflet.css\" /\u003e\n\u003cstyle\u003e\n  .gpx-container {\n    width: 100%;\n    margin: 1.5rem 0;\n    border: 1px solid #ccc;\n    border-radius: 8px;\n    overflow: hidden;\n    background: #fff;\n    box-shadow: 0 2px 6px rgba(0,0,0,0.08);\n    font-family: sans-serif;\n  }\n  .gpx-map { height: 380px; width: 100%; }\n  \n   \n  .gpx-summary {\n    display: flex;\n    flex-wrap: nowrap;\n    justify-content: space-between;\n    align-items: center;\n    background: #f8f9fa;\n    padding: 8px 10px;\n    border-top: 1px solid #e0e0e0;\n    border-bottom: 1px solid #e0e0e0;\n    font-size: 0.8rem;\n    color: #333;\n    overflow-x: auto;\n    white-space: nowrap;\n  }\n  .gpx-summary-item {\n    margin: 0 4px;\n  }\n  .gpx-summary-item strong {\n    color: #007bff;\n    font-size: 0.95rem;\n    margin-left: 2px;\n  }\n\n  .gpx-chart-wrapper {\n    height: 180px;\n    width: 100%;\n    padding: 10px;\n    background: #fafafa;\n    box-sizing: border-box;\n  }\n\n   \n  .start-marker-icon, .goal-marker-icon {\n    background: none;\n    border: none;\n    font-weight: bold;\n    font-size: 11px;\n    color: #ffffff;\n    text-align: center;\n    line-height: 18px;\n  }\n\u003c/style\u003e\n\n\n\u003cdiv class=\"gpx-container\"\u003e\n  \u003cdiv id=\"map-28131025\" class=\"gpx-map\"\u003e\u003c/div\u003e\n  \u003cdiv id=\"summary-28131025\" class=\"gpx-summary\"\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e総距離:\u003cstrong id=\"sum-dist-28131025\"\u003e-\u003c/strong\u003e km\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e累積標高上り:\u003cstrong id=\"sum-up-28131025\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e累積標高下り:\u003cstrong id=\"sum-down-28131025\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e最高標高:\u003cstrong id=\"sum-max-28131025\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e最低標高:\u003cstrong id=\"sum-min-28131025\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n  \u003c/div\u003e\n  \u003cdiv class=\"gpx-chart-wrapper\"\u003e\n    \u003ccanvas id=\"chart-28131025\"\u003e\u003c/canvas\u003e\n  \u003c/div\u003e\n\u003c/div\u003e\n\n\n\u003cscript src=\"https://unpkg.com/leaflet@1.9.4/dist/leaflet.js\"\u003e\u003c/script\u003e\n\u003cscript src=\"https://cdnjs.cloudflare.com/ajax/libs/leaflet-gpx/1.7.0/gpx.min.js\"\u003e\u003c/script\u003e\n\u003cscript src=\"https://cdn.jsdelivr.net/npm/chart.js\"\u003e\u003c/script\u003e\n\n\u003cscript\u003e\nwindow.addEventListener('load', function() {\n  var gpxUrl = '\\/oohc\\/posts\\/2026-07-04\\/20260704_20260704.gpx';\n\n  \n  var map = L.map('map-28131025').setView([0, 0], 10);\n  L.tileLayer('https://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png', {\n    attribution: '\u003ca href=\"https://maps.gsi.go.jp/development/ichiran.html\" target=\"_blank\"\u003e国土地理院\u003c/a\u003e',\n    maxZoom: 18\n  }).addTo(map);\n\n  \n  L.control.scale({\n    imperial: false,\n    position: 'bottomleft'\n  }).addTo(map);\n\n  var hoverMarker = null;\n  var trackPoints = [];\n  var timeLabels = []; \n\n  \n  var ctx = document.getElementById('chart-28131025').getContext('2d');\n  var chart = new Chart(ctx, {\n    type: 'line',\n    data: {\n      datasets: [{\n        label: '標高 (m)',\n        data: [],\n        borderColor: '#007bff',\n        backgroundColor: 'rgba(0, 123, 255, 0.1)',\n        fill: true,\n        borderWidth: 1.5,\n        pointRadius: 0,\n        pointHoverRadius: 6,\n        tension: 0.1\n      }]\n    },\n    options: {\n      responsive: true,\n      maintainAspectRatio: false,\n      interaction: { mode: 'index', intersect: false },\n      plugins: {\n        legend: { display: false },\n        \n        tooltip: {\n          callbacks: {\n            title: function(items) {\n              var index = items[0].dataIndex;\n              var timeStr = timeLabels[index] || '';\n              var distStr = items[0].raw.x.toFixed(2) + ' km';\n              return timeStr ? '時刻: ' + timeStr + '（距離: ' + distStr + '）' : '距離: ' + distStr;\n            },\n            label: function(item) {\n              return '標高: ' + item.raw.y + ' m';\n            }\n          }\n        }\n      },\n      scales: {\n        x: {\n          type: 'linear', \n          display: true,\n          title: { display: true, text: '距離 (km)', font: { size: 10 } },\n          ticks: {\n            font: { size: 10 }\n          },\n          grid: { color: 'rgba(0, 0, 0, 0.05)' }\n        },\n        y: {\n          display: true,\n          title: { display: true, text: '標高 (m)', font: { size: 10 } },\n          ticks: { font: { size: 10 } },\n          grid: { color: 'rgba(0, 0, 0, 0.05)' }\n        }\n      },\n      \n      onHover: function(event, activeElements) {\n        if (activeElements \u0026\u0026 activeElements.length \u003e 0) {\n          var index = activeElements[0].index;\n          updateHoverMarker(index);\n        }\n      }\n    }\n  });\n\n  \n  function updateHoverMarker(index) {\n    var pt = trackPoints[index];\n    if (pt) {\n      if (!hoverMarker) {\n        hoverMarker = L.circleMarker([pt.lat, pt.lng], {\n          radius: 8,\n          fillColor: '#00ffff',\n          color: '#ffffff',\n          weight: 3,\n          opacity: 1,\n          fillOpacity: 1\n        }).addTo(map);\n      } else {\n        hoverMarker.setLatLng([pt.lat, pt.lng]);\n      }\n    }\n  }\n\n  \n  function extractTrackData(layer) {\n    var pts = [];\n    var polylines = [];\n\n    if (typeof layer.getLatLngs === 'function') {\n      var latlngs = layer.getLatLngs();\n      var flat = Array.isArray(latlngs[0]) ? latlngs.flat(Infinity) : latlngs;\n      flat.forEach(function(p) {\n        if (p \u0026\u0026 typeof p.lat === 'number') {\n          pts.push({ lat: p.lat, lng: p.lng });\n        }\n      });\n      if (layer instanceof L.Polyline) {\n        polylines.push(layer);\n      }\n    } else if (typeof layer.eachLayer === 'function') {\n      layer.eachLayer(function(child) {\n        var res = extractTrackData(child);\n        pts = pts.concat(res.pts);\n        polylines = polylines.concat(res.polylines);\n      });\n    }\n    return { pts: pts, polylines: polylines };\n  }\n\n  \n  fetch(gpxUrl)\n    .then(function(response) { return response.text(); })\n    .then(function(xmlText) {\n      var parser = new DOMParser();\n      var xmlDoc = parser.parseFromString(xmlText, \"text/xml\");\n      var trkpts = xmlDoc.getElementsByTagName(\"trkpt\");\n\n      for (var i = 0; i \u003c trkpts.length; i++) {\n        var timeNode = trkpts[i].getElementsByTagName(\"time\")[0];\n        if (timeNode) {\n          var dateObj = new Date(timeNode.textContent);\n          var timeStr = dateObj.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', hour12: false });\n          timeLabels.push(timeStr);\n        } else {\n          timeLabels.push('');\n        }\n      }\n    })\n    .catch(function(err) {\n      console.error(\"GPX Time Parsing Error:\", err);\n    });\n\n  \n  new L.GPX(gpxUrl, {\n    async: true,\n    polyline_options: { color: '#ff3300', weight: 5, opacity: 0.8 },\n    marker_options: { startIconUrl: null, endIconUrl: null, wptIconUrls: null }\n  }).on('loaded', function(e) {\n    var gpx = e.target;\n    map.fitBounds(gpx.getBounds());\n\n    \n    var totalDistMeters = gpx.get_distance();\n    var distKmNum = totalDistMeters / 1000;\n    var distKmStr = distKmNum.toFixed(2);\n    var maxEle = Math.round(gpx.get_elevation_max());\n    var minEle = Math.round(gpx.get_elevation_min());\n    var gainEle = Math.round(gpx.get_elevation_gain());\n    var lossEle = Math.round(gpx.get_elevation_loss());\n\n    document.getElementById('sum-dist-28131025').innerText = distKmStr;\n    document.getElementById('sum-up-28131025').innerText = gainEle;\n    document.getElementById('sum-down-28131025').innerText = lossEle;\n    document.getElementById('sum-max-28131025').innerText = maxEle;\n    document.getElementById('sum-min-28131025').innerText = minEle;\n\n    \n    var eleData = gpx.get_elevation_data();\n    var chartDataPoints = [];\n\n    var extracted = extractTrackData(gpx);\n    trackPoints = extracted.pts;\n\n    \n    if (trackPoints.length \u003e 0) {\n      var startPt = trackPoints[0];\n      var endPt = trackPoints[trackPoints.length - 1];\n\n      L.circleMarker([startPt.lat, startPt.lng], {\n        radius: 9,\n        fillColor: '#28a745',\n        color: '#ffffff',\n        weight: 2,\n        opacity: 1,\n        fillOpacity: 0.9\n      }).addTo(map).bindTooltip('スタート', { permanent: false, direction: 'top' });\n\n      L.circleMarker([endPt.lat, endPt.lng], {\n        radius: 9,\n        fillColor: '#dc3545',\n        color: '#ffffff',\n        weight: 2,\n        opacity: 1,\n        fillOpacity: 0.9\n      }).addTo(map).bindTooltip('ゴール', { permanent: false, direction: 'top' });\n    }\n\n    eleData.forEach(function(item) {\n      var dist = typeof item[0] === 'number' ? item[0] : parseFloat(item[0]);\n      var ele = Math.round(item[1]);\n      chartDataPoints.push({\n        x: parseFloat(dist.toFixed(2)),\n        y: ele\n      });\n    });\n\n    \n    var dynamicStepSize = 1.0;\n    if (distKmNum \u003c= 5) {\n      dynamicStepSize = 0.5;   \n    } else if (distKmNum \u003c= 20) {\n      dynamicStepSize = 1.0;   \n    } else if (distKmNum \u003c= 40) {\n      dynamicStepSize = 5.0;   \n    } else {\n      dynamicStepSize = 10.0;  \n    }\n\n    \n    chart.options.scales.x.max = distKmNum;\n\n    \n    var allowedTicks = [];\n    for (var v = 0; v \u003c distKmNum; v += dynamicStepSize) {\n      allowedTicks.push(parseFloat(v.toFixed(1)));\n    }\n    \n\n    \n    chart.options.scales.x.ticks.callback = function(value) {\n      for (var i = 0; i \u003c allowedTicks.length; i++) {\n        if (Math.abs(value - allowedTicks[i]) \u003c 0.01) {\n          return value + ' km';\n        }\n      }\n      \n      return '';\n    };\n\n    \n    chart.options.scales.x.afterBuildTicks = function(axis) {\n      axis.ticks = allowedTicks.map(function(val) {\n        return { value: val };\n      });\n    };\n\n    chart.data.datasets[0].data = chartDataPoints;\n    chart.update();\n\n    \n    extracted.polylines.forEach(function(polyline) {\n      polyline.on('mousemove', function(ev) {\n        if (!trackPoints.length) return;\n\n        var mouseLatLng = ev.latlng;\n        var closestIndex = 0;\n        var minDist = Infinity;\n\n        for (var i = 0; i \u003c trackPoints.length; i++) {\n          var d = mouseLatLng.distanceTo(L.latLng(trackPoints[i].lat, trackPoints[i].lng));\n          if (d \u003c minDist) {\n            minDist = d;\n            closestIndex = i;\n          }\n        }\n\n        updateHoverMarker(closestIndex);\n\n        chart.setActiveElements([{ datasetIndex: 0, index: closestIndex }]);\n        chart.tooltip.setActiveElements([{ datasetIndex: 0, index: closestIndex }], { x: 0, y: 0 });\n        chart.update();\n      });\n    });\n\n  }).addTo(map);\n});\n\u003c/script\u003e\n\u003chr\u003e\n\u003ch3 id=\"山行記録\"\u003e山行記録\u003c/h3\u003e\n\u003cp\u003e記入中\u003c/p\u003e","title":"Part 2 : 大ダワ林道古道（？）"},{"content":"まだ名前をつけられない径路の3回目。不老林道終点のオキノ十二天から続く道なので初回は不老径路、2回目は山ノ神尾根1100径路としたが。要は、日原川下流域の石尾根北面を辿る山腹道が、いつの時代かあったらしい、という仮説の検証である。\n今日は山ノ神尾根から樽沢を渡りタル沢尾根までを歩いたが、急斜面の岩尾根を乗越しながら続く山腹道は、意外なほど明瞭に残っている。ザレの影響が少ないためか。\n2週続きの雨降りだが、持ち時間の少ない年寄りには天候を言い訳にしているヒマがない。\n/追記～タイトル変更/ はじめ本記録のタイトルを「山ノ神尾根co1100m径路」としたが、その先も西進を続ける径路のタイトルとしてふさわしくないと判断し変更した。\n項目 内容 記録日 2026年6月28日（日） 天候 終日小雨でガスの中、ときどき止む パーティ モンターニャ単独 アクセス 西東京バスで大沢バス停 行程 大沢バス停、山ノ神尾根、山ノ神尾根co1090m地点、〇日原川下流右岸中段道 ✕山ノ神尾根co1100m径路（不老径路）、樽沢、タル沢尾根、東日原バス停 コースタイム 記入中 コースマップ 総距離:- km 累積標高上り:- m 累積標高下り:- m 最高標高:- m 最低標高:- m 山行記録 記入中\n関連する筆者の山行記録 公開日 写真（右クリック→新しいタブ...で拡大します）＋詳細記録 ","permalink":"https://montagna-katokeyci.github.io/oohc/posts/2026-06-28/","summary":"\u003cp\u003eまだ名前をつけられない径路の3回目。不老林道終点のオキノ十二天から続く道なので初回は不老径路、2回目は山ノ神尾根1100径路としたが。要は、日原川下流域の石尾根北面を辿る山腹道が、いつの時代かあったらしい、という仮説の検証である。\u003cbr\u003e\n今日は山ノ神尾根から樽沢を渡りタル沢尾根までを歩いたが、急斜面の岩尾根を乗越しながら続く山腹道は、意外なほど明瞭に残っている。ザレの影響が少ないためか。\u003cbr\u003e\n2週続きの雨降りだが、持ち時間の少ない年寄りには天候を言い訳にしているヒマがない。\u003c/p\u003e\n\u003cp\u003e/追記～タイトル変更/\nはじめ本記録のタイトルを「山ノ神尾根co1100m径路」としたが、その先も西進を続ける径路のタイトルとしてふさわしくないと判断し変更した。\u003c/p\u003e\n\u003chr\u003e\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth style=\"text-align: left\"\u003e項目\u003c/th\u003e\n\t\t\t\t\t\u003cth style=\"text-align: left\"\u003e内容\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e記録日\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e2026年6月28日（日）\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e天候\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e終日小雨でガスの中、ときどき止む\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003eパーティ\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003eモンターニャ単独\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003eアクセス\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e西東京バスで大沢バス停\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e行程\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e大沢バス停、山ノ神尾根、山ノ神尾根co1090m地点、〇日原川下流右岸中段道 ✕山ノ神尾根co1100m径路（不老径路）、樽沢、タル沢尾根、東日原バス停\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003chr\u003e\n\u003ch3 id=\"コースタイム\"\u003eコースタイム\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e記入中\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003ch3 id=\"コースマップ\"\u003eコースマップ\u003c/h3\u003e\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003clink rel=\"stylesheet\" href=\"https://unpkg.com/leaflet@1.9.4/dist/leaflet.css\" /\u003e\n\u003cstyle\u003e\n  .gpx-container {\n    width: 100%;\n    margin: 1.5rem 0;\n    border: 1px solid #ccc;\n    border-radius: 8px;\n    overflow: hidden;\n    background: #fff;\n    box-shadow: 0 2px 6px rgba(0,0,0,0.08);\n    font-family: sans-serif;\n  }\n  .gpx-map { height: 380px; width: 100%; }\n  \n   \n  .gpx-summary {\n    display: flex;\n    flex-wrap: nowrap;\n    justify-content: space-between;\n    align-items: center;\n    background: #f8f9fa;\n    padding: 8px 10px;\n    border-top: 1px solid #e0e0e0;\n    border-bottom: 1px solid #e0e0e0;\n    font-size: 0.8rem;\n    color: #333;\n    overflow-x: auto;\n    white-space: nowrap;\n  }\n  .gpx-summary-item {\n    margin: 0 4px;\n  }\n  .gpx-summary-item strong {\n    color: #007bff;\n    font-size: 0.95rem;\n    margin-left: 2px;\n  }\n\n  .gpx-chart-wrapper {\n    height: 180px;\n    width: 100%;\n    padding: 10px;\n    background: #fafafa;\n    box-sizing: border-box;\n  }\n\n   \n  .start-marker-icon, .goal-marker-icon {\n    background: none;\n    border: none;\n    font-weight: bold;\n    font-size: 11px;\n    color: #ffffff;\n    text-align: center;\n    line-height: 18px;\n  }\n\u003c/style\u003e\n\n\n\u003cdiv class=\"gpx-container\"\u003e\n  \u003cdiv id=\"map-bfbf9460\" class=\"gpx-map\"\u003e\u003c/div\u003e\n  \u003cdiv id=\"summary-bfbf9460\" class=\"gpx-summary\"\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e総距離:\u003cstrong id=\"sum-dist-bfbf9460\"\u003e-\u003c/strong\u003e km\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e累積標高上り:\u003cstrong id=\"sum-up-bfbf9460\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e累積標高下り:\u003cstrong id=\"sum-down-bfbf9460\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e最高標高:\u003cstrong id=\"sum-max-bfbf9460\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e最低標高:\u003cstrong id=\"sum-min-bfbf9460\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n  \u003c/div\u003e\n  \u003cdiv class=\"gpx-chart-wrapper\"\u003e\n    \u003ccanvas id=\"chart-bfbf9460\"\u003e\u003c/canvas\u003e\n  \u003c/div\u003e\n\u003c/div\u003e\n\n\n\u003cscript src=\"https://unpkg.com/leaflet@1.9.4/dist/leaflet.js\"\u003e\u003c/script\u003e\n\u003cscript src=\"https://cdnjs.cloudflare.com/ajax/libs/leaflet-gpx/1.7.0/gpx.min.js\"\u003e\u003c/script\u003e\n\u003cscript src=\"https://cdn.jsdelivr.net/npm/chart.js\"\u003e\u003c/script\u003e\n\n\u003cscript\u003e\nwindow.addEventListener('load', function() {\n  var gpxUrl = '\\/oohc\\/posts\\/2026-06-28\\/20260628_20260628.gpx';\n\n  \n  var map = L.map('map-bfbf9460').setView([0, 0], 10);\n  L.tileLayer('https://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png', {\n    attribution: '\u003ca href=\"https://maps.gsi.go.jp/development/ichiran.html\" target=\"_blank\"\u003e国土地理院\u003c/a\u003e',\n    maxZoom: 18\n  }).addTo(map);\n\n  \n  L.control.scale({\n    imperial: false,\n    position: 'bottomleft'\n  }).addTo(map);\n\n  var hoverMarker = null;\n  var trackPoints = [];\n  var timeLabels = []; \n\n  \n  var ctx = document.getElementById('chart-bfbf9460').getContext('2d');\n  var chart = new Chart(ctx, {\n    type: 'line',\n    data: {\n      datasets: [{\n        label: '標高 (m)',\n        data: [],\n        borderColor: '#007bff',\n        backgroundColor: 'rgba(0, 123, 255, 0.1)',\n        fill: true,\n        borderWidth: 1.5,\n        pointRadius: 0,\n        pointHoverRadius: 6,\n        tension: 0.1\n      }]\n    },\n    options: {\n      responsive: true,\n      maintainAspectRatio: false,\n      interaction: { mode: 'index', intersect: false },\n      plugins: {\n        legend: { display: false },\n        \n        tooltip: {\n          callbacks: {\n            title: function(items) {\n              var index = items[0].dataIndex;\n              var timeStr = timeLabels[index] || '';\n              var distStr = items[0].raw.x.toFixed(2) + ' km';\n              return timeStr ? '時刻: ' + timeStr + '（距離: ' + distStr + '）' : '距離: ' + distStr;\n            },\n            label: function(item) {\n              return '標高: ' + item.raw.y + ' m';\n            }\n          }\n        }\n      },\n      scales: {\n        x: {\n          type: 'linear', \n          display: true,\n          title: { display: true, text: '距離 (km)', font: { size: 10 } },\n          ticks: {\n            font: { size: 10 }\n          },\n          grid: { color: 'rgba(0, 0, 0, 0.05)' }\n        },\n        y: {\n          display: true,\n          title: { display: true, text: '標高 (m)', font: { size: 10 } },\n          ticks: { font: { size: 10 } },\n          grid: { color: 'rgba(0, 0, 0, 0.05)' }\n        }\n      },\n      \n      onHover: function(event, activeElements) {\n        if (activeElements \u0026\u0026 activeElements.length \u003e 0) {\n          var index = activeElements[0].index;\n          updateHoverMarker(index);\n        }\n      }\n    }\n  });\n\n  \n  function updateHoverMarker(index) {\n    var pt = trackPoints[index];\n    if (pt) {\n      if (!hoverMarker) {\n        hoverMarker = L.circleMarker([pt.lat, pt.lng], {\n          radius: 8,\n          fillColor: '#00ffff',\n          color: '#ffffff',\n          weight: 3,\n          opacity: 1,\n          fillOpacity: 1\n        }).addTo(map);\n      } else {\n        hoverMarker.setLatLng([pt.lat, pt.lng]);\n      }\n    }\n  }\n\n  \n  function extractTrackData(layer) {\n    var pts = [];\n    var polylines = [];\n\n    if (typeof layer.getLatLngs === 'function') {\n      var latlngs = layer.getLatLngs();\n      var flat = Array.isArray(latlngs[0]) ? latlngs.flat(Infinity) : latlngs;\n      flat.forEach(function(p) {\n        if (p \u0026\u0026 typeof p.lat === 'number') {\n          pts.push({ lat: p.lat, lng: p.lng });\n        }\n      });\n      if (layer instanceof L.Polyline) {\n        polylines.push(layer);\n      }\n    } else if (typeof layer.eachLayer === 'function') {\n      layer.eachLayer(function(child) {\n        var res = extractTrackData(child);\n        pts = pts.concat(res.pts);\n        polylines = polylines.concat(res.polylines);\n      });\n    }\n    return { pts: pts, polylines: polylines };\n  }\n\n  \n  fetch(gpxUrl)\n    .then(function(response) { return response.text(); })\n    .then(function(xmlText) {\n      var parser = new DOMParser();\n      var xmlDoc = parser.parseFromString(xmlText, \"text/xml\");\n      var trkpts = xmlDoc.getElementsByTagName(\"trkpt\");\n\n      for (var i = 0; i \u003c trkpts.length; i++) {\n        var timeNode = trkpts[i].getElementsByTagName(\"time\")[0];\n        if (timeNode) {\n          var dateObj = new Date(timeNode.textContent);\n          var timeStr = dateObj.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', hour12: false });\n          timeLabels.push(timeStr);\n        } else {\n          timeLabels.push('');\n        }\n      }\n    })\n    .catch(function(err) {\n      console.error(\"GPX Time Parsing Error:\", err);\n    });\n\n  \n  new L.GPX(gpxUrl, {\n    async: true,\n    polyline_options: { color: '#ff3300', weight: 5, opacity: 0.8 },\n    marker_options: { startIconUrl: null, endIconUrl: null, wptIconUrls: null }\n  }).on('loaded', function(e) {\n    var gpx = e.target;\n    map.fitBounds(gpx.getBounds());\n\n    \n    var totalDistMeters = gpx.get_distance();\n    var distKmNum = totalDistMeters / 1000;\n    var distKmStr = distKmNum.toFixed(2);\n    var maxEle = Math.round(gpx.get_elevation_max());\n    var minEle = Math.round(gpx.get_elevation_min());\n    var gainEle = Math.round(gpx.get_elevation_gain());\n    var lossEle = Math.round(gpx.get_elevation_loss());\n\n    document.getElementById('sum-dist-bfbf9460').innerText = distKmStr;\n    document.getElementById('sum-up-bfbf9460').innerText = gainEle;\n    document.getElementById('sum-down-bfbf9460').innerText = lossEle;\n    document.getElementById('sum-max-bfbf9460').innerText = maxEle;\n    document.getElementById('sum-min-bfbf9460').innerText = minEle;\n\n    \n    var eleData = gpx.get_elevation_data();\n    var chartDataPoints = [];\n\n    var extracted = extractTrackData(gpx);\n    trackPoints = extracted.pts;\n\n    \n    if (trackPoints.length \u003e 0) {\n      var startPt = trackPoints[0];\n      var endPt = trackPoints[trackPoints.length - 1];\n\n      L.circleMarker([startPt.lat, startPt.lng], {\n        radius: 9,\n        fillColor: '#28a745',\n        color: '#ffffff',\n        weight: 2,\n        opacity: 1,\n        fillOpacity: 0.9\n      }).addTo(map).bindTooltip('スタート', { permanent: false, direction: 'top' });\n\n      L.circleMarker([endPt.lat, endPt.lng], {\n        radius: 9,\n        fillColor: '#dc3545',\n        color: '#ffffff',\n        weight: 2,\n        opacity: 1,\n        fillOpacity: 0.9\n      }).addTo(map).bindTooltip('ゴール', { permanent: false, direction: 'top' });\n    }\n\n    eleData.forEach(function(item) {\n      var dist = typeof item[0] === 'number' ? item[0] : parseFloat(item[0]);\n      var ele = Math.round(item[1]);\n      chartDataPoints.push({\n        x: parseFloat(dist.toFixed(2)),\n        y: ele\n      });\n    });\n\n    \n    var dynamicStepSize = 1.0;\n    if (distKmNum \u003c= 5) {\n      dynamicStepSize = 0.5;   \n    } else if (distKmNum \u003c= 20) {\n      dynamicStepSize = 1.0;   \n    } else if (distKmNum \u003c= 40) {\n      dynamicStepSize = 5.0;   \n    } else {\n      dynamicStepSize = 10.0;  \n    }\n\n    \n    chart.options.scales.x.max = distKmNum;\n\n    \n    var allowedTicks = [];\n    for (var v = 0; v \u003c distKmNum; v += dynamicStepSize) {\n      allowedTicks.push(parseFloat(v.toFixed(1)));\n    }\n    \n\n    \n    chart.options.scales.x.ticks.callback = function(value) {\n      for (var i = 0; i \u003c allowedTicks.length; i++) {\n        if (Math.abs(value - allowedTicks[i]) \u003c 0.01) {\n          return value + ' km';\n        }\n      }\n      \n      return '';\n    };\n\n    \n    chart.options.scales.x.afterBuildTicks = function(axis) {\n      axis.ticks = allowedTicks.map(function(val) {\n        return { value: val };\n      });\n    };\n\n    chart.data.datasets[0].data = chartDataPoints;\n    chart.update();\n\n    \n    extracted.polylines.forEach(function(polyline) {\n      polyline.on('mousemove', function(ev) {\n        if (!trackPoints.length) return;\n\n        var mouseLatLng = ev.latlng;\n        var closestIndex = 0;\n        var minDist = Infinity;\n\n        for (var i = 0; i \u003c trackPoints.length; i++) {\n          var d = mouseLatLng.distanceTo(L.latLng(trackPoints[i].lat, trackPoints[i].lng));\n          if (d \u003c minDist) {\n            minDist = d;\n            closestIndex = i;\n          }\n        }\n\n        updateHoverMarker(closestIndex);\n\n        chart.setActiveElements([{ datasetIndex: 0, index: closestIndex }]);\n        chart.tooltip.setActiveElements([{ datasetIndex: 0, index: closestIndex }], { x: 0, y: 0 });\n        chart.update();\n      });\n    });\n\n  }).addTo(map);\n});\n\u003c/script\u003e\n\u003chr\u003e\n\u003ch3 id=\"山行記録\"\u003e山行記録\u003c/h3\u003e\n\u003cp\u003e記入中\u003c/p\u003e","title":"Part 3 : 日原川下流右岸中段道"},{"content":"いきなりのPart 2 は（笑、前週の「不老径路」の模様替え。適当な名前を思いつくまで、時間を要するかもしれない。\n前の土曜は不老林道終点（＝オキノ十二天）からヒカゲザス尾根のP1080まで。今日は続きを狩鞍沢、地理院地図に載る小屋跡、山ノ神尾根と繋いだ。この道がどこまで続くのか興味津々。雨降りなので短く歩いた。\n概略は本文を、詳細は写真のキャプションを参照。\n/追記～タイトル変更/ はじめ本記録のタイトルを「山ノ神尾根co1100m径路」としたが、その先も西進を続ける径路のタイトルとしてふさわしくないと判断し変更した。\n項目 内容 記録日 2026年6月20日（土） 天候 ガスのち昼から雨 パーティ モンターニャ単独 アクセス JR青梅線で奥多摩駅 行程 奥多摩駅、大沢、ヒカゲザス尾根、P1080、日原川下流右岸中段道、狩鞍沢、山ノ神尾根、狩倉山、石尾根、奥多摩駅 コースタイム 07:18〜奥多摩駅スタート 07:57〜大沢駐車場付近〜08:21 09:49〜ヒカゲザス尾根P1080付近〜10:31 10:36～山腹道（日原川下流右岸中段道）に入る、co1090m 11:14～狩鞍沢～11:24 12:00～小屋跡、山ノ神尾根co1170m東南尾根のco1070m～12:08 12:19～山ノ神尾根、co1090m～12:25 13:09～狩倉山～13:15 14:53〜奥多摩駅フィニッシュ コースマップ 総距離:- km 累積標高上り:- m 累積標高下り:- m 最高標高:- m 最低標高:- m 山行記録 ヒカゲザス尾根 本レポートのメインテーマではないが、少し触れておきたい。 記録者のなかでは、ヒカゲザス尾根はかなり特徴的な位置づけになりつつある。 まず、何か所かある露岩の急斜面が登りにくい。「岩崖」ほどではないのでハイカーでもたどれるが、難度はけっこう高い。露岩の斜面を回避する踏み跡も目につく。ルート取りであれこれ考えさせられ、「次は別のラインで上がってみようか」の気分にさせられる尾根は、多くはない。 そして、その険しい尾根の周辺で見かける植林エリアが、とても丁寧に手入れされている。通いにくい山奥の山林を守る労力は、並大抵のものではないだろう。ただ頭が下がるばかりだ。―― 性懲りもなく「いったいどうやって通うのだろう」の疑問がワンセットで湧いてくるのは、呆れて許していただきたいが。\n日原川下流右岸中段道（ヒカゲザス尾根から山ノ神尾根まで） ときに尋常ではない傾斜のなかを、意外にもしっかりした細道が続く。もちろん踏破するには、錯綜する動物の踏み跡との区別がつき・植林の「出口」を運良く間違わなければ、という条件がつく。 歩行難度では狩鞍沢を渡るあたりがハイライトになる。机上演習で、それまで気づかなかった建物記号を山ノ神尾根の南面co1070mに見つけたのは掘り出し物だった。ヒカゲザス尾根を発つ地点と標高が合うので、「道はきっとあるはず」と楽観的に取り掛かれたのが幸いしたか。\n公開日 20260714\n写真（右クリック→新しいタブ...で拡大します）＋詳細記録 （00:00・写真1） 先週の「不老林道始点～ヒカゲザス尾根」と今回の「ヒカゲザス尾根～山ノ神尾根」を併せ、たどったルートを青線でしめす。 （07:17・写真2） 道中は小雨、駅に着けば厚い雲、午後から雨の予報の奥多摩駅。見かけたハイカーは一人だけだった。 大沢まで歩くことにする。そういう気分。 （08:26・写真3） 例によってココからヒカゲザス尾根に取付く。\n踏み跡が錯綜するなかで、いったん家入沢寄りに進路を振ってから登っている。 （09:45・写真4） 尾根の南に回り込む踏み跡を選び、いっぽん南の小尾根からP1080の南に出る、というルートをたどった。 （09:52・写真5） P1080の、正確には50m東で尾根に上がる。所要があり長居する。 （10:35・写真6） 前の写真から130m進み、山腹道の探索にとりかかる。 （10:36・写真7） その前に、同地点の南面を撮る。変哲のない窪状斜面だから、写真4→7→6、とたどるのに問題はないのを確認しておく。 （10:39・写真8） 日原川下流右岸中段道のPart 2 をスタートして数分後。この傾斜のなかを踏み跡が続く。カメラの水準器はゼロになっている。 （10:43・写真9） 踏み跡が数条に分かれだす。それぞれ足を乗せたうえでいちばん上を選んでいる。 （10:56・写真10） 切所に入る。山ノ神尾根P1286の東300mあたり、狩鞍沢の両岸が剣呑なのは机上のプランニングでいちばんの懸念だった。\nお「境界標柱があるんだから道跡を歩いている、ってことにしたい。マリアさまは何と仰ってる？」\nオ「…………」 （11:03・写真11） 大岩下を巻く。フレーミングを誤り、道は写真の右下。 （11:05・写真12） 大岩の尾根の隣は崩落窪。右下の、横になった木の根元に上がる。降雨の影響で地面が締っているにしても、足裏の安定感が尋常ではない。ヒカゲザス尾根を発ってからの疑念が、確信に変わる。\n「歩いている人が、いるな」。 （11:17・写真13） ガレだして足裏感覚が効かないなかを狩鞍沢に下りる。「先に進む踏み跡が見つかるか」。息の詰まるような感覚を味わうのがオフトレイル・ハイキングの醍醐味か（笑 （11:19・写真14） 続きはあった。\nお「マリアさまっ！」\nオ「…………」 （11:28・写真15） 小尾根を乗越して続きの踏み跡。\nこの先、地形図に岩記号が連なる尾根が控えるので、まだ油断はできない。 （11:31・写真16） コレだよ。繰り返すがカメラの水準器は常にゼロ。露岩のあいだを縫う踏み跡をたどり、 （11:35・写真17） 大岩の下を通過して進路。 （11:39・写真18） 岩記号の尾根の最終局面にかかっている。\nお「オルソくん、祈ろう。このパーティにはマリアさまのご加護がある」\nオ「…………」 （11:45・写真19） 地形図的には難場を抜けたっぽい。 （11:54・写真20） 広葉樹林記号のあたりで植林に入る。「植林のなかの道跡探し」のややこしさは残るにしても、難所は越えた。「きょうは何を飲ろうか」の気分。 （12:03・写真21） 幸い紛らわしい分岐もなく小屋跡に着く。\n山ノ神尾根の1170付近から東南に下がる尾根の、1070に位置する。地形図どおり小尾根の南面にあり、ガスのなかを探すのにやや手間取った。 （12:05・写真22） 斜面の上にどう建っていたんだろう。\nお「おじさん的にはものすごく萌える小屋跡なんだ。よ～く目に焼き付けとこう」\nオ「……………………」 （12:07・写真23） 付近はにぎやか。 （12:13・写真24） 小屋跡を発ち、思いもよらぬ最後の難所に出会う。この伐木帯にガスで、さっぱり進路がわからない。 （12:15・写真25） ラッキーにも大岩下に出る。現地点が「道跡」のはずだ。 （12:18・写真26） 道跡が復活し、最後は上げて、 （12:20・写真27） 山ノ神尾根の1090にたどり着く。本降りになり傘を出す。\nお「撤収路がまいど登りなのはナゼなんだろな。マリアさまに聞いといてくれる？」\nオ「…………」 （13:10・写真28） 傘を差しつつ最後の一服。\nお「ハイボール目指して降る！降るぞ！」\nオ「……………………」 （14:16・写真29） お「山の神様にもお礼は欠かさずに、だ。マリアさまにはナイショにな」\nオ「…………」 ","permalink":"https://montagna-katokeyci.github.io/oohc/posts/2026-06-20/","summary":"\u003cp\u003eいきなりのPart 2 は（笑、前週の「不老径路」の模様替え。適当な名前を思いつくまで、時間を要するかもしれない。\u003cbr\u003e\n前の土曜は不老林道終点（＝オキノ十二天）からヒカゲザス尾根のP1080まで。今日は続きを狩鞍沢、地理院地図に載る小屋跡、山ノ神尾根と繋いだ。この道がどこまで続くのか興味津々。雨降りなので短く歩いた。\u003cbr\u003e\n概略は本文を、詳細は写真のキャプションを参照。\u003c/p\u003e\n\u003cp\u003e/追記～タイトル変更/\nはじめ本記録のタイトルを「山ノ神尾根co1100m径路」としたが、その先も西進を続ける径路のタイトルとしてふさわしくないと判断し変更した。\u003c/p\u003e\n\u003chr\u003e\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth style=\"text-align: left\"\u003e項目\u003c/th\u003e\n\t\t\t\t\t\u003cth style=\"text-align: left\"\u003e内容\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e記録日\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e2026年6月20日（土）\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e天候\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003eガスのち昼から雨\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003eパーティ\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003eモンターニャ単独\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003eアクセス\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003eJR青梅線で奥多摩駅\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e行程\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e奥多摩駅、大沢、ヒカゲザス尾根、P1080、日原川下流右岸中段道、狩鞍沢、山ノ神尾根、狩倉山、石尾根、奥多摩駅\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003chr\u003e\n\u003ch3 id=\"コースタイム\"\u003eコースタイム\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e07:18〜奥多摩駅スタート\u003c/li\u003e\n\u003cli\u003e07:57〜大沢駐車場付近〜08:21\u003c/li\u003e\n\u003cli\u003e09:49〜ヒカゲザス尾根P1080付近〜10:31\u003c/li\u003e\n\u003cli\u003e10:36～山腹道（日原川下流右岸中段道）に入る、co1090m\u003c/li\u003e\n\u003cli\u003e11:14～狩鞍沢～11:24\u003c/li\u003e\n\u003cli\u003e12:00～小屋跡、山ノ神尾根co1170m東南尾根のco1070m～12:08\u003c/li\u003e\n\u003cli\u003e12:19～山ノ神尾根、co1090m～12:25\u003c/li\u003e\n\u003cli\u003e13:09～狩倉山～13:15\u003c/li\u003e\n\u003cli\u003e14:53〜奥多摩駅フィニッシュ\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003ch3 id=\"コースマップ\"\u003eコースマップ\u003c/h3\u003e\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003clink rel=\"stylesheet\" href=\"https://unpkg.com/leaflet@1.9.4/dist/leaflet.css\" /\u003e\n\u003cstyle\u003e\n  .gpx-container {\n    width: 100%;\n    margin: 1.5rem 0;\n    border: 1px solid #ccc;\n    border-radius: 8px;\n    overflow: hidden;\n    background: #fff;\n    box-shadow: 0 2px 6px rgba(0,0,0,0.08);\n    font-family: sans-serif;\n  }\n  .gpx-map { height: 380px; width: 100%; }\n  \n   \n  .gpx-summary {\n    display: flex;\n    flex-wrap: nowrap;\n    justify-content: space-between;\n    align-items: center;\n    background: #f8f9fa;\n    padding: 8px 10px;\n    border-top: 1px solid #e0e0e0;\n    border-bottom: 1px solid #e0e0e0;\n    font-size: 0.8rem;\n    color: #333;\n    overflow-x: auto;\n    white-space: nowrap;\n  }\n  .gpx-summary-item {\n    margin: 0 4px;\n  }\n  .gpx-summary-item strong {\n    color: #007bff;\n    font-size: 0.95rem;\n    margin-left: 2px;\n  }\n\n  .gpx-chart-wrapper {\n    height: 180px;\n    width: 100%;\n    padding: 10px;\n    background: #fafafa;\n    box-sizing: border-box;\n  }\n\n   \n  .start-marker-icon, .goal-marker-icon {\n    background: none;\n    border: none;\n    font-weight: bold;\n    font-size: 11px;\n    color: #ffffff;\n    text-align: center;\n    line-height: 18px;\n  }\n\u003c/style\u003e\n\n\n\u003cdiv class=\"gpx-container\"\u003e\n  \u003cdiv id=\"map-d4d23bd2\" class=\"gpx-map\"\u003e\u003c/div\u003e\n  \u003cdiv id=\"summary-d4d23bd2\" class=\"gpx-summary\"\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e総距離:\u003cstrong id=\"sum-dist-d4d23bd2\"\u003e-\u003c/strong\u003e km\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e累積標高上り:\u003cstrong id=\"sum-up-d4d23bd2\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e累積標高下り:\u003cstrong id=\"sum-down-d4d23bd2\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e最高標高:\u003cstrong id=\"sum-max-d4d23bd2\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e最低標高:\u003cstrong id=\"sum-min-d4d23bd2\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n  \u003c/div\u003e\n  \u003cdiv class=\"gpx-chart-wrapper\"\u003e\n    \u003ccanvas id=\"chart-d4d23bd2\"\u003e\u003c/canvas\u003e\n  \u003c/div\u003e\n\u003c/div\u003e\n\n\n\u003cscript src=\"https://unpkg.com/leaflet@1.9.4/dist/leaflet.js\"\u003e\u003c/script\u003e\n\u003cscript src=\"https://cdnjs.cloudflare.com/ajax/libs/leaflet-gpx/1.7.0/gpx.min.js\"\u003e\u003c/script\u003e\n\u003cscript src=\"https://cdn.jsdelivr.net/npm/chart.js\"\u003e\u003c/script\u003e\n\n\u003cscript\u003e\nwindow.addEventListener('load', function() {\n  var gpxUrl = '\\/oohc\\/posts\\/2026-06-20\\/20260620_20260620.gpx';\n\n  \n  var map = L.map('map-d4d23bd2').setView([0, 0], 10);\n  L.tileLayer('https://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png', {\n    attribution: '\u003ca href=\"https://maps.gsi.go.jp/development/ichiran.html\" target=\"_blank\"\u003e国土地理院\u003c/a\u003e',\n    maxZoom: 18\n  }).addTo(map);\n\n  \n  L.control.scale({\n    imperial: false,\n    position: 'bottomleft'\n  }).addTo(map);\n\n  var hoverMarker = null;\n  var trackPoints = [];\n  var timeLabels = []; \n\n  \n  var ctx = document.getElementById('chart-d4d23bd2').getContext('2d');\n  var chart = new Chart(ctx, {\n    type: 'line',\n    data: {\n      datasets: [{\n        label: '標高 (m)',\n        data: [],\n        borderColor: '#007bff',\n        backgroundColor: 'rgba(0, 123, 255, 0.1)',\n        fill: true,\n        borderWidth: 1.5,\n        pointRadius: 0,\n        pointHoverRadius: 6,\n        tension: 0.1\n      }]\n    },\n    options: {\n      responsive: true,\n      maintainAspectRatio: false,\n      interaction: { mode: 'index', intersect: false },\n      plugins: {\n        legend: { display: false },\n        \n        tooltip: {\n          callbacks: {\n            title: function(items) {\n              var index = items[0].dataIndex;\n              var timeStr = timeLabels[index] || '';\n              var distStr = items[0].raw.x.toFixed(2) + ' km';\n              return timeStr ? '時刻: ' + timeStr + '（距離: ' + distStr + '）' : '距離: ' + distStr;\n            },\n            label: function(item) {\n              return '標高: ' + item.raw.y + ' m';\n            }\n          }\n        }\n      },\n      scales: {\n        x: {\n          type: 'linear', \n          display: true,\n          title: { display: true, text: '距離 (km)', font: { size: 10 } },\n          ticks: {\n            font: { size: 10 }\n          },\n          grid: { color: 'rgba(0, 0, 0, 0.05)' }\n        },\n        y: {\n          display: true,\n          title: { display: true, text: '標高 (m)', font: { size: 10 } },\n          ticks: { font: { size: 10 } },\n          grid: { color: 'rgba(0, 0, 0, 0.05)' }\n        }\n      },\n      \n      onHover: function(event, activeElements) {\n        if (activeElements \u0026\u0026 activeElements.length \u003e 0) {\n          var index = activeElements[0].index;\n          updateHoverMarker(index);\n        }\n      }\n    }\n  });\n\n  \n  function updateHoverMarker(index) {\n    var pt = trackPoints[index];\n    if (pt) {\n      if (!hoverMarker) {\n        hoverMarker = L.circleMarker([pt.lat, pt.lng], {\n          radius: 8,\n          fillColor: '#00ffff',\n          color: '#ffffff',\n          weight: 3,\n          opacity: 1,\n          fillOpacity: 1\n        }).addTo(map);\n      } else {\n        hoverMarker.setLatLng([pt.lat, pt.lng]);\n      }\n    }\n  }\n\n  \n  function extractTrackData(layer) {\n    var pts = [];\n    var polylines = [];\n\n    if (typeof layer.getLatLngs === 'function') {\n      var latlngs = layer.getLatLngs();\n      var flat = Array.isArray(latlngs[0]) ? latlngs.flat(Infinity) : latlngs;\n      flat.forEach(function(p) {\n        if (p \u0026\u0026 typeof p.lat === 'number') {\n          pts.push({ lat: p.lat, lng: p.lng });\n        }\n      });\n      if (layer instanceof L.Polyline) {\n        polylines.push(layer);\n      }\n    } else if (typeof layer.eachLayer === 'function') {\n      layer.eachLayer(function(child) {\n        var res = extractTrackData(child);\n        pts = pts.concat(res.pts);\n        polylines = polylines.concat(res.polylines);\n      });\n    }\n    return { pts: pts, polylines: polylines };\n  }\n\n  \n  fetch(gpxUrl)\n    .then(function(response) { return response.text(); })\n    .then(function(xmlText) {\n      var parser = new DOMParser();\n      var xmlDoc = parser.parseFromString(xmlText, \"text/xml\");\n      var trkpts = xmlDoc.getElementsByTagName(\"trkpt\");\n\n      for (var i = 0; i \u003c trkpts.length; i++) {\n        var timeNode = trkpts[i].getElementsByTagName(\"time\")[0];\n        if (timeNode) {\n          var dateObj = new Date(timeNode.textContent);\n          var timeStr = dateObj.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', hour12: false });\n          timeLabels.push(timeStr);\n        } else {\n          timeLabels.push('');\n        }\n      }\n    })\n    .catch(function(err) {\n      console.error(\"GPX Time Parsing Error:\", err);\n    });\n\n  \n  new L.GPX(gpxUrl, {\n    async: true,\n    polyline_options: { color: '#ff3300', weight: 5, opacity: 0.8 },\n    marker_options: { startIconUrl: null, endIconUrl: null, wptIconUrls: null }\n  }).on('loaded', function(e) {\n    var gpx = e.target;\n    map.fitBounds(gpx.getBounds());\n\n    \n    var totalDistMeters = gpx.get_distance();\n    var distKmNum = totalDistMeters / 1000;\n    var distKmStr = distKmNum.toFixed(2);\n    var maxEle = Math.round(gpx.get_elevation_max());\n    var minEle = Math.round(gpx.get_elevation_min());\n    var gainEle = Math.round(gpx.get_elevation_gain());\n    var lossEle = Math.round(gpx.get_elevation_loss());\n\n    document.getElementById('sum-dist-d4d23bd2').innerText = distKmStr;\n    document.getElementById('sum-up-d4d23bd2').innerText = gainEle;\n    document.getElementById('sum-down-d4d23bd2').innerText = lossEle;\n    document.getElementById('sum-max-d4d23bd2').innerText = maxEle;\n    document.getElementById('sum-min-d4d23bd2').innerText = minEle;\n\n    \n    var eleData = gpx.get_elevation_data();\n    var chartDataPoints = [];\n\n    var extracted = extractTrackData(gpx);\n    trackPoints = extracted.pts;\n\n    \n    if (trackPoints.length \u003e 0) {\n      var startPt = trackPoints[0];\n      var endPt = trackPoints[trackPoints.length - 1];\n\n      L.circleMarker([startPt.lat, startPt.lng], {\n        radius: 9,\n        fillColor: '#28a745',\n        color: '#ffffff',\n        weight: 2,\n        opacity: 1,\n        fillOpacity: 0.9\n      }).addTo(map).bindTooltip('スタート', { permanent: false, direction: 'top' });\n\n      L.circleMarker([endPt.lat, endPt.lng], {\n        radius: 9,\n        fillColor: '#dc3545',\n        color: '#ffffff',\n        weight: 2,\n        opacity: 1,\n        fillOpacity: 0.9\n      }).addTo(map).bindTooltip('ゴール', { permanent: false, direction: 'top' });\n    }\n\n    eleData.forEach(function(item) {\n      var dist = typeof item[0] === 'number' ? item[0] : parseFloat(item[0]);\n      var ele = Math.round(item[1]);\n      chartDataPoints.push({\n        x: parseFloat(dist.toFixed(2)),\n        y: ele\n      });\n    });\n\n    \n    var dynamicStepSize = 1.0;\n    if (distKmNum \u003c= 5) {\n      dynamicStepSize = 0.5;   \n    } else if (distKmNum \u003c= 20) {\n      dynamicStepSize = 1.0;   \n    } else if (distKmNum \u003c= 40) {\n      dynamicStepSize = 5.0;   \n    } else {\n      dynamicStepSize = 10.0;  \n    }\n\n    \n    chart.options.scales.x.max = distKmNum;\n\n    \n    var allowedTicks = [];\n    for (var v = 0; v \u003c distKmNum; v += dynamicStepSize) {\n      allowedTicks.push(parseFloat(v.toFixed(1)));\n    }\n    \n\n    \n    chart.options.scales.x.ticks.callback = function(value) {\n      for (var i = 0; i \u003c allowedTicks.length; i++) {\n        if (Math.abs(value - allowedTicks[i]) \u003c 0.01) {\n          return value + ' km';\n        }\n      }\n      \n      return '';\n    };\n\n    \n    chart.options.scales.x.afterBuildTicks = function(axis) {\n      axis.ticks = allowedTicks.map(function(val) {\n        return { value: val };\n      });\n    };\n\n    chart.data.datasets[0].data = chartDataPoints;\n    chart.update();\n\n    \n    extracted.polylines.forEach(function(polyline) {\n      polyline.on('mousemove', function(ev) {\n        if (!trackPoints.length) return;\n\n        var mouseLatLng = ev.latlng;\n        var closestIndex = 0;\n        var minDist = Infinity;\n\n        for (var i = 0; i \u003c trackPoints.length; i++) {\n          var d = mouseLatLng.distanceTo(L.latLng(trackPoints[i].lat, trackPoints[i].lng));\n          if (d \u003c minDist) {\n            minDist = d;\n            closestIndex = i;\n          }\n        }\n\n        updateHoverMarker(closestIndex);\n\n        chart.setActiveElements([{ datasetIndex: 0, index: closestIndex }]);\n        chart.tooltip.setActiveElements([{ datasetIndex: 0, index: closestIndex }], { x: 0, y: 0 });\n        chart.update();\n      });\n    });\n\n  }).addTo(map);\n});\n\u003c/script\u003e\n\u003chr\u003e\n\u003ch3 id=\"山行記録\"\u003e山行記録\u003c/h3\u003e\n\u003ch4 id=\"ヒカゲザス尾根\"\u003e  ヒカゲザス尾根\u003c/h4\u003e\n\u003cp\u003e本レポートのメインテーマではないが、少し触れておきたい。\n記録者のなかでは、ヒカゲザス尾根はかなり特徴的な位置づけになりつつある。\nまず、何か所かある露岩の急斜面が登りにくい。「岩崖」ほどではないのでハイカーでもたどれるが、難度はけっこう高い。露岩の斜面を回避する踏み跡も目につく。ルート取りであれこれ考えさせられ、「次は別のラインで上がってみようか」の気分にさせられる尾根は、多くはない。\nそして、その険しい尾根の周辺で見かける植林エリアが、とても丁寧に手入れされている。通いにくい山奥の山林を守る労力は、並大抵のものではないだろう。ただ頭が下がるばかりだ。―― 性懲りもなく「いったいどうやって通うのだろう」の疑問がワンセットで湧いてくるのは、呆れて許していただきたいが。\u003c/p\u003e","title":"Part 2 : 日原川下流右岸中段道"},{"content":"昨年夏に家入沢を下降したさい、右岸に農大の小屋を見た。オキノ十二天までの不老林道と標高が合うので、道が繋がっているだろう。\n問題はその先で、「家入沢でおしまい」のはずもない。記録も情報もなく、直感だけが頼りの径路探索だったが、道跡をたどりなんとかヒカゲザス尾根へ回り込むことができた。道中、乗越す尾根がことごとく岩尾根で厄介だ。\n道の由来だが、現在・近過去をひっくるめて、農大の作業道をたどったのではないか。無論、元々は樵道だ。「不老径路」は、うまいネーミングも思いつかずの苦し紛れw\n/追記～タイトル変更/\nはじめ本記録のタイトルを「不老径路」としたが、その先も西進を続ける径路のタイトルとしてふさわしくないと判断し変更した。\n項目 内容 記録日 2026年6月13日（土） 天候 曇り→14時半から雨→16時前に上がる、虫が多くて長袖の上から何か所も刺される パーティ モンターニャ単独 アクセス JR青梅線で奥多摩駅 行程 奥多摩駅、不老林道、オキノ十二天、〇日原川下流右岸中段道 ✕不老径路、家入沢、ヒカゲザス尾根、狩倉山、石尾根、奥多摩駅 コースタイム 記入中 コースマップ 総距離:- km 累積標高上り:- m 累積標高下り:- m 最高標高:- m 最低標高:- m 山行記録 記入中\n関連する筆者の山行記録 公開日 写真（右クリック→新しいタブ...で拡大します）＋詳細記録 ","permalink":"https://montagna-katokeyci.github.io/oohc/posts/2026-06-13/","summary":"\u003cp\u003e昨年夏に家入沢を下降したさい、右岸に農大の小屋を見た。オキノ十二天までの不老林道と標高が合うので、道が繋がっているだろう。\u003cbr\u003e\n問題はその先で、「家入沢でおしまい」のはずもない。記録も情報もなく、直感だけが頼りの径路探索だったが、道跡をたどりなんとかヒカゲザス尾根へ回り込むことができた。道中、乗越す尾根がことごとく岩尾根で厄介だ。\u003cbr\u003e\n道の由来だが、現在・近過去をひっくるめて、農大の作業道をたどったのではないか。無論、元々は樵道だ。「不老径路」は、うまいネーミングも思いつかずの苦し紛れw\u003c/p\u003e\n\u003cp\u003e/追記～タイトル変更/\u003cbr\u003e\nはじめ本記録のタイトルを「不老径路」としたが、その先も西進を続ける径路のタイトルとしてふさわしくないと判断し変更した。\u003c/p\u003e\n\u003chr\u003e\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth style=\"text-align: left\"\u003e項目\u003c/th\u003e\n\t\t\t\t\t\u003cth style=\"text-align: left\"\u003e内容\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e記録日\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e2026年6月13日（土）\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e天候\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e曇り→14時半から雨→16時前に上がる、虫が多くて長袖の上から何か所も刺される\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003eパーティ\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003eモンターニャ単独\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003eアクセス\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003eJR青梅線で奥多摩駅\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e行程\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e奥多摩駅、不老林道、オキノ十二天、〇日原川下流右岸中段道 ✕不老径路、家入沢、ヒカゲザス尾根、狩倉山、石尾根、奥多摩駅\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003chr\u003e\n\u003ch3 id=\"コースタイム\"\u003eコースタイム\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e記入中\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003ch3 id=\"コースマップ\"\u003eコースマップ\u003c/h3\u003e\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003clink rel=\"stylesheet\" href=\"https://unpkg.com/leaflet@1.9.4/dist/leaflet.css\" /\u003e\n\u003cstyle\u003e\n  .gpx-container {\n    width: 100%;\n    margin: 1.5rem 0;\n    border: 1px solid #ccc;\n    border-radius: 8px;\n    overflow: hidden;\n    background: #fff;\n    box-shadow: 0 2px 6px rgba(0,0,0,0.08);\n    font-family: sans-serif;\n  }\n  .gpx-map { height: 380px; width: 100%; }\n  \n   \n  .gpx-summary {\n    display: flex;\n    flex-wrap: nowrap;\n    justify-content: space-between;\n    align-items: center;\n    background: #f8f9fa;\n    padding: 8px 10px;\n    border-top: 1px solid #e0e0e0;\n    border-bottom: 1px solid #e0e0e0;\n    font-size: 0.8rem;\n    color: #333;\n    overflow-x: auto;\n    white-space: nowrap;\n  }\n  .gpx-summary-item {\n    margin: 0 4px;\n  }\n  .gpx-summary-item strong {\n    color: #007bff;\n    font-size: 0.95rem;\n    margin-left: 2px;\n  }\n\n  .gpx-chart-wrapper {\n    height: 180px;\n    width: 100%;\n    padding: 10px;\n    background: #fafafa;\n    box-sizing: border-box;\n  }\n\n   \n  .start-marker-icon, .goal-marker-icon {\n    background: none;\n    border: none;\n    font-weight: bold;\n    font-size: 11px;\n    color: #ffffff;\n    text-align: center;\n    line-height: 18px;\n  }\n\u003c/style\u003e\n\n\n\u003cdiv class=\"gpx-container\"\u003e\n  \u003cdiv id=\"map-b30192ac\" class=\"gpx-map\"\u003e\u003c/div\u003e\n  \u003cdiv id=\"summary-b30192ac\" class=\"gpx-summary\"\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e総距離:\u003cstrong id=\"sum-dist-b30192ac\"\u003e-\u003c/strong\u003e km\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e累積標高上り:\u003cstrong id=\"sum-up-b30192ac\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e累積標高下り:\u003cstrong id=\"sum-down-b30192ac\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e最高標高:\u003cstrong id=\"sum-max-b30192ac\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e最低標高:\u003cstrong id=\"sum-min-b30192ac\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n  \u003c/div\u003e\n  \u003cdiv class=\"gpx-chart-wrapper\"\u003e\n    \u003ccanvas id=\"chart-b30192ac\"\u003e\u003c/canvas\u003e\n  \u003c/div\u003e\n\u003c/div\u003e\n\n\n\u003cscript src=\"https://unpkg.com/leaflet@1.9.4/dist/leaflet.js\"\u003e\u003c/script\u003e\n\u003cscript src=\"https://cdnjs.cloudflare.com/ajax/libs/leaflet-gpx/1.7.0/gpx.min.js\"\u003e\u003c/script\u003e\n\u003cscript src=\"https://cdn.jsdelivr.net/npm/chart.js\"\u003e\u003c/script\u003e\n\n\u003cscript\u003e\nwindow.addEventListener('load', function() {\n  var gpxUrl = '\\/oohc\\/posts\\/2026-06-13\\/20260613_20260613.gpx';\n\n  \n  var map = L.map('map-b30192ac').setView([0, 0], 10);\n  L.tileLayer('https://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png', {\n    attribution: '\u003ca href=\"https://maps.gsi.go.jp/development/ichiran.html\" target=\"_blank\"\u003e国土地理院\u003c/a\u003e',\n    maxZoom: 18\n  }).addTo(map);\n\n  \n  L.control.scale({\n    imperial: false,\n    position: 'bottomleft'\n  }).addTo(map);\n\n  var hoverMarker = null;\n  var trackPoints = [];\n  var timeLabels = []; \n\n  \n  var ctx = document.getElementById('chart-b30192ac').getContext('2d');\n  var chart = new Chart(ctx, {\n    type: 'line',\n    data: {\n      datasets: [{\n        label: '標高 (m)',\n        data: [],\n        borderColor: '#007bff',\n        backgroundColor: 'rgba(0, 123, 255, 0.1)',\n        fill: true,\n        borderWidth: 1.5,\n        pointRadius: 0,\n        pointHoverRadius: 6,\n        tension: 0.1\n      }]\n    },\n    options: {\n      responsive: true,\n      maintainAspectRatio: false,\n      interaction: { mode: 'index', intersect: false },\n      plugins: {\n        legend: { display: false },\n        \n        tooltip: {\n          callbacks: {\n            title: function(items) {\n              var index = items[0].dataIndex;\n              var timeStr = timeLabels[index] || '';\n              var distStr = items[0].raw.x.toFixed(2) + ' km';\n              return timeStr ? '時刻: ' + timeStr + '（距離: ' + distStr + '）' : '距離: ' + distStr;\n            },\n            label: function(item) {\n              return '標高: ' + item.raw.y + ' m';\n            }\n          }\n        }\n      },\n      scales: {\n        x: {\n          type: 'linear', \n          display: true,\n          title: { display: true, text: '距離 (km)', font: { size: 10 } },\n          ticks: {\n            font: { size: 10 }\n          },\n          grid: { color: 'rgba(0, 0, 0, 0.05)' }\n        },\n        y: {\n          display: true,\n          title: { display: true, text: '標高 (m)', font: { size: 10 } },\n          ticks: { font: { size: 10 } },\n          grid: { color: 'rgba(0, 0, 0, 0.05)' }\n        }\n      },\n      \n      onHover: function(event, activeElements) {\n        if (activeElements \u0026\u0026 activeElements.length \u003e 0) {\n          var index = activeElements[0].index;\n          updateHoverMarker(index);\n        }\n      }\n    }\n  });\n\n  \n  function updateHoverMarker(index) {\n    var pt = trackPoints[index];\n    if (pt) {\n      if (!hoverMarker) {\n        hoverMarker = L.circleMarker([pt.lat, pt.lng], {\n          radius: 8,\n          fillColor: '#00ffff',\n          color: '#ffffff',\n          weight: 3,\n          opacity: 1,\n          fillOpacity: 1\n        }).addTo(map);\n      } else {\n        hoverMarker.setLatLng([pt.lat, pt.lng]);\n      }\n    }\n  }\n\n  \n  function extractTrackData(layer) {\n    var pts = [];\n    var polylines = [];\n\n    if (typeof layer.getLatLngs === 'function') {\n      var latlngs = layer.getLatLngs();\n      var flat = Array.isArray(latlngs[0]) ? latlngs.flat(Infinity) : latlngs;\n      flat.forEach(function(p) {\n        if (p \u0026\u0026 typeof p.lat === 'number') {\n          pts.push({ lat: p.lat, lng: p.lng });\n        }\n      });\n      if (layer instanceof L.Polyline) {\n        polylines.push(layer);\n      }\n    } else if (typeof layer.eachLayer === 'function') {\n      layer.eachLayer(function(child) {\n        var res = extractTrackData(child);\n        pts = pts.concat(res.pts);\n        polylines = polylines.concat(res.polylines);\n      });\n    }\n    return { pts: pts, polylines: polylines };\n  }\n\n  \n  fetch(gpxUrl)\n    .then(function(response) { return response.text(); })\n    .then(function(xmlText) {\n      var parser = new DOMParser();\n      var xmlDoc = parser.parseFromString(xmlText, \"text/xml\");\n      var trkpts = xmlDoc.getElementsByTagName(\"trkpt\");\n\n      for (var i = 0; i \u003c trkpts.length; i++) {\n        var timeNode = trkpts[i].getElementsByTagName(\"time\")[0];\n        if (timeNode) {\n          var dateObj = new Date(timeNode.textContent);\n          var timeStr = dateObj.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', hour12: false });\n          timeLabels.push(timeStr);\n        } else {\n          timeLabels.push('');\n        }\n      }\n    })\n    .catch(function(err) {\n      console.error(\"GPX Time Parsing Error:\", err);\n    });\n\n  \n  new L.GPX(gpxUrl, {\n    async: true,\n    polyline_options: { color: '#ff3300', weight: 5, opacity: 0.8 },\n    marker_options: { startIconUrl: null, endIconUrl: null, wptIconUrls: null }\n  }).on('loaded', function(e) {\n    var gpx = e.target;\n    map.fitBounds(gpx.getBounds());\n\n    \n    var totalDistMeters = gpx.get_distance();\n    var distKmNum = totalDistMeters / 1000;\n    var distKmStr = distKmNum.toFixed(2);\n    var maxEle = Math.round(gpx.get_elevation_max());\n    var minEle = Math.round(gpx.get_elevation_min());\n    var gainEle = Math.round(gpx.get_elevation_gain());\n    var lossEle = Math.round(gpx.get_elevation_loss());\n\n    document.getElementById('sum-dist-b30192ac').innerText = distKmStr;\n    document.getElementById('sum-up-b30192ac').innerText = gainEle;\n    document.getElementById('sum-down-b30192ac').innerText = lossEle;\n    document.getElementById('sum-max-b30192ac').innerText = maxEle;\n    document.getElementById('sum-min-b30192ac').innerText = minEle;\n\n    \n    var eleData = gpx.get_elevation_data();\n    var chartDataPoints = [];\n\n    var extracted = extractTrackData(gpx);\n    trackPoints = extracted.pts;\n\n    \n    if (trackPoints.length \u003e 0) {\n      var startPt = trackPoints[0];\n      var endPt = trackPoints[trackPoints.length - 1];\n\n      L.circleMarker([startPt.lat, startPt.lng], {\n        radius: 9,\n        fillColor: '#28a745',\n        color: '#ffffff',\n        weight: 2,\n        opacity: 1,\n        fillOpacity: 0.9\n      }).addTo(map).bindTooltip('スタート', { permanent: false, direction: 'top' });\n\n      L.circleMarker([endPt.lat, endPt.lng], {\n        radius: 9,\n        fillColor: '#dc3545',\n        color: '#ffffff',\n        weight: 2,\n        opacity: 1,\n        fillOpacity: 0.9\n      }).addTo(map).bindTooltip('ゴール', { permanent: false, direction: 'top' });\n    }\n\n    eleData.forEach(function(item) {\n      var dist = typeof item[0] === 'number' ? item[0] : parseFloat(item[0]);\n      var ele = Math.round(item[1]);\n      chartDataPoints.push({\n        x: parseFloat(dist.toFixed(2)),\n        y: ele\n      });\n    });\n\n    \n    var dynamicStepSize = 1.0;\n    if (distKmNum \u003c= 5) {\n      dynamicStepSize = 0.5;   \n    } else if (distKmNum \u003c= 20) {\n      dynamicStepSize = 1.0;   \n    } else if (distKmNum \u003c= 40) {\n      dynamicStepSize = 5.0;   \n    } else {\n      dynamicStepSize = 10.0;  \n    }\n\n    \n    chart.options.scales.x.max = distKmNum;\n\n    \n    var allowedTicks = [];\n    for (var v = 0; v \u003c distKmNum; v += dynamicStepSize) {\n      allowedTicks.push(parseFloat(v.toFixed(1)));\n    }\n    \n\n    \n    chart.options.scales.x.ticks.callback = function(value) {\n      for (var i = 0; i \u003c allowedTicks.length; i++) {\n        if (Math.abs(value - allowedTicks[i]) \u003c 0.01) {\n          return value + ' km';\n        }\n      }\n      \n      return '';\n    };\n\n    \n    chart.options.scales.x.afterBuildTicks = function(axis) {\n      axis.ticks = allowedTicks.map(function(val) {\n        return { value: val };\n      });\n    };\n\n    chart.data.datasets[0].data = chartDataPoints;\n    chart.update();\n\n    \n    extracted.polylines.forEach(function(polyline) {\n      polyline.on('mousemove', function(ev) {\n        if (!trackPoints.length) return;\n\n        var mouseLatLng = ev.latlng;\n        var closestIndex = 0;\n        var minDist = Infinity;\n\n        for (var i = 0; i \u003c trackPoints.length; i++) {\n          var d = mouseLatLng.distanceTo(L.latLng(trackPoints[i].lat, trackPoints[i].lng));\n          if (d \u003c minDist) {\n            minDist = d;\n            closestIndex = i;\n          }\n        }\n\n        updateHoverMarker(closestIndex);\n\n        chart.setActiveElements([{ datasetIndex: 0, index: closestIndex }]);\n        chart.tooltip.setActiveElements([{ datasetIndex: 0, index: closestIndex }], { x: 0, y: 0 });\n        chart.update();\n      });\n    });\n\n  }).addTo(map);\n});\n\u003c/script\u003e\n\u003chr\u003e\n\u003ch3 id=\"山行記録\"\u003e山行記録\u003c/h3\u003e\n\u003cp\u003e記入中\u003c/p\u003e","title":"Part 1 : 日原川下流右岸中段道"},{"content":"きっかけは2つ。\n① 4月25日に小雲取谷出合いから撤収するさい、大ダワ林道をたどった。一度ならず死亡事故の起きている崩落地を高巻く最中、下流＝二軒小屋尾根方向へ続くハッキリした踏み跡に乗る※1。訝しみながらも、踏み跡から外れ窪を下降して大ダワ林道に戻った。\n② 近年までの地理院地図には、長沢谷左岸から長沢谷を渡り二軒小屋尾根に上がるルートが、現在より上を回るように描かれている。二軒小屋尾根を発つ標高も高いから、横に延びる道筋は（現在の）崩落地の上を通る。\nそもそも長沢谷への下降点が現在よりもずっと先で、対岸は踊窪（登山詳細図）付近と推測される。この点についても、3月に大ブナ別れから長沢谷下降点までたどったさい、現代の下降点を左下に見ながらまだ先に延びる道を見ている（※2の写真35）。\n小雲取谷出合いからの帰り道①、出会ったのはもしかしてこの経路②ではないか。\n今回も、疑問を解消するために実地に歩いてみた。\n撤収後にP1726まで上がっているのはトレーニングのためで、大ダワ林道とは関係ない。\n項目 内容 記録日 2026年6月6日（日） 天候 雨上がりで路面ウエットの晴れたり曇ったり、気温上がらず湿度高い、虫がわんさか湧いていた パーティ モンターニャ単独 アクセス 西東京バスで東日原バス停 行程 東日原バス停、日原林道、長沢谷下降点、長沢谷、踊窪、（古径）大ダワ道、二軒小屋尾根、（古径）大ダワ道、二軒小屋尾根、モミソの頭、P1726、二軒小屋尾根乗越し、長沢谷、日原林道、中日原バス停 コースタイム 08:13～東日原バス停スタート 08:50～八丁橋～08:55 09:59～長沢谷下降点～10:27 /林道上の踏み跡をたどる/ 10:58～林道に戻る 11:12～ナギ谷への踏み跡 11:20～ナギ谷右岸尾根～11:30 11:47～踊窪～12:01 13:00～二軒小屋尾根に上がる、co1280m～13:05 13:19～（P1300真西のco1250m）～13:39 13:44～（カジ小屋窪手前の窪）～13:50 14:03～二軒小屋尾根 14:48～P1726 15:48～日原林道長沢谷下降点 17:21～東日原バス停フィニッシュ コースマップ 総距離:- km 累積標高上り:- m 累積標高下り:- m 最高標高:- m 最低標高:- m 山行記録 記入中\n関連する筆者の山行記録 公開日 写真（右クリック→新しいタブ...で拡大します）＋詳細記録 ","permalink":"https://montagna-katokeyci.github.io/oohc/posts/2026-06-06/","summary":"\u003cp\u003eきっかけは2つ。\u003c/p\u003e\n\u003cp\u003e① 4月25日に小雲取谷出合いから撤収するさい、大ダワ林道をたどった。一度ならず死亡事故の起きている崩落地を高巻く最中、下流＝二軒小屋尾根方向へ続くハッキリした踏み跡に乗る※1。訝しみながらも、踏み跡から外れ窪を下降して大ダワ林道に戻った。\u003cbr\u003e\n② 近年までの地理院地図には、長沢谷左岸から長沢谷を渡り二軒小屋尾根に上がるルートが、現在より上を回るように描かれている。二軒小屋尾根を発つ標高も高いから、横に延びる道筋は（現在の）崩落地の上を通る。\u003cbr\u003e\nそもそも長沢谷への下降点が現在よりもずっと先で、対岸は踊窪（登山詳細図）付近と推測される。この点についても、3月に大ブナ別れから長沢谷下降点までたどったさい、現代の下降点を左下に見ながらまだ先に延びる道を見ている（※2の写真35）。\u003c/p\u003e\n\u003cp\u003e小雲取谷出合いからの帰り道①、出会ったのはもしかしてこの経路②ではないか。\u003cbr\u003e\n今回も、疑問を解消するために実地に歩いてみた。\u003cbr\u003e\n撤収後にP1726まで上がっているのはトレーニングのためで、大ダワ林道とは関係ない。\u003c/p\u003e\n\u003chr\u003e\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth style=\"text-align: left\"\u003e項目\u003c/th\u003e\n\t\t\t\t\t\u003cth style=\"text-align: left\"\u003e内容\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e記録日\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e2026年6月6日（日）\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e天候\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e雨上がりで路面ウエットの晴れたり曇ったり、気温上がらず湿度高い、虫がわんさか湧いていた\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003eパーティ\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003eモンターニャ単独\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003eアクセス\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e西東京バスで東日原バス停\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e行程\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e東日原バス停、日原林道、長沢谷下降点、長沢谷、踊窪、（古径）大ダワ道、二軒小屋尾根、（古径）大ダワ道、二軒小屋尾根、モミソの頭、P1726、二軒小屋尾根乗越し、長沢谷、日原林道、中日原バス停\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003chr\u003e\n\u003ch3 id=\"コースタイム\"\u003eコースタイム\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e08:13～東日原バス停スタート\u003c/li\u003e\n\u003cli\u003e08:50～八丁橋～08:55\u003c/li\u003e\n\u003cli\u003e09:59～長沢谷下降点～10:27\u003c/li\u003e\n\u003cli\u003e/\u003cem\u003e林道上の踏み跡をたどる\u003c/em\u003e/\u003c/li\u003e\n\u003cli\u003e10:58～林道に戻る\u003c/li\u003e\n\u003cli\u003e11:12～ナギ谷への踏み跡\u003c/li\u003e\n\u003cli\u003e11:20～ナギ谷右岸尾根～11:30\u003c/li\u003e\n\u003cli\u003e11:47～踊窪～12:01\u003c/li\u003e\n\u003cli\u003e13:00～二軒小屋尾根に上がる、co1280m～13:05\u003c/li\u003e\n\u003cli\u003e13:19～（P1300真西のco1250m）～13:39\u003c/li\u003e\n\u003cli\u003e13:44～（カジ小屋窪手前の窪）～13:50\u003c/li\u003e\n\u003cli\u003e14:03～二軒小屋尾根\u003c/li\u003e\n\u003cli\u003e14:48～P1726\u003c/li\u003e\n\u003cli\u003e15:48～日原林道長沢谷下降点\u003c/li\u003e\n\u003cli\u003e17:21～東日原バス停フィニッシュ\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003ch3 id=\"コースマップ\"\u003eコースマップ\u003c/h3\u003e\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003clink rel=\"stylesheet\" href=\"https://unpkg.com/leaflet@1.9.4/dist/leaflet.css\" /\u003e\n\u003cstyle\u003e\n  .gpx-container {\n    width: 100%;\n    margin: 1.5rem 0;\n    border: 1px solid #ccc;\n    border-radius: 8px;\n    overflow: hidden;\n    background: #fff;\n    box-shadow: 0 2px 6px rgba(0,0,0,0.08);\n    font-family: sans-serif;\n  }\n  .gpx-map { height: 380px; width: 100%; }\n  \n   \n  .gpx-summary {\n    display: flex;\n    flex-wrap: nowrap;\n    justify-content: space-between;\n    align-items: center;\n    background: #f8f9fa;\n    padding: 8px 10px;\n    border-top: 1px solid #e0e0e0;\n    border-bottom: 1px solid #e0e0e0;\n    font-size: 0.8rem;\n    color: #333;\n    overflow-x: auto;\n    white-space: nowrap;\n  }\n  .gpx-summary-item {\n    margin: 0 4px;\n  }\n  .gpx-summary-item strong {\n    color: #007bff;\n    font-size: 0.95rem;\n    margin-left: 2px;\n  }\n\n  .gpx-chart-wrapper {\n    height: 180px;\n    width: 100%;\n    padding: 10px;\n    background: #fafafa;\n    box-sizing: border-box;\n  }\n\n   \n  .start-marker-icon, .goal-marker-icon {\n    background: none;\n    border: none;\n    font-weight: bold;\n    font-size: 11px;\n    color: #ffffff;\n    text-align: center;\n    line-height: 18px;\n  }\n\u003c/style\u003e\n\n\n\u003cdiv class=\"gpx-container\"\u003e\n  \u003cdiv id=\"map-7291b016\" class=\"gpx-map\"\u003e\u003c/div\u003e\n  \u003cdiv id=\"summary-7291b016\" class=\"gpx-summary\"\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e総距離:\u003cstrong id=\"sum-dist-7291b016\"\u003e-\u003c/strong\u003e km\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e累積標高上り:\u003cstrong id=\"sum-up-7291b016\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e累積標高下り:\u003cstrong id=\"sum-down-7291b016\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e最高標高:\u003cstrong id=\"sum-max-7291b016\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e最低標高:\u003cstrong id=\"sum-min-7291b016\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n  \u003c/div\u003e\n  \u003cdiv class=\"gpx-chart-wrapper\"\u003e\n    \u003ccanvas id=\"chart-7291b016\"\u003e\u003c/canvas\u003e\n  \u003c/div\u003e\n\u003c/div\u003e\n\n\n\u003cscript src=\"https://unpkg.com/leaflet@1.9.4/dist/leaflet.js\"\u003e\u003c/script\u003e\n\u003cscript src=\"https://cdnjs.cloudflare.com/ajax/libs/leaflet-gpx/1.7.0/gpx.min.js\"\u003e\u003c/script\u003e\n\u003cscript src=\"https://cdn.jsdelivr.net/npm/chart.js\"\u003e\u003c/script\u003e\n\n\u003cscript\u003e\nwindow.addEventListener('load', function() {\n  var gpxUrl = '\\/oohc\\/posts\\/2026-06-06\\/20260606_20260606.gpx';\n\n  \n  var map = L.map('map-7291b016').setView([0, 0], 10);\n  L.tileLayer('https://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png', {\n    attribution: '\u003ca href=\"https://maps.gsi.go.jp/development/ichiran.html\" target=\"_blank\"\u003e国土地理院\u003c/a\u003e',\n    maxZoom: 18\n  }).addTo(map);\n\n  \n  L.control.scale({\n    imperial: false,\n    position: 'bottomleft'\n  }).addTo(map);\n\n  var hoverMarker = null;\n  var trackPoints = [];\n  var timeLabels = []; \n\n  \n  var ctx = document.getElementById('chart-7291b016').getContext('2d');\n  var chart = new Chart(ctx, {\n    type: 'line',\n    data: {\n      datasets: [{\n        label: '標高 (m)',\n        data: [],\n        borderColor: '#007bff',\n        backgroundColor: 'rgba(0, 123, 255, 0.1)',\n        fill: true,\n        borderWidth: 1.5,\n        pointRadius: 0,\n        pointHoverRadius: 6,\n        tension: 0.1\n      }]\n    },\n    options: {\n      responsive: true,\n      maintainAspectRatio: false,\n      interaction: { mode: 'index', intersect: false },\n      plugins: {\n        legend: { display: false },\n        \n        tooltip: {\n          callbacks: {\n            title: function(items) {\n              var index = items[0].dataIndex;\n              var timeStr = timeLabels[index] || '';\n              var distStr = items[0].raw.x.toFixed(2) + ' km';\n              return timeStr ? '時刻: ' + timeStr + '（距離: ' + distStr + '）' : '距離: ' + distStr;\n            },\n            label: function(item) {\n              return '標高: ' + item.raw.y + ' m';\n            }\n          }\n        }\n      },\n      scales: {\n        x: {\n          type: 'linear', \n          display: true,\n          title: { display: true, text: '距離 (km)', font: { size: 10 } },\n          ticks: {\n            font: { size: 10 }\n          },\n          grid: { color: 'rgba(0, 0, 0, 0.05)' }\n        },\n        y: {\n          display: true,\n          title: { display: true, text: '標高 (m)', font: { size: 10 } },\n          ticks: { font: { size: 10 } },\n          grid: { color: 'rgba(0, 0, 0, 0.05)' }\n        }\n      },\n      \n      onHover: function(event, activeElements) {\n        if (activeElements \u0026\u0026 activeElements.length \u003e 0) {\n          var index = activeElements[0].index;\n          updateHoverMarker(index);\n        }\n      }\n    }\n  });\n\n  \n  function updateHoverMarker(index) {\n    var pt = trackPoints[index];\n    if (pt) {\n      if (!hoverMarker) {\n        hoverMarker = L.circleMarker([pt.lat, pt.lng], {\n          radius: 8,\n          fillColor: '#00ffff',\n          color: '#ffffff',\n          weight: 3,\n          opacity: 1,\n          fillOpacity: 1\n        }).addTo(map);\n      } else {\n        hoverMarker.setLatLng([pt.lat, pt.lng]);\n      }\n    }\n  }\n\n  \n  function extractTrackData(layer) {\n    var pts = [];\n    var polylines = [];\n\n    if (typeof layer.getLatLngs === 'function') {\n      var latlngs = layer.getLatLngs();\n      var flat = Array.isArray(latlngs[0]) ? latlngs.flat(Infinity) : latlngs;\n      flat.forEach(function(p) {\n        if (p \u0026\u0026 typeof p.lat === 'number') {\n          pts.push({ lat: p.lat, lng: p.lng });\n        }\n      });\n      if (layer instanceof L.Polyline) {\n        polylines.push(layer);\n      }\n    } else if (typeof layer.eachLayer === 'function') {\n      layer.eachLayer(function(child) {\n        var res = extractTrackData(child);\n        pts = pts.concat(res.pts);\n        polylines = polylines.concat(res.polylines);\n      });\n    }\n    return { pts: pts, polylines: polylines };\n  }\n\n  \n  fetch(gpxUrl)\n    .then(function(response) { return response.text(); })\n    .then(function(xmlText) {\n      var parser = new DOMParser();\n      var xmlDoc = parser.parseFromString(xmlText, \"text/xml\");\n      var trkpts = xmlDoc.getElementsByTagName(\"trkpt\");\n\n      for (var i = 0; i \u003c trkpts.length; i++) {\n        var timeNode = trkpts[i].getElementsByTagName(\"time\")[0];\n        if (timeNode) {\n          var dateObj = new Date(timeNode.textContent);\n          var timeStr = dateObj.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', hour12: false });\n          timeLabels.push(timeStr);\n        } else {\n          timeLabels.push('');\n        }\n      }\n    })\n    .catch(function(err) {\n      console.error(\"GPX Time Parsing Error:\", err);\n    });\n\n  \n  new L.GPX(gpxUrl, {\n    async: true,\n    polyline_options: { color: '#ff3300', weight: 5, opacity: 0.8 },\n    marker_options: { startIconUrl: null, endIconUrl: null, wptIconUrls: null }\n  }).on('loaded', function(e) {\n    var gpx = e.target;\n    map.fitBounds(gpx.getBounds());\n\n    \n    var totalDistMeters = gpx.get_distance();\n    var distKmNum = totalDistMeters / 1000;\n    var distKmStr = distKmNum.toFixed(2);\n    var maxEle = Math.round(gpx.get_elevation_max());\n    var minEle = Math.round(gpx.get_elevation_min());\n    var gainEle = Math.round(gpx.get_elevation_gain());\n    var lossEle = Math.round(gpx.get_elevation_loss());\n\n    document.getElementById('sum-dist-7291b016').innerText = distKmStr;\n    document.getElementById('sum-up-7291b016').innerText = gainEle;\n    document.getElementById('sum-down-7291b016').innerText = lossEle;\n    document.getElementById('sum-max-7291b016').innerText = maxEle;\n    document.getElementById('sum-min-7291b016').innerText = minEle;\n\n    \n    var eleData = gpx.get_elevation_data();\n    var chartDataPoints = [];\n\n    var extracted = extractTrackData(gpx);\n    trackPoints = extracted.pts;\n\n    \n    if (trackPoints.length \u003e 0) {\n      var startPt = trackPoints[0];\n      var endPt = trackPoints[trackPoints.length - 1];\n\n      L.circleMarker([startPt.lat, startPt.lng], {\n        radius: 9,\n        fillColor: '#28a745',\n        color: '#ffffff',\n        weight: 2,\n        opacity: 1,\n        fillOpacity: 0.9\n      }).addTo(map).bindTooltip('スタート', { permanent: false, direction: 'top' });\n\n      L.circleMarker([endPt.lat, endPt.lng], {\n        radius: 9,\n        fillColor: '#dc3545',\n        color: '#ffffff',\n        weight: 2,\n        opacity: 1,\n        fillOpacity: 0.9\n      }).addTo(map).bindTooltip('ゴール', { permanent: false, direction: 'top' });\n    }\n\n    eleData.forEach(function(item) {\n      var dist = typeof item[0] === 'number' ? item[0] : parseFloat(item[0]);\n      var ele = Math.round(item[1]);\n      chartDataPoints.push({\n        x: parseFloat(dist.toFixed(2)),\n        y: ele\n      });\n    });\n\n    \n    var dynamicStepSize = 1.0;\n    if (distKmNum \u003c= 5) {\n      dynamicStepSize = 0.5;   \n    } else if (distKmNum \u003c= 20) {\n      dynamicStepSize = 1.0;   \n    } else if (distKmNum \u003c= 40) {\n      dynamicStepSize = 5.0;   \n    } else {\n      dynamicStepSize = 10.0;  \n    }\n\n    \n    chart.options.scales.x.max = distKmNum;\n\n    \n    var allowedTicks = [];\n    for (var v = 0; v \u003c distKmNum; v += dynamicStepSize) {\n      allowedTicks.push(parseFloat(v.toFixed(1)));\n    }\n    \n\n    \n    chart.options.scales.x.ticks.callback = function(value) {\n      for (var i = 0; i \u003c allowedTicks.length; i++) {\n        if (Math.abs(value - allowedTicks[i]) \u003c 0.01) {\n          return value + ' km';\n        }\n      }\n      \n      return '';\n    };\n\n    \n    chart.options.scales.x.afterBuildTicks = function(axis) {\n      axis.ticks = allowedTicks.map(function(val) {\n        return { value: val };\n      });\n    };\n\n    chart.data.datasets[0].data = chartDataPoints;\n    chart.update();\n\n    \n    extracted.polylines.forEach(function(polyline) {\n      polyline.on('mousemove', function(ev) {\n        if (!trackPoints.length) return;\n\n        var mouseLatLng = ev.latlng;\n        var closestIndex = 0;\n        var minDist = Infinity;\n\n        for (var i = 0; i \u003c trackPoints.length; i++) {\n          var d = mouseLatLng.distanceTo(L.latLng(trackPoints[i].lat, trackPoints[i].lng));\n          if (d \u003c minDist) {\n            minDist = d;\n            closestIndex = i;\n          }\n        }\n\n        updateHoverMarker(closestIndex);\n\n        chart.setActiveElements([{ datasetIndex: 0, index: closestIndex }]);\n        chart.tooltip.setActiveElements([{ datasetIndex: 0, index: closestIndex }], { x: 0, y: 0 });\n        chart.update();\n      });\n    });\n\n  }).addTo(map);\n});\n\u003c/script\u003e\n\u003chr\u003e\n\u003ch3 id=\"山行記録\"\u003e山行記録\u003c/h3\u003e\n\u003cp\u003e記入中\u003c/p\u003e","title":"Part 1 : 大ダワ林道古道（？）"},{"content":"先週、悪谷の右岸をつたってカツラの巨木からゴンパ尾根に上がり、昔の地理院地図に載る古径をたどったつもりでいたが。帰ってきて2-3日、どうもしっくりこない。古地図を再確認すれば、道は「左岸」にあったようだw\nやりなお〜し！\n右岸の現代の踏み跡に比べれば、左岸の道跡は格段にカラい。のんびりできる場面の少ない、崖っぷちの連なる道跡を久しぶりに歩いた。\n項目 内容 記録日 2026年5月30日（土） 天候 晴れのち曇り 弱い風あるも暑い メマトイ多し パーティ モンターニャ単独 アクセス 西東京バスで東日原バス停 行程 東日原バス停、小川谷林道、終点広場、三又、悪谷（ワル谷、割谷、ワリ谷）、ゴンパ尾根、県境尾根、ヨコスズ尾根、東日原バス停 コースタイム 記入中 コースマップ 総距離:- km 累積標高上り:- m 累積標高下り:- m 最高標高:- m 最低標高:- m 山行記録 記入中\n関連する筆者の山行記録 公開日 写真（右クリック→新しいタブ...で拡大します）＋詳細記録 ","permalink":"https://montagna-katokeyci.github.io/oohc/posts/2026-05-30/","summary":"\u003cp\u003e先週、悪谷の右岸をつたってカツラの巨木からゴンパ尾根に上がり、昔の地理院地図に載る古径をたどったつもりでいたが。帰ってきて2-3日、どうもしっくりこない。古地図を再確認すれば、道は「左岸」にあったようだw\u003cbr\u003e\nやりなお〜し！\u003cbr\u003e\n右岸の現代の踏み跡に比べれば、左岸の道跡は格段にカラい。のんびりできる場面の少ない、崖っぷちの連なる道跡を久しぶりに歩いた。\u003c/p\u003e\n\u003chr\u003e\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth style=\"text-align: left\"\u003e項目\u003c/th\u003e\n\t\t\t\t\t\u003cth style=\"text-align: left\"\u003e内容\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e記録日\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e2026年5月30日（土）\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e天候\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e晴れのち曇り 弱い風あるも暑い メマトイ多し\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003eパーティ\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003eモンターニャ単独\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003eアクセス\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e西東京バスで東日原バス停\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e行程\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e東日原バス停、小川谷林道、終点広場、三又、悪谷（ワル谷、割谷、ワリ谷）、ゴンパ尾根、県境尾根、ヨコスズ尾根、東日原バス停\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003chr\u003e\n\u003ch3 id=\"コースタイム\"\u003eコースタイム\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e記入中\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003ch3 id=\"コースマップ\"\u003eコースマップ\u003c/h3\u003e\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003clink rel=\"stylesheet\" href=\"https://unpkg.com/leaflet@1.9.4/dist/leaflet.css\" /\u003e\n\u003cstyle\u003e\n  .gpx-container {\n    width: 100%;\n    margin: 1.5rem 0;\n    border: 1px solid #ccc;\n    border-radius: 8px;\n    overflow: hidden;\n    background: #fff;\n    box-shadow: 0 2px 6px rgba(0,0,0,0.08);\n    font-family: sans-serif;\n  }\n  .gpx-map { height: 380px; width: 100%; }\n  \n   \n  .gpx-summary {\n    display: flex;\n    flex-wrap: nowrap;\n    justify-content: space-between;\n    align-items: center;\n    background: #f8f9fa;\n    padding: 8px 10px;\n    border-top: 1px solid #e0e0e0;\n    border-bottom: 1px solid #e0e0e0;\n    font-size: 0.8rem;\n    color: #333;\n    overflow-x: auto;\n    white-space: nowrap;\n  }\n  .gpx-summary-item {\n    margin: 0 4px;\n  }\n  .gpx-summary-item strong {\n    color: #007bff;\n    font-size: 0.95rem;\n    margin-left: 2px;\n  }\n\n  .gpx-chart-wrapper {\n    height: 180px;\n    width: 100%;\n    padding: 10px;\n    background: #fafafa;\n    box-sizing: border-box;\n  }\n\n   \n  .start-marker-icon, .goal-marker-icon {\n    background: none;\n    border: none;\n    font-weight: bold;\n    font-size: 11px;\n    color: #ffffff;\n    text-align: center;\n    line-height: 18px;\n  }\n\u003c/style\u003e\n\n\n\u003cdiv class=\"gpx-container\"\u003e\n  \u003cdiv id=\"map-c4404337\" class=\"gpx-map\"\u003e\u003c/div\u003e\n  \u003cdiv id=\"summary-c4404337\" class=\"gpx-summary\"\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e総距離:\u003cstrong id=\"sum-dist-c4404337\"\u003e-\u003c/strong\u003e km\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e累積標高上り:\u003cstrong id=\"sum-up-c4404337\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e累積標高下り:\u003cstrong id=\"sum-down-c4404337\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e最高標高:\u003cstrong id=\"sum-max-c4404337\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e最低標高:\u003cstrong id=\"sum-min-c4404337\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n  \u003c/div\u003e\n  \u003cdiv class=\"gpx-chart-wrapper\"\u003e\n    \u003ccanvas id=\"chart-c4404337\"\u003e\u003c/canvas\u003e\n  \u003c/div\u003e\n\u003c/div\u003e\n\n\n\u003cscript src=\"https://unpkg.com/leaflet@1.9.4/dist/leaflet.js\"\u003e\u003c/script\u003e\n\u003cscript src=\"https://cdnjs.cloudflare.com/ajax/libs/leaflet-gpx/1.7.0/gpx.min.js\"\u003e\u003c/script\u003e\n\u003cscript src=\"https://cdn.jsdelivr.net/npm/chart.js\"\u003e\u003c/script\u003e\n\n\u003cscript\u003e\nwindow.addEventListener('load', function() {\n  var gpxUrl = '\\/oohc\\/posts\\/2026-05-30\\/20260530_20260530.gpx';\n\n  \n  var map = L.map('map-c4404337').setView([0, 0], 10);\n  L.tileLayer('https://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png', {\n    attribution: '\u003ca href=\"https://maps.gsi.go.jp/development/ichiran.html\" target=\"_blank\"\u003e国土地理院\u003c/a\u003e',\n    maxZoom: 18\n  }).addTo(map);\n\n  \n  L.control.scale({\n    imperial: false,\n    position: 'bottomleft'\n  }).addTo(map);\n\n  var hoverMarker = null;\n  var trackPoints = [];\n  var timeLabels = []; \n\n  \n  var ctx = document.getElementById('chart-c4404337').getContext('2d');\n  var chart = new Chart(ctx, {\n    type: 'line',\n    data: {\n      datasets: [{\n        label: '標高 (m)',\n        data: [],\n        borderColor: '#007bff',\n        backgroundColor: 'rgba(0, 123, 255, 0.1)',\n        fill: true,\n        borderWidth: 1.5,\n        pointRadius: 0,\n        pointHoverRadius: 6,\n        tension: 0.1\n      }]\n    },\n    options: {\n      responsive: true,\n      maintainAspectRatio: false,\n      interaction: { mode: 'index', intersect: false },\n      plugins: {\n        legend: { display: false },\n        \n        tooltip: {\n          callbacks: {\n            title: function(items) {\n              var index = items[0].dataIndex;\n              var timeStr = timeLabels[index] || '';\n              var distStr = items[0].raw.x.toFixed(2) + ' km';\n              return timeStr ? '時刻: ' + timeStr + '（距離: ' + distStr + '）' : '距離: ' + distStr;\n            },\n            label: function(item) {\n              return '標高: ' + item.raw.y + ' m';\n            }\n          }\n        }\n      },\n      scales: {\n        x: {\n          type: 'linear', \n          display: true,\n          title: { display: true, text: '距離 (km)', font: { size: 10 } },\n          ticks: {\n            font: { size: 10 }\n          },\n          grid: { color: 'rgba(0, 0, 0, 0.05)' }\n        },\n        y: {\n          display: true,\n          title: { display: true, text: '標高 (m)', font: { size: 10 } },\n          ticks: { font: { size: 10 } },\n          grid: { color: 'rgba(0, 0, 0, 0.05)' }\n        }\n      },\n      \n      onHover: function(event, activeElements) {\n        if (activeElements \u0026\u0026 activeElements.length \u003e 0) {\n          var index = activeElements[0].index;\n          updateHoverMarker(index);\n        }\n      }\n    }\n  });\n\n  \n  function updateHoverMarker(index) {\n    var pt = trackPoints[index];\n    if (pt) {\n      if (!hoverMarker) {\n        hoverMarker = L.circleMarker([pt.lat, pt.lng], {\n          radius: 8,\n          fillColor: '#00ffff',\n          color: '#ffffff',\n          weight: 3,\n          opacity: 1,\n          fillOpacity: 1\n        }).addTo(map);\n      } else {\n        hoverMarker.setLatLng([pt.lat, pt.lng]);\n      }\n    }\n  }\n\n  \n  function extractTrackData(layer) {\n    var pts = [];\n    var polylines = [];\n\n    if (typeof layer.getLatLngs === 'function') {\n      var latlngs = layer.getLatLngs();\n      var flat = Array.isArray(latlngs[0]) ? latlngs.flat(Infinity) : latlngs;\n      flat.forEach(function(p) {\n        if (p \u0026\u0026 typeof p.lat === 'number') {\n          pts.push({ lat: p.lat, lng: p.lng });\n        }\n      });\n      if (layer instanceof L.Polyline) {\n        polylines.push(layer);\n      }\n    } else if (typeof layer.eachLayer === 'function') {\n      layer.eachLayer(function(child) {\n        var res = extractTrackData(child);\n        pts = pts.concat(res.pts);\n        polylines = polylines.concat(res.polylines);\n      });\n    }\n    return { pts: pts, polylines: polylines };\n  }\n\n  \n  fetch(gpxUrl)\n    .then(function(response) { return response.text(); })\n    .then(function(xmlText) {\n      var parser = new DOMParser();\n      var xmlDoc = parser.parseFromString(xmlText, \"text/xml\");\n      var trkpts = xmlDoc.getElementsByTagName(\"trkpt\");\n\n      for (var i = 0; i \u003c trkpts.length; i++) {\n        var timeNode = trkpts[i].getElementsByTagName(\"time\")[0];\n        if (timeNode) {\n          var dateObj = new Date(timeNode.textContent);\n          var timeStr = dateObj.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', hour12: false });\n          timeLabels.push(timeStr);\n        } else {\n          timeLabels.push('');\n        }\n      }\n    })\n    .catch(function(err) {\n      console.error(\"GPX Time Parsing Error:\", err);\n    });\n\n  \n  new L.GPX(gpxUrl, {\n    async: true,\n    polyline_options: { color: '#ff3300', weight: 5, opacity: 0.8 },\n    marker_options: { startIconUrl: null, endIconUrl: null, wptIconUrls: null }\n  }).on('loaded', function(e) {\n    var gpx = e.target;\n    map.fitBounds(gpx.getBounds());\n\n    \n    var totalDistMeters = gpx.get_distance();\n    var distKmNum = totalDistMeters / 1000;\n    var distKmStr = distKmNum.toFixed(2);\n    var maxEle = Math.round(gpx.get_elevation_max());\n    var minEle = Math.round(gpx.get_elevation_min());\n    var gainEle = Math.round(gpx.get_elevation_gain());\n    var lossEle = Math.round(gpx.get_elevation_loss());\n\n    document.getElementById('sum-dist-c4404337').innerText = distKmStr;\n    document.getElementById('sum-up-c4404337').innerText = gainEle;\n    document.getElementById('sum-down-c4404337').innerText = lossEle;\n    document.getElementById('sum-max-c4404337').innerText = maxEle;\n    document.getElementById('sum-min-c4404337').innerText = minEle;\n\n    \n    var eleData = gpx.get_elevation_data();\n    var chartDataPoints = [];\n\n    var extracted = extractTrackData(gpx);\n    trackPoints = extracted.pts;\n\n    \n    if (trackPoints.length \u003e 0) {\n      var startPt = trackPoints[0];\n      var endPt = trackPoints[trackPoints.length - 1];\n\n      L.circleMarker([startPt.lat, startPt.lng], {\n        radius: 9,\n        fillColor: '#28a745',\n        color: '#ffffff',\n        weight: 2,\n        opacity: 1,\n        fillOpacity: 0.9\n      }).addTo(map).bindTooltip('スタート', { permanent: false, direction: 'top' });\n\n      L.circleMarker([endPt.lat, endPt.lng], {\n        radius: 9,\n        fillColor: '#dc3545',\n        color: '#ffffff',\n        weight: 2,\n        opacity: 1,\n        fillOpacity: 0.9\n      }).addTo(map).bindTooltip('ゴール', { permanent: false, direction: 'top' });\n    }\n\n    eleData.forEach(function(item) {\n      var dist = typeof item[0] === 'number' ? item[0] : parseFloat(item[0]);\n      var ele = Math.round(item[1]);\n      chartDataPoints.push({\n        x: parseFloat(dist.toFixed(2)),\n        y: ele\n      });\n    });\n\n    \n    var dynamicStepSize = 1.0;\n    if (distKmNum \u003c= 5) {\n      dynamicStepSize = 0.5;   \n    } else if (distKmNum \u003c= 20) {\n      dynamicStepSize = 1.0;   \n    } else if (distKmNum \u003c= 40) {\n      dynamicStepSize = 5.0;   \n    } else {\n      dynamicStepSize = 10.0;  \n    }\n\n    \n    chart.options.scales.x.max = distKmNum;\n\n    \n    var allowedTicks = [];\n    for (var v = 0; v \u003c distKmNum; v += dynamicStepSize) {\n      allowedTicks.push(parseFloat(v.toFixed(1)));\n    }\n    \n\n    \n    chart.options.scales.x.ticks.callback = function(value) {\n      for (var i = 0; i \u003c allowedTicks.length; i++) {\n        if (Math.abs(value - allowedTicks[i]) \u003c 0.01) {\n          return value + ' km';\n        }\n      }\n      \n      return '';\n    };\n\n    \n    chart.options.scales.x.afterBuildTicks = function(axis) {\n      axis.ticks = allowedTicks.map(function(val) {\n        return { value: val };\n      });\n    };\n\n    chart.data.datasets[0].data = chartDataPoints;\n    chart.update();\n\n    \n    extracted.polylines.forEach(function(polyline) {\n      polyline.on('mousemove', function(ev) {\n        if (!trackPoints.length) return;\n\n        var mouseLatLng = ev.latlng;\n        var closestIndex = 0;\n        var minDist = Infinity;\n\n        for (var i = 0; i \u003c trackPoints.length; i++) {\n          var d = mouseLatLng.distanceTo(L.latLng(trackPoints[i].lat, trackPoints[i].lng));\n          if (d \u003c minDist) {\n            minDist = d;\n            closestIndex = i;\n          }\n        }\n\n        updateHoverMarker(closestIndex);\n\n        chart.setActiveElements([{ datasetIndex: 0, index: closestIndex }]);\n        chart.tooltip.setActiveElements([{ datasetIndex: 0, index: closestIndex }], { x: 0, y: 0 });\n        chart.update();\n      });\n    });\n\n  }).addTo(map);\n});\n\u003c/script\u003e\n\u003chr\u003e\n\u003ch3 id=\"山行記録\"\u003e山行記録\u003c/h3\u003e\n\u003cp\u003e記入中\u003c/p\u003e","title":"（やりなおし）悪谷〜ゴンパ尾根経路"},{"content":"むかしの地理院地図を眺めていたら、小川谷三又から妙な破線が悪谷〜ゴンパ尾根と延びているのに気づいた。\n同年代の地図に破線が多いわけではない。大ダワ林道をはじめとする「現代でも、かつて道があったことが知られている径路」ばかりだ。なのに、悪谷からゴンパ尾根？\n興味津々で出かけてみた。\n項目 内容 記録日 2026年5月23日（土） 天候 厚い曇、午後からガスと霧雨、晩秋の体感温度、雨上がりで路面はウエット パーティ モンターニャ単独 アクセス 西東京バスで東日原バス停 行程 東日原バス停、小川谷林道、終点広場、三又、悪谷（ワル谷、割谷、ワリ谷）、ゴンパ尾根、七跳山、県境尾根、ヨコスズ尾根、東日原バス停 コースタイム 記入中 コースマップ 総距離:- km 累積標高上り:- m 累積標高下り:- m 最高標高:- m 最低標高:- m 山行記録 記入中\n関連する筆者の山行記録 公開日 写真（右クリック→新しいタブ...で拡大します）＋詳細記録 ","permalink":"https://montagna-katokeyci.github.io/oohc/posts/2026-05-23/","summary":"\u003cp\u003eむかしの地理院地図を眺めていたら、小川谷三又から妙な破線が悪谷〜ゴンパ尾根と延びているのに気づいた。\u003cbr\u003e\n同年代の地図に破線が多いわけではない。大ダワ林道をはじめとする「現代でも、かつて道があったことが知られている径路」ばかりだ。なのに、悪谷からゴンパ尾根？\u003cbr\u003e\n興味津々で出かけてみた。\u003c/p\u003e\n\u003chr\u003e\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth style=\"text-align: left\"\u003e項目\u003c/th\u003e\n\t\t\t\t\t\u003cth style=\"text-align: left\"\u003e内容\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e記録日\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e2026年5月23日（土）\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e天候\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e厚い曇、午後からガスと霧雨、晩秋の体感温度、雨上がりで路面はウエット\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003eパーティ\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003eモンターニャ単独\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003eアクセス\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e西東京バスで東日原バス停\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e行程\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e東日原バス停、小川谷林道、終点広場、三又、悪谷（ワル谷、割谷、ワリ谷）、ゴンパ尾根、七跳山、県境尾根、ヨコスズ尾根、東日原バス停\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003chr\u003e\n\u003ch3 id=\"コースタイム\"\u003eコースタイム\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e記入中\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003ch3 id=\"コースマップ\"\u003eコースマップ\u003c/h3\u003e\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003clink rel=\"stylesheet\" href=\"https://unpkg.com/leaflet@1.9.4/dist/leaflet.css\" /\u003e\n\u003cstyle\u003e\n  .gpx-container {\n    width: 100%;\n    margin: 1.5rem 0;\n    border: 1px solid #ccc;\n    border-radius: 8px;\n    overflow: hidden;\n    background: #fff;\n    box-shadow: 0 2px 6px rgba(0,0,0,0.08);\n    font-family: sans-serif;\n  }\n  .gpx-map { height: 380px; width: 100%; }\n  \n   \n  .gpx-summary {\n    display: flex;\n    flex-wrap: nowrap;\n    justify-content: space-between;\n    align-items: center;\n    background: #f8f9fa;\n    padding: 8px 10px;\n    border-top: 1px solid #e0e0e0;\n    border-bottom: 1px solid #e0e0e0;\n    font-size: 0.8rem;\n    color: #333;\n    overflow-x: auto;\n    white-space: nowrap;\n  }\n  .gpx-summary-item {\n    margin: 0 4px;\n  }\n  .gpx-summary-item strong {\n    color: #007bff;\n    font-size: 0.95rem;\n    margin-left: 2px;\n  }\n\n  .gpx-chart-wrapper {\n    height: 180px;\n    width: 100%;\n    padding: 10px;\n    background: #fafafa;\n    box-sizing: border-box;\n  }\n\n   \n  .start-marker-icon, .goal-marker-icon {\n    background: none;\n    border: none;\n    font-weight: bold;\n    font-size: 11px;\n    color: #ffffff;\n    text-align: center;\n    line-height: 18px;\n  }\n\u003c/style\u003e\n\n\n\u003cdiv class=\"gpx-container\"\u003e\n  \u003cdiv id=\"map-cb713630\" class=\"gpx-map\"\u003e\u003c/div\u003e\n  \u003cdiv id=\"summary-cb713630\" class=\"gpx-summary\"\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e総距離:\u003cstrong id=\"sum-dist-cb713630\"\u003e-\u003c/strong\u003e km\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e累積標高上り:\u003cstrong id=\"sum-up-cb713630\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e累積標高下り:\u003cstrong id=\"sum-down-cb713630\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e最高標高:\u003cstrong id=\"sum-max-cb713630\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e最低標高:\u003cstrong id=\"sum-min-cb713630\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n  \u003c/div\u003e\n  \u003cdiv class=\"gpx-chart-wrapper\"\u003e\n    \u003ccanvas id=\"chart-cb713630\"\u003e\u003c/canvas\u003e\n  \u003c/div\u003e\n\u003c/div\u003e\n\n\n\u003cscript src=\"https://unpkg.com/leaflet@1.9.4/dist/leaflet.js\"\u003e\u003c/script\u003e\n\u003cscript src=\"https://cdnjs.cloudflare.com/ajax/libs/leaflet-gpx/1.7.0/gpx.min.js\"\u003e\u003c/script\u003e\n\u003cscript src=\"https://cdn.jsdelivr.net/npm/chart.js\"\u003e\u003c/script\u003e\n\n\u003cscript\u003e\nwindow.addEventListener('load', function() {\n  var gpxUrl = '\\/oohc\\/posts\\/2026-05-23\\/20260523_20260523.gpx';\n\n  \n  var map = L.map('map-cb713630').setView([0, 0], 10);\n  L.tileLayer('https://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png', {\n    attribution: '\u003ca href=\"https://maps.gsi.go.jp/development/ichiran.html\" target=\"_blank\"\u003e国土地理院\u003c/a\u003e',\n    maxZoom: 18\n  }).addTo(map);\n\n  \n  L.control.scale({\n    imperial: false,\n    position: 'bottomleft'\n  }).addTo(map);\n\n  var hoverMarker = null;\n  var trackPoints = [];\n  var timeLabels = []; \n\n  \n  var ctx = document.getElementById('chart-cb713630').getContext('2d');\n  var chart = new Chart(ctx, {\n    type: 'line',\n    data: {\n      datasets: [{\n        label: '標高 (m)',\n        data: [],\n        borderColor: '#007bff',\n        backgroundColor: 'rgba(0, 123, 255, 0.1)',\n        fill: true,\n        borderWidth: 1.5,\n        pointRadius: 0,\n        pointHoverRadius: 6,\n        tension: 0.1\n      }]\n    },\n    options: {\n      responsive: true,\n      maintainAspectRatio: false,\n      interaction: { mode: 'index', intersect: false },\n      plugins: {\n        legend: { display: false },\n        \n        tooltip: {\n          callbacks: {\n            title: function(items) {\n              var index = items[0].dataIndex;\n              var timeStr = timeLabels[index] || '';\n              var distStr = items[0].raw.x.toFixed(2) + ' km';\n              return timeStr ? '時刻: ' + timeStr + '（距離: ' + distStr + '）' : '距離: ' + distStr;\n            },\n            label: function(item) {\n              return '標高: ' + item.raw.y + ' m';\n            }\n          }\n        }\n      },\n      scales: {\n        x: {\n          type: 'linear', \n          display: true,\n          title: { display: true, text: '距離 (km)', font: { size: 10 } },\n          ticks: {\n            font: { size: 10 }\n          },\n          grid: { color: 'rgba(0, 0, 0, 0.05)' }\n        },\n        y: {\n          display: true,\n          title: { display: true, text: '標高 (m)', font: { size: 10 } },\n          ticks: { font: { size: 10 } },\n          grid: { color: 'rgba(0, 0, 0, 0.05)' }\n        }\n      },\n      \n      onHover: function(event, activeElements) {\n        if (activeElements \u0026\u0026 activeElements.length \u003e 0) {\n          var index = activeElements[0].index;\n          updateHoverMarker(index);\n        }\n      }\n    }\n  });\n\n  \n  function updateHoverMarker(index) {\n    var pt = trackPoints[index];\n    if (pt) {\n      if (!hoverMarker) {\n        hoverMarker = L.circleMarker([pt.lat, pt.lng], {\n          radius: 8,\n          fillColor: '#00ffff',\n          color: '#ffffff',\n          weight: 3,\n          opacity: 1,\n          fillOpacity: 1\n        }).addTo(map);\n      } else {\n        hoverMarker.setLatLng([pt.lat, pt.lng]);\n      }\n    }\n  }\n\n  \n  function extractTrackData(layer) {\n    var pts = [];\n    var polylines = [];\n\n    if (typeof layer.getLatLngs === 'function') {\n      var latlngs = layer.getLatLngs();\n      var flat = Array.isArray(latlngs[0]) ? latlngs.flat(Infinity) : latlngs;\n      flat.forEach(function(p) {\n        if (p \u0026\u0026 typeof p.lat === 'number') {\n          pts.push({ lat: p.lat, lng: p.lng });\n        }\n      });\n      if (layer instanceof L.Polyline) {\n        polylines.push(layer);\n      }\n    } else if (typeof layer.eachLayer === 'function') {\n      layer.eachLayer(function(child) {\n        var res = extractTrackData(child);\n        pts = pts.concat(res.pts);\n        polylines = polylines.concat(res.polylines);\n      });\n    }\n    return { pts: pts, polylines: polylines };\n  }\n\n  \n  fetch(gpxUrl)\n    .then(function(response) { return response.text(); })\n    .then(function(xmlText) {\n      var parser = new DOMParser();\n      var xmlDoc = parser.parseFromString(xmlText, \"text/xml\");\n      var trkpts = xmlDoc.getElementsByTagName(\"trkpt\");\n\n      for (var i = 0; i \u003c trkpts.length; i++) {\n        var timeNode = trkpts[i].getElementsByTagName(\"time\")[0];\n        if (timeNode) {\n          var dateObj = new Date(timeNode.textContent);\n          var timeStr = dateObj.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', hour12: false });\n          timeLabels.push(timeStr);\n        } else {\n          timeLabels.push('');\n        }\n      }\n    })\n    .catch(function(err) {\n      console.error(\"GPX Time Parsing Error:\", err);\n    });\n\n  \n  new L.GPX(gpxUrl, {\n    async: true,\n    polyline_options: { color: '#ff3300', weight: 5, opacity: 0.8 },\n    marker_options: { startIconUrl: null, endIconUrl: null, wptIconUrls: null }\n  }).on('loaded', function(e) {\n    var gpx = e.target;\n    map.fitBounds(gpx.getBounds());\n\n    \n    var totalDistMeters = gpx.get_distance();\n    var distKmNum = totalDistMeters / 1000;\n    var distKmStr = distKmNum.toFixed(2);\n    var maxEle = Math.round(gpx.get_elevation_max());\n    var minEle = Math.round(gpx.get_elevation_min());\n    var gainEle = Math.round(gpx.get_elevation_gain());\n    var lossEle = Math.round(gpx.get_elevation_loss());\n\n    document.getElementById('sum-dist-cb713630').innerText = distKmStr;\n    document.getElementById('sum-up-cb713630').innerText = gainEle;\n    document.getElementById('sum-down-cb713630').innerText = lossEle;\n    document.getElementById('sum-max-cb713630').innerText = maxEle;\n    document.getElementById('sum-min-cb713630').innerText = minEle;\n\n    \n    var eleData = gpx.get_elevation_data();\n    var chartDataPoints = [];\n\n    var extracted = extractTrackData(gpx);\n    trackPoints = extracted.pts;\n\n    \n    if (trackPoints.length \u003e 0) {\n      var startPt = trackPoints[0];\n      var endPt = trackPoints[trackPoints.length - 1];\n\n      L.circleMarker([startPt.lat, startPt.lng], {\n        radius: 9,\n        fillColor: '#28a745',\n        color: '#ffffff',\n        weight: 2,\n        opacity: 1,\n        fillOpacity: 0.9\n      }).addTo(map).bindTooltip('スタート', { permanent: false, direction: 'top' });\n\n      L.circleMarker([endPt.lat, endPt.lng], {\n        radius: 9,\n        fillColor: '#dc3545',\n        color: '#ffffff',\n        weight: 2,\n        opacity: 1,\n        fillOpacity: 0.9\n      }).addTo(map).bindTooltip('ゴール', { permanent: false, direction: 'top' });\n    }\n\n    eleData.forEach(function(item) {\n      var dist = typeof item[0] === 'number' ? item[0] : parseFloat(item[0]);\n      var ele = Math.round(item[1]);\n      chartDataPoints.push({\n        x: parseFloat(dist.toFixed(2)),\n        y: ele\n      });\n    });\n\n    \n    var dynamicStepSize = 1.0;\n    if (distKmNum \u003c= 5) {\n      dynamicStepSize = 0.5;   \n    } else if (distKmNum \u003c= 20) {\n      dynamicStepSize = 1.0;   \n    } else if (distKmNum \u003c= 40) {\n      dynamicStepSize = 5.0;   \n    } else {\n      dynamicStepSize = 10.0;  \n    }\n\n    \n    chart.options.scales.x.max = distKmNum;\n\n    \n    var allowedTicks = [];\n    for (var v = 0; v \u003c distKmNum; v += dynamicStepSize) {\n      allowedTicks.push(parseFloat(v.toFixed(1)));\n    }\n    \n\n    \n    chart.options.scales.x.ticks.callback = function(value) {\n      for (var i = 0; i \u003c allowedTicks.length; i++) {\n        if (Math.abs(value - allowedTicks[i]) \u003c 0.01) {\n          return value + ' km';\n        }\n      }\n      \n      return '';\n    };\n\n    \n    chart.options.scales.x.afterBuildTicks = function(axis) {\n      axis.ticks = allowedTicks.map(function(val) {\n        return { value: val };\n      });\n    };\n\n    chart.data.datasets[0].data = chartDataPoints;\n    chart.update();\n\n    \n    extracted.polylines.forEach(function(polyline) {\n      polyline.on('mousemove', function(ev) {\n        if (!trackPoints.length) return;\n\n        var mouseLatLng = ev.latlng;\n        var closestIndex = 0;\n        var minDist = Infinity;\n\n        for (var i = 0; i \u003c trackPoints.length; i++) {\n          var d = mouseLatLng.distanceTo(L.latLng(trackPoints[i].lat, trackPoints[i].lng));\n          if (d \u003c minDist) {\n            minDist = d;\n            closestIndex = i;\n          }\n        }\n\n        updateHoverMarker(closestIndex);\n\n        chart.setActiveElements([{ datasetIndex: 0, index: closestIndex }]);\n        chart.tooltip.setActiveElements([{ datasetIndex: 0, index: closestIndex }], { x: 0, y: 0 });\n        chart.update();\n      });\n    });\n\n  }).addTo(map);\n});\n\u003c/script\u003e\n\u003chr\u003e\n\u003ch3 id=\"山行記録\"\u003e山行記録\u003c/h3\u003e\n\u003cp\u003e記入中\u003c/p\u003e","title":"（廃径）悪谷〜ゴンパ尾根経路"},{"content":"「ここに道がなかったはずがない」シリーズ（笑）の3回目。カロー谷左岸の「滝入ノ道」、ゴンエ尾根から小雲取谷出合への捷路に続くのは、三ノ木戸集落から石尾根北面への仕事道。これも、無いはずが無い。\n果たして、比較すれば時代が下ったと思われる明瞭な道型に出合う。しかし途中の窪の大崩落で道が付け替えられた様子だ。一往復して窪を渡ったあとは崖っぷちの踏み跡が待つ。スリリングな廃道を狩鞍沢の炭焼き窯跡までたどった。\n項目 内容 記録日 2026年5月9日（土） 天候 晴れのち曇り、無風 パーティ モンターニャ単独 アクセス JR青梅線で奥多摩駅 行程 奥多摩駅、城、三ノ木戸、石尾根縦走路三ノ木戸分岐、（三ノ木戸から石尾根北面の道）、家入沢、ヒカゲザス尾根、狩鞍沢、狩倉山、石尾根縦走路、奥多摩駅 コースタイム 07:43～奥多摩駅スタート 08:33～城集落～08:46 09:03～三ノ木戸集落 09:57～三ノ木戸分岐@石尾根～10:25 11:08～規模の大きなトタン場@家入沢 11:33～崩落窪、小松ヶタワの窪とヒカゲザス窪のあいだ 11:47～崩落最上端～12:12 12:23～バックして11:08のトタン場に戻る 12:32～崩落最上端に戻る 13:18～ヒカゲザス窪・小松ヶタワの窪中尾根 13:32ごろ～ヒカゲザス窪 13:38～ヒカゲザス尾根～13:43 14:03～狩鞍沢の炭焼き窯跡 14:10～山ノ神尾根～15:16 15:26～狩倉山～15:46 17:11～奥多摩駅フィニッシュ コースマップ 総距離:- km 累積標高上り:- m 累積標高下り:- m 最高標高:- m 最低標高:- m 山行記録 三ノ木戸から石尾根北面への道 この径路は難しい。狩倉山に直接突き上げる窪のトタン場までは薄く、岩記号に接する北の窪の大崩落の上を巻いたあとは岩尾根の崖っぷちをゆく。その先、ヒカゲザス尾根までは比較的明瞭だが、尾根の北面に回りこみ狩鞍沢の炭焼き窯跡まではごく薄い。\n炭焼き窯跡付近が緩斜面で山ノ神尾根へ上がる道跡を探せず、今回の探索では北面にどのように続くのか、そもそも続きがあるのかは不明に終わった。\n公開日 20260621\n写真（右クリック→新しいタブ...で拡大します）＋詳細記録 （07:42・写真1） 晴れ渡る奥多摩駅をスタートする。 （08:33・写真2） 城に着く。右の法面に北側斜面を上がる道があり、上の平場を少し探索する。 （09:04・写真3） 三ノ木戸の、例の別荘地。googleは春紅葉だと言っている。見つめるのが痛いくらい赤い。 （09:28・写真4） co940mでとおせんぼロープ、右を巻く。通過後に振り返れば、小尾根の凸角が崩れたらしい。珍しい。 （09:58・写真5） 石尾根の三ノ木戸分岐に上がる。日陰で大休止。 （10:30・写真6） 再始動後は石尾根の反対側＝北面に道を探す。 イメージより低い所に踏み跡と野生動物観察用カメラ。 （10:38・写真7） 小尾根で薄い踏み跡が途絶え、ロープが二段に渡る。とおせんぼなのか・上がるためなのか。しかし現場はロープを全く必要としない地形と傾斜。しばらく考えこむ。 （10:59・写真8） 30mほど上がりごく薄い踏み跡を見つけてたどり、 （11:08・写真9） 規模の大きな飯場跡に着く。以前、家入沢を下降したさいにココを通過したのが、今回の山行のヒントになっている。 疫病神ノ窪？小松ヶタワの窪？登山詳細図では判然としない。\n続きは同高度で対岸を上がる踏み跡をたどる。 （11:17・写真10） その先は道跡探しの難しい植林。サインも多く、当てにせず行く。 （11:27・写真11） 植林を抜けると境界標柱。同時に、前方に崩落跡の白い山肌を見る。 （11:33・写真12） 崩落の規模が大きく、いままで見た中では最大級。こちら側を降れも・向こう側も登れもしないので上を巻く一択。場所は小松ヶタワの窪とヒカゲザス窪の中間にあたる。 （11:36・写真13） すぐ上にロープの支点、写真フレームの右には境界標柱もある。 （11:41・写真14） 崩落前の「悪い時」に補助用にロープを渡したが、その後完全に崩れたか。ロープは今や宙に浮いている。「中の島」みたいなところに中間支点がとってある。 （12:00・写真15） 横断地点を求めて上がり、崩落最上端で戻る方向＝トタン場方向にピンテを見る。悔しいので（笑、写真9のトタン場の窪までバックして道を繋いでいる。 （12:32・写真16） 前の写真地点に戻り、崩落上端を渡る。 ここで記録を残すうえで大失敗をやらかしている。崩落地点に着いたときから気づいていたのだが、崩落を巻いて回りこむ左岸は岩場。全景の写真を撮り忘れた。\nおよそその先を繋げられそうになく、「撤退」の二文字が頭をよぎる。 （12:41・写真17） ところが、なんと！バンド状に道が切ってある。恐れ入りました。 （13:04・写真18） 次はちょっと上がりすぎ、右から2本目の立木から伸びる道を見つけて難を逃れる。この傾斜なので下りるのも一苦労だが。 （13:11・写真19） ここにも使いようのないロープが渡る。もしかしてルートが変わったのかと周囲を観察するも、イメージできず。 出会った3本のロープの印象は、「付け方が下手だなあ」www。 （13:14・写真20） その先は張り出た岩の崖っぷち。折り返す踏み跡に乗り、回りこんで、 （13:21・写真21） 岩の上に境界標柱。ずいぶんシビれる場所に打ってある。 （13:23・写真22） 道跡がハッキリし斜面の岩が減ってゆき、問題はない。 （13:38・写真23） ヒカゲザス尾根に着く。たどってきた道の入り口には木でバッテンが作ってある。じっさい危なっかしい道だ。 （13:47・写真24） ヒカゲザスで撤収するつもりが、尾根の反対側を眺めているうちに気が変わる。\n歩き出しはきわめて薄い。上下しながら行き、この写真でやっと道跡に乗った足裏感覚を得る。傾斜がないのが助かる。 （13:49・写真25） ハッキリしてくる。\nお「まだ14時前だし。マリアさまが『イケイケ！ドンドン！』って言ってない？\nオ「…………」 （14:05・写真26） 狩鞍沢が緩斜面の上に幅広なので、道跡探しにかなり気を遣ってたどりついた炭焼き窯跡。相当古いようで石はほとんど持っていかれてしまっている。入口の左右と、円形の土台状が残るのみ。\nしかし古の人工物を見たのは、「かつて道があった証拠」になるから嬉しい。 （14:35・写真27） 山ノ神尾根に上がったあとは北西面を1時間ほど探索する。目ぼしい成果はなし。 （15:26・写真28） 狩鞍山。 （15:44・写真29） お「『の』や『ノ』は農大さんだったか！おじさんも鈍いなあ」\nオ「…………」 （16:40・写真30） お「マリアさまのおだてに、釘を刺してくださったのがきっと山の神様なんだ。ありがとうございました」\nオ「…………」 ","permalink":"https://montagna-katokeyci.github.io/oohc/posts/2026-05-09/","summary":"\u003cp\u003e「ここに道がなかったはずがない」シリーズ（笑）の3回目。カロー谷左岸の「滝入ノ道」、ゴンエ尾根から小雲取谷出合への捷路に続くのは、三ノ木戸集落から石尾根北面への仕事道。これも、無いはずが無い。\u003cbr\u003e\n果たして、比較すれば時代が下ったと思われる明瞭な道型に出合う。しかし途中の窪の大崩落で道が付け替えられた様子だ。一往復して窪を渡ったあとは崖っぷちの踏み跡が待つ。スリリングな廃道を狩鞍沢の炭焼き窯跡までたどった。\u003c/p\u003e\n\u003chr\u003e\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth style=\"text-align: left\"\u003e項目\u003c/th\u003e\n\t\t\t\t\t\u003cth style=\"text-align: left\"\u003e内容\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e記録日\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e2026年5月9日（土）\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e天候\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e晴れのち曇り、無風\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003eパーティ\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003eモンターニャ単独\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003eアクセス\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003eJR青梅線で奥多摩駅\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e行程\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e奥多摩駅、城、三ノ木戸、石尾根縦走路三ノ木戸分岐、（三ノ木戸から石尾根北面の道）、家入沢、ヒカゲザス尾根、狩鞍沢、狩倉山、石尾根縦走路、奥多摩駅\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003chr\u003e\n\u003ch3 id=\"コースタイム\"\u003eコースタイム\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e07:43～奥多摩駅スタート\u003c/li\u003e\n\u003cli\u003e08:33～城集落～08:46\u003c/li\u003e\n\u003cli\u003e09:03～三ノ木戸集落\u003c/li\u003e\n\u003cli\u003e09:57～三ノ木戸分岐@石尾根～10:25\u003c/li\u003e\n\u003cli\u003e11:08～規模の大きなトタン場@家入沢\u003c/li\u003e\n\u003cli\u003e11:33～崩落窪、小松ヶタワの窪とヒカゲザス窪のあいだ\u003c/li\u003e\n\u003cli\u003e11:47～崩落最上端～12:12\u003c/li\u003e\n\u003cli\u003e12:23～バックして11:08のトタン場に戻る\u003c/li\u003e\n\u003cli\u003e12:32～崩落最上端に戻る\u003c/li\u003e\n\u003cli\u003e13:18～ヒカゲザス窪・小松ヶタワの窪中尾根\u003c/li\u003e\n\u003cli\u003e13:32ごろ～ヒカゲザス窪\u003c/li\u003e\n\u003cli\u003e13:38～ヒカゲザス尾根～13:43\u003c/li\u003e\n\u003cli\u003e14:03～狩鞍沢の炭焼き窯跡\u003c/li\u003e\n\u003cli\u003e14:10～山ノ神尾根～15:16\u003c/li\u003e\n\u003cli\u003e15:26～狩倉山～15:46\u003c/li\u003e\n\u003cli\u003e17:11～奥多摩駅フィニッシュ\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003ch3 id=\"コースマップ\"\u003eコースマップ\u003c/h3\u003e\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003clink rel=\"stylesheet\" href=\"https://unpkg.com/leaflet@1.9.4/dist/leaflet.css\" /\u003e\n\u003cstyle\u003e\n  .gpx-container {\n    width: 100%;\n    margin: 1.5rem 0;\n    border: 1px solid #ccc;\n    border-radius: 8px;\n    overflow: hidden;\n    background: #fff;\n    box-shadow: 0 2px 6px rgba(0,0,0,0.08);\n    font-family: sans-serif;\n  }\n  .gpx-map { height: 380px; width: 100%; }\n  \n   \n  .gpx-summary {\n    display: flex;\n    flex-wrap: nowrap;\n    justify-content: space-between;\n    align-items: center;\n    background: #f8f9fa;\n    padding: 8px 10px;\n    border-top: 1px solid #e0e0e0;\n    border-bottom: 1px solid #e0e0e0;\n    font-size: 0.8rem;\n    color: #333;\n    overflow-x: auto;\n    white-space: nowrap;\n  }\n  .gpx-summary-item {\n    margin: 0 4px;\n  }\n  .gpx-summary-item strong {\n    color: #007bff;\n    font-size: 0.95rem;\n    margin-left: 2px;\n  }\n\n  .gpx-chart-wrapper {\n    height: 180px;\n    width: 100%;\n    padding: 10px;\n    background: #fafafa;\n    box-sizing: border-box;\n  }\n\n   \n  .start-marker-icon, .goal-marker-icon {\n    background: none;\n    border: none;\n    font-weight: bold;\n    font-size: 11px;\n    color: #ffffff;\n    text-align: center;\n    line-height: 18px;\n  }\n\u003c/style\u003e\n\n\n\u003cdiv class=\"gpx-container\"\u003e\n  \u003cdiv id=\"map-a94201a3\" class=\"gpx-map\"\u003e\u003c/div\u003e\n  \u003cdiv id=\"summary-a94201a3\" class=\"gpx-summary\"\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e総距離:\u003cstrong id=\"sum-dist-a94201a3\"\u003e-\u003c/strong\u003e km\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e累積標高上り:\u003cstrong id=\"sum-up-a94201a3\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e累積標高下り:\u003cstrong id=\"sum-down-a94201a3\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e最高標高:\u003cstrong id=\"sum-max-a94201a3\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e最低標高:\u003cstrong id=\"sum-min-a94201a3\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n  \u003c/div\u003e\n  \u003cdiv class=\"gpx-chart-wrapper\"\u003e\n    \u003ccanvas id=\"chart-a94201a3\"\u003e\u003c/canvas\u003e\n  \u003c/div\u003e\n\u003c/div\u003e\n\n\n\u003cscript src=\"https://unpkg.com/leaflet@1.9.4/dist/leaflet.js\"\u003e\u003c/script\u003e\n\u003cscript src=\"https://cdnjs.cloudflare.com/ajax/libs/leaflet-gpx/1.7.0/gpx.min.js\"\u003e\u003c/script\u003e\n\u003cscript src=\"https://cdn.jsdelivr.net/npm/chart.js\"\u003e\u003c/script\u003e\n\n\u003cscript\u003e\nwindow.addEventListener('load', function() {\n  var gpxUrl = '\\/oohc\\/posts\\/2026-05-09\\/20260509_20260509.gpx';\n\n  \n  var map = L.map('map-a94201a3').setView([0, 0], 10);\n  L.tileLayer('https://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png', {\n    attribution: '\u003ca href=\"https://maps.gsi.go.jp/development/ichiran.html\" target=\"_blank\"\u003e国土地理院\u003c/a\u003e',\n    maxZoom: 18\n  }).addTo(map);\n\n  \n  L.control.scale({\n    imperial: false,\n    position: 'bottomleft'\n  }).addTo(map);\n\n  var hoverMarker = null;\n  var trackPoints = [];\n  var timeLabels = []; \n\n  \n  var ctx = document.getElementById('chart-a94201a3').getContext('2d');\n  var chart = new Chart(ctx, {\n    type: 'line',\n    data: {\n      datasets: [{\n        label: '標高 (m)',\n        data: [],\n        borderColor: '#007bff',\n        backgroundColor: 'rgba(0, 123, 255, 0.1)',\n        fill: true,\n        borderWidth: 1.5,\n        pointRadius: 0,\n        pointHoverRadius: 6,\n        tension: 0.1\n      }]\n    },\n    options: {\n      responsive: true,\n      maintainAspectRatio: false,\n      interaction: { mode: 'index', intersect: false },\n      plugins: {\n        legend: { display: false },\n        \n        tooltip: {\n          callbacks: {\n            title: function(items) {\n              var index = items[0].dataIndex;\n              var timeStr = timeLabels[index] || '';\n              var distStr = items[0].raw.x.toFixed(2) + ' km';\n              return timeStr ? '時刻: ' + timeStr + '（距離: ' + distStr + '）' : '距離: ' + distStr;\n            },\n            label: function(item) {\n              return '標高: ' + item.raw.y + ' m';\n            }\n          }\n        }\n      },\n      scales: {\n        x: {\n          type: 'linear', \n          display: true,\n          title: { display: true, text: '距離 (km)', font: { size: 10 } },\n          ticks: {\n            font: { size: 10 }\n          },\n          grid: { color: 'rgba(0, 0, 0, 0.05)' }\n        },\n        y: {\n          display: true,\n          title: { display: true, text: '標高 (m)', font: { size: 10 } },\n          ticks: { font: { size: 10 } },\n          grid: { color: 'rgba(0, 0, 0, 0.05)' }\n        }\n      },\n      \n      onHover: function(event, activeElements) {\n        if (activeElements \u0026\u0026 activeElements.length \u003e 0) {\n          var index = activeElements[0].index;\n          updateHoverMarker(index);\n        }\n      }\n    }\n  });\n\n  \n  function updateHoverMarker(index) {\n    var pt = trackPoints[index];\n    if (pt) {\n      if (!hoverMarker) {\n        hoverMarker = L.circleMarker([pt.lat, pt.lng], {\n          radius: 8,\n          fillColor: '#00ffff',\n          color: '#ffffff',\n          weight: 3,\n          opacity: 1,\n          fillOpacity: 1\n        }).addTo(map);\n      } else {\n        hoverMarker.setLatLng([pt.lat, pt.lng]);\n      }\n    }\n  }\n\n  \n  function extractTrackData(layer) {\n    var pts = [];\n    var polylines = [];\n\n    if (typeof layer.getLatLngs === 'function') {\n      var latlngs = layer.getLatLngs();\n      var flat = Array.isArray(latlngs[0]) ? latlngs.flat(Infinity) : latlngs;\n      flat.forEach(function(p) {\n        if (p \u0026\u0026 typeof p.lat === 'number') {\n          pts.push({ lat: p.lat, lng: p.lng });\n        }\n      });\n      if (layer instanceof L.Polyline) {\n        polylines.push(layer);\n      }\n    } else if (typeof layer.eachLayer === 'function') {\n      layer.eachLayer(function(child) {\n        var res = extractTrackData(child);\n        pts = pts.concat(res.pts);\n        polylines = polylines.concat(res.polylines);\n      });\n    }\n    return { pts: pts, polylines: polylines };\n  }\n\n  \n  fetch(gpxUrl)\n    .then(function(response) { return response.text(); })\n    .then(function(xmlText) {\n      var parser = new DOMParser();\n      var xmlDoc = parser.parseFromString(xmlText, \"text/xml\");\n      var trkpts = xmlDoc.getElementsByTagName(\"trkpt\");\n\n      for (var i = 0; i \u003c trkpts.length; i++) {\n        var timeNode = trkpts[i].getElementsByTagName(\"time\")[0];\n        if (timeNode) {\n          var dateObj = new Date(timeNode.textContent);\n          var timeStr = dateObj.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', hour12: false });\n          timeLabels.push(timeStr);\n        } else {\n          timeLabels.push('');\n        }\n      }\n    })\n    .catch(function(err) {\n      console.error(\"GPX Time Parsing Error:\", err);\n    });\n\n  \n  new L.GPX(gpxUrl, {\n    async: true,\n    polyline_options: { color: '#ff3300', weight: 5, opacity: 0.8 },\n    marker_options: { startIconUrl: null, endIconUrl: null, wptIconUrls: null }\n  }).on('loaded', function(e) {\n    var gpx = e.target;\n    map.fitBounds(gpx.getBounds());\n\n    \n    var totalDistMeters = gpx.get_distance();\n    var distKmNum = totalDistMeters / 1000;\n    var distKmStr = distKmNum.toFixed(2);\n    var maxEle = Math.round(gpx.get_elevation_max());\n    var minEle = Math.round(gpx.get_elevation_min());\n    var gainEle = Math.round(gpx.get_elevation_gain());\n    var lossEle = Math.round(gpx.get_elevation_loss());\n\n    document.getElementById('sum-dist-a94201a3').innerText = distKmStr;\n    document.getElementById('sum-up-a94201a3').innerText = gainEle;\n    document.getElementById('sum-down-a94201a3').innerText = lossEle;\n    document.getElementById('sum-max-a94201a3').innerText = maxEle;\n    document.getElementById('sum-min-a94201a3').innerText = minEle;\n\n    \n    var eleData = gpx.get_elevation_data();\n    var chartDataPoints = [];\n\n    var extracted = extractTrackData(gpx);\n    trackPoints = extracted.pts;\n\n    \n    if (trackPoints.length \u003e 0) {\n      var startPt = trackPoints[0];\n      var endPt = trackPoints[trackPoints.length - 1];\n\n      L.circleMarker([startPt.lat, startPt.lng], {\n        radius: 9,\n        fillColor: '#28a745',\n        color: '#ffffff',\n        weight: 2,\n        opacity: 1,\n        fillOpacity: 0.9\n      }).addTo(map).bindTooltip('スタート', { permanent: false, direction: 'top' });\n\n      L.circleMarker([endPt.lat, endPt.lng], {\n        radius: 9,\n        fillColor: '#dc3545',\n        color: '#ffffff',\n        weight: 2,\n        opacity: 1,\n        fillOpacity: 0.9\n      }).addTo(map).bindTooltip('ゴール', { permanent: false, direction: 'top' });\n    }\n\n    eleData.forEach(function(item) {\n      var dist = typeof item[0] === 'number' ? item[0] : parseFloat(item[0]);\n      var ele = Math.round(item[1]);\n      chartDataPoints.push({\n        x: parseFloat(dist.toFixed(2)),\n        y: ele\n      });\n    });\n\n    \n    var dynamicStepSize = 1.0;\n    if (distKmNum \u003c= 5) {\n      dynamicStepSize = 0.5;   \n    } else if (distKmNum \u003c= 20) {\n      dynamicStepSize = 1.0;   \n    } else if (distKmNum \u003c= 40) {\n      dynamicStepSize = 5.0;   \n    } else {\n      dynamicStepSize = 10.0;  \n    }\n\n    \n    chart.options.scales.x.max = distKmNum;\n\n    \n    var allowedTicks = [];\n    for (var v = 0; v \u003c distKmNum; v += dynamicStepSize) {\n      allowedTicks.push(parseFloat(v.toFixed(1)));\n    }\n    \n\n    \n    chart.options.scales.x.ticks.callback = function(value) {\n      for (var i = 0; i \u003c allowedTicks.length; i++) {\n        if (Math.abs(value - allowedTicks[i]) \u003c 0.01) {\n          return value + ' km';\n        }\n      }\n      \n      return '';\n    };\n\n    \n    chart.options.scales.x.afterBuildTicks = function(axis) {\n      axis.ticks = allowedTicks.map(function(val) {\n        return { value: val };\n      });\n    };\n\n    chart.data.datasets[0].data = chartDataPoints;\n    chart.update();\n\n    \n    extracted.polylines.forEach(function(polyline) {\n      polyline.on('mousemove', function(ev) {\n        if (!trackPoints.length) return;\n\n        var mouseLatLng = ev.latlng;\n        var closestIndex = 0;\n        var minDist = Infinity;\n\n        for (var i = 0; i \u003c trackPoints.length; i++) {\n          var d = mouseLatLng.distanceTo(L.latLng(trackPoints[i].lat, trackPoints[i].lng));\n          if (d \u003c minDist) {\n            minDist = d;\n            closestIndex = i;\n          }\n        }\n\n        updateHoverMarker(closestIndex);\n\n        chart.setActiveElements([{ datasetIndex: 0, index: closestIndex }]);\n        chart.tooltip.setActiveElements([{ datasetIndex: 0, index: closestIndex }], { x: 0, y: 0 });\n        chart.update();\n      });\n    });\n\n  }).addTo(map);\n});\n\u003c/script\u003e\n\u003chr\u003e\n\u003ch3 id=\"山行記録\"\u003e山行記録\u003c/h3\u003e\n\u003ch4 id=\"三ノ木戸から石尾根北面への道\"\u003e三ノ木戸から石尾根北面への道\u003c/h4\u003e\n\u003cp\u003eこの径路は難しい。狩倉山に直接突き上げる窪のトタン場までは薄く、岩記号に接する北の窪の大崩落の上を巻いたあとは岩尾根の崖っぷちをゆく。その先、ヒカゲザス尾根までは比較的明瞭だが、尾根の北面に回りこみ狩鞍沢の炭焼き窯跡まではごく薄い。\u003cbr\u003e\n炭焼き窯跡付近が緩斜面で山ノ神尾根へ上がる道跡を探せず、今回の探索では北面にどのように続くのか、そもそも続きがあるのかは不明に終わった。\u003c/p\u003e","title":"三ノ木戸から石尾根北面への道"},{"content":"沢を遡り・ついでに隣の沢を下降するプランを立てたが、どう逆立ちしてもその日に帰れなそうにない。机上の計算では「05時の日の出には日原林道終点から長沢谷のオンマワシ付近に下りている」のがスタートの条件になるらしい。\nだいぶ温んできたから決行するか。2-3日前から睡眠の時間と長さを調整し、久しぶりに車を運転して東日原の駐車場へ来てみれば。夜間の気温は10℃まで下がり風がとても強い。02時半に起き出す気分にはまったくなれずアラームとプランをぜんぶキャンセルする。ふて寝した後に立て直した「とにかく歩こう」が本日のログになる。\nアックスは車内に残しチェーンスパイクはザックに放り込んだまま使用せず。\n項目 内容 記録日 2026年5月5日（火） 天候 風薫る快晴 パーティ モンターニャ単独 アクセス 車で東日原駐車場 行程 東日原、一石山神社、タワ尾根、ウトウの頭、県境尾根、表参道分岐（水松山の南）、天祖山、表参道、東日原 コースタイム 記入中 コースマップ 総距離:- km 累積標高上り:- m 累積標高下り:- m 最高標高:- m 最低標高:- m 山行記録 記入中\n関連する筆者の山行記録 公開日 写真（右クリック→新しいタブ...で拡大します）＋詳細記録 ","permalink":"https://montagna-katokeyci.github.io/oohc/posts/2026-05-05/","summary":"\u003cp\u003e沢を遡り・ついでに隣の沢を下降するプランを立てたが、どう逆立ちしてもその日に帰れなそうにない。机上の計算では「05時の日の出には日原林道終点から長沢谷のオンマワシ付近に下りている」のがスタートの条件になるらしい。\u003cbr\u003e\nだいぶ温んできたから決行するか。2-3日前から睡眠の時間と長さを調整し、久しぶりに車を運転して東日原の駐車場へ来てみれば。夜間の気温は10℃まで下がり風がとても強い。02時半に起き出す気分にはまったくなれずアラームとプランをぜんぶキャンセルする。ふて寝した後に立て直した「とにかく歩こう」が本日のログになる。\u003cbr\u003e\nアックスは車内に残しチェーンスパイクはザックに放り込んだまま使用せず。\u003c/p\u003e\n\u003chr\u003e\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth style=\"text-align: left\"\u003e項目\u003c/th\u003e\n\t\t\t\t\t\u003cth style=\"text-align: left\"\u003e内容\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e記録日\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e2026年5月5日（火）\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e天候\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e風薫る快晴\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003eパーティ\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003eモンターニャ単独\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003eアクセス\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e車で東日原駐車場\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e\u003cstrong\u003e行程\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd style=\"text-align: left\"\u003e東日原、一石山神社、タワ尾根、ウトウの頭、県境尾根、表参道分岐（水松山の南）、天祖山、表参道、東日原\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003chr\u003e\n\u003ch3 id=\"コースタイム\"\u003eコースタイム\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e記入中\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003ch3 id=\"コースマップ\"\u003eコースマップ\u003c/h3\u003e\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003clink rel=\"stylesheet\" href=\"https://unpkg.com/leaflet@1.9.4/dist/leaflet.css\" /\u003e\n\u003cstyle\u003e\n  .gpx-container {\n    width: 100%;\n    margin: 1.5rem 0;\n    border: 1px solid #ccc;\n    border-radius: 8px;\n    overflow: hidden;\n    background: #fff;\n    box-shadow: 0 2px 6px rgba(0,0,0,0.08);\n    font-family: sans-serif;\n  }\n  .gpx-map { height: 380px; width: 100%; }\n  \n   \n  .gpx-summary {\n    display: flex;\n    flex-wrap: nowrap;\n    justify-content: space-between;\n    align-items: center;\n    background: #f8f9fa;\n    padding: 8px 10px;\n    border-top: 1px solid #e0e0e0;\n    border-bottom: 1px solid #e0e0e0;\n    font-size: 0.8rem;\n    color: #333;\n    overflow-x: auto;\n    white-space: nowrap;\n  }\n  .gpx-summary-item {\n    margin: 0 4px;\n  }\n  .gpx-summary-item strong {\n    color: #007bff;\n    font-size: 0.95rem;\n    margin-left: 2px;\n  }\n\n  .gpx-chart-wrapper {\n    height: 180px;\n    width: 100%;\n    padding: 10px;\n    background: #fafafa;\n    box-sizing: border-box;\n  }\n\n   \n  .start-marker-icon, .goal-marker-icon {\n    background: none;\n    border: none;\n    font-weight: bold;\n    font-size: 11px;\n    color: #ffffff;\n    text-align: center;\n    line-height: 18px;\n  }\n\u003c/style\u003e\n\n\n\u003cdiv class=\"gpx-container\"\u003e\n  \u003cdiv id=\"map-6ac6f08d\" class=\"gpx-map\"\u003e\u003c/div\u003e\n  \u003cdiv id=\"summary-6ac6f08d\" class=\"gpx-summary\"\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e総距離:\u003cstrong id=\"sum-dist-6ac6f08d\"\u003e-\u003c/strong\u003e km\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e累積標高上り:\u003cstrong id=\"sum-up-6ac6f08d\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e累積標高下り:\u003cstrong id=\"sum-down-6ac6f08d\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e最高標高:\u003cstrong id=\"sum-max-6ac6f08d\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n    \u003cdiv class=\"gpx-summary-item\"\u003e最低標高:\u003cstrong id=\"sum-min-6ac6f08d\"\u003e-\u003c/strong\u003e m\u003c/div\u003e\n  \u003c/div\u003e\n  \u003cdiv class=\"gpx-chart-wrapper\"\u003e\n    \u003ccanvas id=\"chart-6ac6f08d\"\u003e\u003c/canvas\u003e\n  \u003c/div\u003e\n\u003c/div\u003e\n\n\n\u003cscript src=\"https://unpkg.com/leaflet@1.9.4/dist/leaflet.js\"\u003e\u003c/script\u003e\n\u003cscript src=\"https://cdnjs.cloudflare.com/ajax/libs/leaflet-gpx/1.7.0/gpx.min.js\"\u003e\u003c/script\u003e\n\u003cscript src=\"https://cdn.jsdelivr.net/npm/chart.js\"\u003e\u003c/script\u003e\n\n\u003cscript\u003e\nwindow.addEventListener('load', function() {\n  var gpxUrl = '\\/oohc\\/posts\\/2026-05-05\\/20260505_20260505.gpx';\n\n  \n  var map = L.map('map-6ac6f08d').setView([0, 0], 10);\n  L.tileLayer('https://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png', {\n    attribution: '\u003ca href=\"https://maps.gsi.go.jp/development/ichiran.html\" target=\"_blank\"\u003e国土地理院\u003c/a\u003e',\n    maxZoom: 18\n  }).addTo(map);\n\n  \n  L.control.scale({\n    imperial: false,\n    position: 'bottomleft'\n  }).addTo(map);\n\n  var hoverMarker = null;\n  var trackPoints = [];\n  var timeLabels = []; \n\n  \n  var ctx = document.getElementById('chart-6ac6f08d').getContext('2d');\n  var chart = new Chart(ctx, {\n    type: 'line',\n    data: {\n      datasets: [{\n        label: '標高 (m)',\n        data: [],\n        borderColor: '#007bff',\n        backgroundColor: 'rgba(0, 123, 255, 0.1)',\n        fill: true,\n        borderWidth: 1.5,\n        pointRadius: 0,\n        pointHoverRadius: 6,\n        tension: 0.1\n      }]\n    },\n    options: {\n      responsive: true,\n      maintainAspectRatio: false,\n      interaction: { mode: 'index', intersect: false },\n      plugins: {\n        legend: { display: false },\n        \n        tooltip: {\n          callbacks: {\n            title: function(items) {\n              var index = items[0].dataIndex;\n              var timeStr = timeLabels[index] || '';\n              var distStr = items[0].raw.x.toFixed(2) + ' km';\n              return timeStr ? '時刻: ' + timeStr + '（距離: ' + distStr + '）' : '距離: ' + distStr;\n            },\n            label: function(item) {\n              return '標高: ' + item.raw.y + ' m';\n            }\n          }\n        }\n      },\n      scales: {\n        x: {\n          type: 'linear', \n          display: true,\n          title: { display: true, text: '距離 (km)', font: { size: 10 } },\n          ticks: {\n            font: { size: 10 }\n          },\n          grid: { color: 'rgba(0, 0, 0, 0.05)' }\n        },\n        y: {\n          display: true,\n          title: { display: true, text: '標高 (m)', font: { size: 10 } },\n          ticks: { font: { size: 10 } },\n          grid: { color: 'rgba(0, 0, 0, 0.05)' }\n        }\n      },\n      \n      onHover: function(event, activeElements) {\n        if (activeElements \u0026\u0026 activeElements.length \u003e 0) {\n          var index = activeElements[0].index;\n          updateHoverMarker(index);\n        }\n      }\n    }\n  });\n\n  \n  function updateHoverMarker(index) {\n    var pt = trackPoints[index];\n    if (pt) {\n      if (!hoverMarker) {\n        hoverMarker = L.circleMarker([pt.lat, pt.lng], {\n          radius: 8,\n          fillColor: '#00ffff',\n          color: '#ffffff',\n          weight: 3,\n          opacity: 1,\n          fillOpacity: 1\n        }).addTo(map);\n      } else {\n        hoverMarker.setLatLng([pt.lat, pt.lng]);\n      }\n    }\n  }\n\n  \n  function extractTrackData(layer) {\n    var pts = [];\n    var polylines = [];\n\n    if (typeof layer.getLatLngs === 'function') {\n      var latlngs = layer.getLatLngs();\n      var flat = Array.isArray(latlngs[0]) ? latlngs.flat(Infinity) : latlngs;\n      flat.forEach(function(p) {\n        if (p \u0026\u0026 typeof p.lat === 'number') {\n          pts.push({ lat: p.lat, lng: p.lng });\n        }\n      });\n      if (layer instanceof L.Polyline) {\n        polylines.push(layer);\n      }\n    } else if (typeof layer.eachLayer === 'function') {\n      layer.eachLayer(function(child) {\n        var res = extractTrackData(child);\n        pts = pts.concat(res.pts);\n        polylines = polylines.concat(res.polylines);\n      });\n    }\n    return { pts: pts, polylines: polylines };\n  }\n\n  \n  fetch(gpxUrl)\n    .then(function(response) { return response.text(); })\n    .then(function(xmlText) {\n      var parser = new DOMParser();\n      var xmlDoc = parser.parseFromString(xmlText, \"text/xml\");\n      var trkpts = xmlDoc.getElementsByTagName(\"trkpt\");\n\n      for (var i = 0; i \u003c trkpts.length; i++) {\n        var timeNode = trkpts[i].getElementsByTagName(\"time\")[0];\n        if (timeNode) {\n          var dateObj = new Date(timeNode.textContent);\n          var timeStr = dateObj.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', hour12: false });\n          timeLabels.push(timeStr);\n        } else {\n          timeLabels.push('');\n        }\n      }\n    })\n    .catch(function(err) {\n      console.error(\"GPX Time Parsing Error:\", err);\n    });\n\n  \n  new L.GPX(gpxUrl, {\n    async: true,\n    polyline_options: { color: '#ff3300', weight: 5, opacity: 0.8 },\n    marker_options: { startIconUrl: null, endIconUrl: null, wptIconUrls: null }\n  }).on('loaded', function(e) {\n    var gpx = e.target;\n    map.fitBounds(gpx.getBounds());\n\n    \n    var totalDistMeters = gpx.get_distance();\n    var distKmNum = totalDistMeters / 1000;\n    var distKmStr = distKmNum.toFixed(2);\n    var maxEle = Math.round(gpx.get_elevation_max());\n    var minEle = Math.round(gpx.get_elevation_min());\n    var gainEle = Math.round(gpx.get_elevation_gain());\n    var lossEle = Math.round(gpx.get_elevation_loss());\n\n    document.getElementById('sum-dist-6ac6f08d').innerText = distKmStr;\n    document.getElementById('sum-up-6ac6f08d').innerText = gainEle;\n    document.getElementById('sum-down-6ac6f08d').innerText = lossEle;\n    document.getElementById('sum-max-6ac6f08d').innerText = maxEle;\n    document.getElementById('sum-min-6ac6f08d').innerText = minEle;\n\n    \n    var eleData = gpx.get_elevation_data();\n    var chartDataPoints = [];\n\n    var extracted = extractTrackData(gpx);\n    trackPoints = extracted.pts;\n\n    \n    if (trackPoints.length \u003e 0) {\n      var startPt = trackPoints[0];\n      var endPt = trackPoints[trackPoints.length - 1];\n\n      L.circleMarker([startPt.lat, startPt.lng], {\n        radius: 9,\n        fillColor: '#28a745',\n        color: '#ffffff',\n        weight: 2,\n        opacity: 1,\n        fillOpacity: 0.9\n      }).addTo(map).bindTooltip('スタート', { permanent: false, direction: 'top' });\n\n      L.circleMarker([endPt.lat, endPt.lng], {\n        radius: 9,\n        fillColor: '#dc3545',\n        color: '#ffffff',\n        weight: 2,\n        opacity: 1,\n        fillOpacity: 0.9\n      }).addTo(map).bindTooltip('ゴール', { permanent: false, direction: 'top' });\n    }\n\n    eleData.forEach(function(item) {\n      var dist = typeof item[0] === 'number' ? item[0] : parseFloat(item[0]);\n      var ele = Math.round(item[1]);\n      chartDataPoints.push({\n        x: parseFloat(dist.toFixed(2)),\n        y: ele\n      });\n    });\n\n    \n    var dynamicStepSize = 1.0;\n    if (distKmNum \u003c= 5) {\n      dynamicStepSize = 0.5;   \n    } else if (distKmNum \u003c= 20) {\n      dynamicStepSize = 1.0;   \n    } else if (distKmNum \u003c= 40) {\n      dynamicStepSize = 5.0;   \n    } else {\n      dynamicStepSize = 10.0;  \n    }\n\n    \n    chart.options.scales.x.max = distKmNum;\n\n    \n    var allowedTicks = [];\n    for (var v = 0; v \u003c distKmNum; v += dynamicStepSize) {\n      allowedTicks.push(parseFloat(v.toFixed(1)));\n    }\n    \n\n    \n    chart.options.scales.x.ticks.callback = function(value) {\n      for (var i = 0; i \u003c allowedTicks.length; i++) {\n        if (Math.abs(value - allowedTicks[i]) \u003c 0.01) {\n          return value + ' km';\n        }\n      }\n      \n      return '';\n    };\n\n    \n    chart.options.scales.x.afterBuildTicks = function(axis) {\n      axis.ticks = allowedTicks.map(function(val) {\n        return { value: val };\n      });\n    };\n\n    chart.data.datasets[0].data = chartDataPoints;\n    chart.update();\n\n    \n    extracted.polylines.forEach(function(polyline) {\n      polyline.on('mousemove', function(ev) {\n        if (!trackPoints.length) return;\n\n        var mouseLatLng = ev.latlng;\n        var closestIndex = 0;\n        var minDist = Infinity;\n\n        for (var i = 0; i \u003c trackPoints.length; i++) {\n          var d = mouseLatLng.distanceTo(L.latLng(trackPoints[i].lat, trackPoints[i].lng));\n          if (d \u003c minDist) {\n            minDist = d;\n            closestIndex = i;\n          }\n        }\n\n        updateHoverMarker(closestIndex);\n\n        chart.setActiveElements([{ datasetIndex: 0, index: closestIndex }]);\n        chart.tooltip.setActiveElements([{ datasetIndex: 0, index: closestIndex }], { x: 0, y: 0 });\n        chart.update();\n      });\n    });\n\n  }).addTo(map);\n});\n\u003c/script\u003e\n\u003chr\u003e\n\u003ch3 id=\"山行記録\"\u003e山行記録\u003c/h3\u003e\n\u003cp\u003e記入中\u003c/p\u003e","title":"タワ尾根〜天祖山表参道"},{"content":"まだ投稿がありません。\n","permalink":"https://montagna-katokeyci.github.io/oohc/posts/zakkan001/","summary":"\u003cp\u003eまだ投稿がありません。\u003c/p\u003e","title":"雑感のテスト記事"},{"content":"まだ投稿がありません。\n","permalink":"https://montagna-katokeyci.github.io/oohc/posts/musica001/","summary":"\u003cp\u003eまだ投稿がありません。\u003c/p\u003e","title":"カンツォーネのテスト記事"}]