<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Windows 11のグラフィックドライバ不具合(死神ドライバ)対策:DDU、ISO上書き、PRO Edition導入による最強修復プロトコル。BSOD、Explorerクラッシュ、DCOMエラーの解決手順を詳細解説">
<meta name="keywords" content="死神ドライバ, Windows 11修復, DDU, AMD Adrenalin, PRO Edition, BSOD, DCOMエラー, Explorerクラッシュ, ISO上書きインストール">
<meta name="author" content="Grok">
<meta name="robots" content="index, follow">
<title>最強修復プロトコル:死神ドライバ対策 | Windows 11不具合解決ガイド</title>
<link href="https://cdn.jsdelivr.net/npm/remixicon@4.5.0/fonts/remixicon.css" rel="stylesheet" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/7.0.1/css/all.min.css" integrity="sha512-2SwdPD6INVrV/lHTZbO2nodKhrnDdJK9/kg2XD1r9uGqPo1cUbujc+IYdlYdEErWNu69gVcYgdxlmVmzTWnetw==" crossorigin="anonymous" referrerpolicy="no-referrer" />
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.4/dist/chart.umd.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/apexcharts@3.53.0/dist/apexcharts.min.js"></script>
<style>
body {
font-family: 'Meiryo', 'Segoe UI', sans-serif;
line-height: 1.6;
color: #333;
max-width: 1400px;
margin: 30px auto;
padding: 0 20px;
background: linear-gradient(135deg, #f5f7fa 0%, #e4e8f0 100%);
}
header {
text-align: center;
padding: 2rem 0;
background-color: #0071c2;
color: white;
border-radius: 8px;
}
h1 {
font-size: 2.5rem;
margin: 0;
}
h2 {
font-size: 1.8rem;
margin-top: 2rem;
background: linear-gradient(to bottom, #0071c2, #00a1c2);
color: #fff;
padding: 10px 15px;
border-radius: 4px;
display: flex;
align-items: center;
gap: 8px;
}
h3 {
font-size: 1.4rem;
color: #0071c2;
}
h4 {
font-size: 1.2rem;
color: #2c3e50;
}
p, li {
font-size: 1rem;
margin-bottom: 1rem;
}
ul, ol {
margin: 1rem 0;
padding-left: 0;
list-style-type: none;
}
ul li, ol li {
position: relative;
padding-left: 30px;
margin-bottom: 10px;
role: listitem;
}
li i[class^="ri-"] {
color: #0071c2;
margin-right: 8px;
font-size: 1.1rem;
vertical-align: middle;
aria-hidden: true;
}
.checklist h4 {
margin-top: 0;
color: #0071c2;
display: flex;
align-items: center;
gap: 8px;
}
.checklist h4::before {
content: "check_circle";
font-family: 'Material Icons';
background-color: #0071c2;
color: white;
width: 20px;
height: 20px;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-size: 12px;
margin-right: 8px;
}
.sop-box h4 {
margin-top: 0;
color: #2e7d32;
display: flex;
align-items: center;
gap: 8px;
}
.sop-box h4::before {
content: "warning";
font-family: 'Material Icons';
background-color: #2e7d32;
color: white;
width: 20px;
height: 20px;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-size: 12px;
margin-right: 8px;
}
code {
background-color: #f1f1f1;
padding: 2px 6px;
border-radius: 4px;
font-family: 'Fira Code', monospace;
}
table {
width: 100%;
border-collapse: collapse;
margin: 1.5rem 0;
background-color: white;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
th, td {
border: 1px solid #ddd;
padding: 12px;
text-align: left;
}
th {
background-color: #0071c2;
color: white;
}
caption {
caption-side: top;
font-weight: bold;
padding: 8px;
color: #333;
}
tr:nth-child(even) { background-color: #f5f5f5; }
a {
color: #0071c2;
text-decoration: none;
}
a:hover { text-decoration: underline; }
.feature-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
gap: 24px;
margin-bottom: 1.5rem;
}
.card {
background: rgba(255, 255, 255, 0.15);
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
border: 1px solid rgba(255, 255, 255, 0.3);
border-radius: 8px;
box-shadow: 0 2px 6px rgba(0,0,0,0.08);
padding: 20px 24px;
transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.card:hover, .card:focus-visible {
transform: translateY(-4px);
box-shadow: 0 6px 12px rgba(0, 0, 0, 0.15);
}
.card-header {
display: flex;
align-items: center;
gap: 8px;
}
.card-header .fa-solid, .card-header .material-icons {
font-size: 1.2rem;
color: #A30D29;
}
.card-title {
font-size: 1.1rem;
font-weight: bold;
color: #333;
}
.card-description {
font-size: 0.95rem;
color: #555;
line-height: 1.6;
}
.dashboard {
max-width: 1400px;
margin: 30px auto;
padding: 0 20px;
}
.kpi-boxes {
display: flex;
gap: 20px;
margin-bottom: 30px;
}
.kpi {
flex: 1;
padding: 20px;
border-radius: 8px;
color: white;
font-weight: bold;
font-size: 18px;
position: relative;
overflow: hidden;
}
.kpi .value { font-size: 26px; }
.kpi .label { font-size: 14px; margin-top: 5px; opacity: 0.9; }
.purple { background-color: #7e57c2; }
.blue { background-color: #42a5f5; }
.orange { background-color: #ffa726; }
.red { background-color: #ef5350; }
.main-chart {
background: rgba(255, 255, 255, 0.9);
border-radius: 12px;
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
padding: 25px;
margin-bottom: 30px;
backdrop-filter: blur(8px);
border: 1px solid rgba(255, 255, 255, 0.3);
}
.sub-charts {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 25px;
margin-bottom: 30px;
}
.sub-chart {
background: rgba(255, 255, 255, 0.7);
border-radius: 10px;
padding: 15px;
box-shadow: 0 6px 18px rgba(0, 0, 0, 0.08);
backdrop-filter: blur(6px);
border: 1px solid rgba(255, 255, 255, 0.2);
}
.faq-block {
background: rgba(255, 255, 255, 0.15);
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
border: 1px solid rgba(255, 255, 255, 0.3);
padding: 15px;
border-radius: 8px;
margin-bottom: 1rem;
border-left: 4px solid #0071c2;
}
.faq-block p { margin: 0.5rem 0; }
.faq-block strong { color: #0071c2; }
.progress-wrapper {
margin: 1rem 0;
display: flex;
flex-direction: column;
gap: 0.5rem;
}
.progress-bar-container {
height: 8px;
background-color: #e0e0e0;
border-radius: 4px;
overflow: hidden;
}
.progress-bar {
height: 100%;
width: 0%;
background-color: #0071c2;
border-radius: 4px;
transition: width 4s ease-out;
}
.progress-label {
color: #0071c2;
font-size: 0.9rem;
margin-bottom: 0.5rem;
}
#progress-bar {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 4px;
background: #e0e0e0;
z-index: 9999;
}
#progress-bar-fill {
height: 100%;
width: 0%;
background: linear-gradient(to right, #0071c2, #00a1c2);
transition: width 0.1s linear;
}
@media (prefers-contrast: high) {
body { background: #000000; color: #FFFFFF; }
.card, .faq-block, .sop-box, .checklist, table, .main-chart, .sub-chart {
background: #000000 !important;
border: 2px solid #FFFFFF !important;
}
.progress-bar-container, #progress-bar { background: #000000 !important; }
.progress-bar, #progress-bar-fill { background: #FFFFFF !important; }
.counter-value, .progress-label, .card-title, .card-description, th, td, p, li, h1, h2, h3 {
color: #FFFFFF !important;
}
.card-header .fa-solid, .card-header .material-icons, li i[class^="ri-"] {
filter: invert(100%) !important;
}
.checklist h4::before, .sop-box h4::before {
color: #FFFFFF !important;
background-color: transparent !important;
}
}
@media (max-width: 1024px) {
.sub-charts { grid-template-columns: 1fr; }
}
@media (max-width: 768px) {
h1 { font-size: 1.8rem; }
h2 { font-size: 1.5rem; }
table { font-size: 0.9rem; }
.kpi-boxes { flex-direction: column; }
.feature-grid { grid-template-columns: 1fr; }
}
</style>
</head>
<body>
<div id="progress-bar" role="progressbar" aria-valuemin="0" aria-valuemax="100" aria-valuenow="0" aria-label="Page scroll progress">
<div id="progress-bar-fill"></div>
</div>
<header>
<h1>最強修復プロトコル:死神ドライバ対策</h1>
</header>
<main>
<section aria-labelledby="intro-heading">
<h2 id="intro-heading"><i aria-label="概要 icon" class="fa-solid fa-book" style="color: white; margin-right: 8px;"></i>死神ドライバとは?概要と影響</h2>
<p>このプロトコルは、グラフィックドライバがシステムに深刻な不具合(通称「死神ドライバ」)を引き起こした場合の<strong>最終かつ最も確実な解決策</strong>です。単なるドライバの再インストールでは解決しない、<strong>OSの根本的な構造破損</strong>に焦点を当てています。特にAMD AdrenalinドライバによるExplorerクラッシュ、DCOMエラー、WinSxS破損を対象としています。</p>
<div class="feature-grid">
<div class="card" role="region" aria-labelledby="card-issue1" style="border-left: 4px solid red;">
<div class="card-header">
<i aria-label="Explorerクラッシュ icon" class="material-icons">error</i>
<h3 class="card-title" id="card-issue1">Explorerクラッシュ - クリティカル</h3>
</div>
<div class="card-description">
<p>右クリック時の遅延やクラッシュ。原因:AdrenalinのShell Extensionによるレジストリ破損。影響:日常操作の阻害。</p>
</div>
</div>
<div class="card" role="region" aria-labelledby="card-issue2" style="border-left: 4px solid orange;">
<div class="card-header">
<i aria-label="DCOMエラー icon" class="material-icons">warning</i>
<h3 class="card-title" id="card-issue2">DCOMエラー - 高</h3>
</div>
<div class="card-description">
<p>COM+登録の破損によるサービス障害。原因:AdrenalinのGUID統合。影響:システムサービスの不安定化。</p>
</div>
</div>
<div class="card" role="region" aria-labelledby="card-issue3" style="border-left: 4px solid yellow;">
<div class="card-header">
<i aria-label="WinSxS破損 icon" class="material-icons">build</i>
<h3 class="card-title" id="card-issue3">WinSxS破損 - 中</h3>
</div>
<div class="card-description">
<p>システムコンポーネントのキャッシュ破損。原因:ドライバの不適切なインストール。影響:更新や修復の失敗。</p>
</div>
</div>
</div>
</section>
<section aria-labelledby="protocol-heading">
<h2 id="protocol-heading"><i aria-label="修復手順 icon" class="fa-solid fa-list-check" style="color: white; margin-right: 8px;"></i>修復プロトコル手順</h2>
<div class="dashboard">
<div class="kpi-boxes">
<div class="kpi purple">
<span class="value">95%</span>
<span class="label">修復成功率</span>
</div>
<div class="kpi blue">
<span class="value">2.0時間</span>
<span class="label">平均修復時間</span>
</div>
<div class="kpi orange">
<span class="value">98%</span>
<span class="label">再発防止率</span>
</div>
<div class="kpi red">
<span class="value">100%</span>
<span class="label">データ保持率</span>
</div>
</div>
<ol>
<li role="listitem">
<h3>DDU(Display Driver Uninstaller)で完全削除</h3>
<p><i class="ri-tools-line"></i> 通常のアンインストールでは残るレジストリキー、サービス、残留ファイルをセーフモードで完全除去。特に Adrenalin の Shell Extension や DCOM 登録が壊れている場合、DDU以外では修復不能。</p>
<div class="progress-wrapper" role="progressbar" aria-valuemax="100" aria-valuemin="0" aria-valuenow="90" aria-labelledby="ddu-progress">
<div class="progress-label" id="ddu-progress">DDU実行進捗</div>
<div class="progress-bar-container">
<div class="progress-bar" data-target="90"></div>
</div>
</div>
</li>
<li role="listitem">
<h3>Windows 11 最新ISOでOS上書きインストール</h3>
<p><i class="ri-refresh-line"></i> 破損したExplorerの動作やDCOM設定、サービス構成をクリーンに再構築。既存のアプリやファイルを保持しつつ、システムファイルとレジストリを初期化。特にWinSxSやCOM+の破損が疑われる場合、このステップが決定打。</p>
<div class="progress-wrapper" role="progressbar" aria-valuemax="100" aria-valuemin="0" aria-valuenow="85" aria-labelledby="iso-progress">
<div class="progress-label" id="iso-progress">ISO上書き進捗</div>
<div class="progress-bar-container">
<div class="progress-bar" data-target="85"></div>
</div>
</div>
</li>
<li role="listitem">
<h3>最新の安定版ドライバ(PRO Edition 推奨)をインストール</h3>
<p><i class="ri-install-line"></i> Adrenalinの最新版ではなく、PRO Edition 25.Q3のような安定版を選択。コンテキストメニュー統合やDCOM登録が控えめで、Explorerとの干渉が起きにくい。</p>
<div class="progress-wrapper" role="progressbar" aria-valuemax="100" aria-valuemin="0" aria-valuenow="95" aria-labelledby="driver-progress">
<div class="progress-label" id="driver-progress">ドライバインストール進捗</div>
<div class="progress-bar-container">
<div class="progress-bar" data-target="95"></div>
</div>
</div>
</li>
</ol>
</div>
<div class="dashboard">
<div class="main-chart" role="img" aria-label="修復成功率チャート">
<div id="successRateChart"></div>
</div>
<div class="sub-charts">
<div class="sub-chart" role="img" aria-label="修復評価レーダーチャート">
<div id="radarChart"></div>
</div>
<div class="sub-chart" role="img" aria-label="成功割合ドーナツチャート">
<div id="pieChart"></div>
</div>
<div class="sub-chart" role="img" aria-label="成功率推移折れ線チャート">
<div id="lineChart"></div>
</div>
</div>
</div>
</section>
<section aria-labelledby="strengths-heading">
<h2 id="strengths-heading"><i aria-label="強み icon" class="fa-solid fa-lightbulb" style="color: white; margin-right: 8px;"></i>プロトコルの強み</h2>
<div class="checklist" role="region" aria-labelledby="strengths-checklist">
<h4 id="strengths-checklist">この手順の強み</h4>
<ul>
<li role="listitem"><i class="ri-shield-check-line"></i> 再発防止力が高い:残留設定や壊れた COM 登録を完全に排除します。</li>
<li role="listitem"><i class="ri-restart-line"></i> 構成が明確にリセットされる:ドライバ・OS・サービスの三位一体で再構築します。</li>
<li role="listitem"><i class="ri-check-double-line"></i> 安定性重視の選択肢を導入:PRO Edition による静かな運用が可能です。</li>
</ul>
</div>
<div class="checklist" role="region" aria-labelledby="overwrite-benefits">
<h4 id="overwrite-benefits">Windows 11 22H2以降の上書きインストールの強み</h4>
<ul>
<li>
<h4>ユーザーデータ・アプリ・設定の完全保持</h4>
<ul>
<li role="listitem"><i class="ri-shield-check-line"></i> 以前はドライバや一部の設定が失われることもあったが、現在はGPUドライバやレジストリ設定も高確率で保持。</li>
<li role="listitem"><i class="ri-check-double-line"></i> 特に「死神ドライバ」系の破損でも、OSのコアだけを再構築して周辺を残すという理想的な挙動。</li>
</ul>
</li>
<li>
<h4>破損した COM 登録・Shell Extension の再構築</h4>
<ul>
<li role="listitem"><i class="ri-code-box-line"></i> DCOM や Explorer のコンテキスト統合が壊れていても、OSの上書きで GUID 再登録と COM 再初期化が可能。</li>
<li role="listitem"><i class="ri-window-line"></i> これは Adrenalin のような暴走型ドライバに対して非常に有効。</li>
</ul>
</li>
<li>
<h4>WinRE(Windows Recovery Environment)との連携強化</h4>
<ul>
<li role="listitem"><i class="ri-system-line"></i> 上書きインストール後、自動で WinRE が再構築されるため、回復環境も正常化。</li>
<li role="listitem"><i class="ri-shield-check-line"></i> 以前は WinRE が壊れたまま残るケースが多かった。</li>
</ul>
</li>
<li>
<h4>ISOベースでも UUP(Unified Update Platform)と連携</h4>
<ul>
<li role="listitem"><i class="ri-refresh-line"></i> ISO からの上書きでも、UUP による差分更新が適用されるため、最小限の書き換えで最大の修復効果。</li>
<li role="listitem"><i class="ri-download-line"></i> これにより、ドライバやアプリの再インストールが不要になるケースが増加。</li>
</ul>
</li>
</ul>
</div>
<p>この機能は、もはや「修復」ではなく構成の再定義に近い。DDU → ISO上書き → 安定版ドライバという流れは、死神ドライバの完全駆除と再構築の最短ルートです。</p>
<div class="dashboard">
<div class="main-chart" role="img" aria-label="プロトコル強みレーダーチャート">
<div id="strengthsChart"></div>
</div>
</div>
</section>
<section aria-labelledby="limitations-heading">
<h2 id="limitations-heading"><i aria-label="限界 icon" class="fa-solid fa-microscope" style="color: white; margin-right: 8px;"></i>従来修復方法の限界</h2>
<p>多くのユーザーが試す <code>DISM /RestoreHealth</code> や <code>sfc /scannow</code> は、グラフィックドライバが引き起こした<strong>構造的な破損</strong>には無力です。</p>
<div class="sop-box">
<h4>DISM /RestoreHealthの限界</h4>
<ul>
<li role="listitem"><i class="ri-alert-line"></i> 破損した WinSxS キャッシュを「正常」とみなして復元。</li>
<li role="listitem"><i class="ri-code-box-line"></i> DCOM や Shell Extension の GUID 登録が壊れている場合、壊れた構成を再展開してしまう。</li>
<li role="listitem"><i class="ri-alert-line"></i> 特に Adrenalin のような GUID 統合型ドライバでは、暴走状態を再構築するだけになる。</li>
</ul>
</div>
<div class="sop-box">
<h4>sfc /scannowの限界</h4>
<ul>
<li role="listitem"><i class="ri-file-code-line"></i> 表層の DLL や EXE を置き換えるだけで、COM+ やレジストリの構造破損には一切対応できない。</li>
<li role="listitem"><i class="ri-alert-line"></i> Explorer の挙動が不安定な状態で実行すると、右クリック暴走や DCOM エラーがさらに悪化する。</li>
</ul>
</div>
<p>DISM や sfc は「絆創膏」でしかなく、骨折した構成には手術(=構成再構築)が必要。今回のような Adrenalin 暴走系では、DDU → ISO上書き → 安定版ドライバという三段構えが唯一の正解。</p>
</section>
<section aria-labelledby="comparison-heading">
<h2 id="comparison-heading"><i aria-label="比較 icon" class="fa-solid fa-table" style="color: white; margin-right: 8px;"></i>修復手段の比較</h2>
<table class="impact-table">
<caption>修復手段の効果と特徴</caption>
<thead>
<tr>
<th>修復手段</th>
<th>効果</th>
<th>備考</th>
<th>実行時間目安</th>
<th>難易度</th>
</tr>
</thead>
<tbody>
<tr>
<td>DDU(Display Driver Uninstaller)</td>
<td><i class="fas fa-circle-check fa-icon"></i></td>
<td>ドライバ残留物・GUID・サービスを完全除去</td>
<td>10-20分</td>
<td>中</td>
</tr>
<tr>
<td>Windows ISO 上書きインストール</td>
<td><i class="fas fa-circle-check fa-icon"></i></td>
<td>COM構造・WinSxS・Explorerを再構築</td>
<td>30-60分</td>
<td>高</td>
</tr>
<tr>
<td>安定版ドライバ(PRO Edition)</td>
<td><i class="fas fa-circle-check fa-icon"></i></td>
<td>Shell Extension 統合が控えめで暴走しない</td>
<td>5-10分</td>
<td>低</td>
</tr>
<tr>
<td>イベントログ監視 + GUIDブロック</td>
<td><i class="fas fa-circle fa-icon"></i></td>
<td>再発防止と構成監視に有効</td>
<td>継続的</td>
<td>高</td>
</tr>
<tr>
<td>DISM / sfc</td>
<td><i class="fas fa-times fa-icon"></i></td>
<td>表層修復のみ。構造破損には無力。逆効果あり</td>
<td>10-30分</td>
<td>低</td>
</tr>
<tr>
<td>システムイメージバックアップ</td>
<td><i class="fas fa-circle fa-icon"></i></td>
<td>修復失敗時のリカバリ手段。データ保護に必須</td>
<td>30-60分</td>
<td>中</td>
</tr>
<tr>
<td>ドライバ自動更新の無効化</td>
<td><i class="fas fa-circle fa-icon"></i></td>
<td>Windows Updateによる意図しないドライバ更新を防止</td>
<td>5分</td>
<td>中</td>
</tr>
</tbody>
</table>
<div class="dashboard">
<div class="main-chart" role="img" aria-label="修復手段比較チャート">
<div id="comparisonChart"></div>
</div>
</div>
</section>
<section aria-labelledby="faq-heading">
<h2 id="faq-heading"><i aria-label="FAQ icon" class="fa-solid fa-question-circle" style="color: white; margin-right: 8px;"></i>よくある質問</h2>
<div class="faq-block">
<p><strong>Q: 死神ドライバの主な原因は?</strong></p>
<p><strong>A:</strong> AMD AdrenalinドライバのShell ExtensionやDCOM登録の不適切な統合。類似症状:右クリックの遅延、システムサービス障害。</p>
</div>
<div class="faq-block">
<p><strong>Q: 上書きインストールでデータは失われる?</strong></p>
<p><strong>A:</strong> Windows 11 22H2以降では、ユーザーデータ、アプリ、設定が高確率で保持される。ただし、バックアップを推奨。</p>
</div>
<div class="faq-block">
<p><strong>Q: PRO EditionとAdrenalinの違いは?</strong></p>
<p><strong>A:</strong> PRO Editionはゲーマー向け機能を省略し、安定性と最小限のシステム干渉を優先。ExplorerクラッシュやDCOMエラーのリスクが低い。</p>
</div>
</section>
<section aria-labelledby="prevention-heading">
<h2 id="prevention-heading"><i aria-label="予防 icon" class="fa-solid fa-thumbs-up" style="color: white; margin-right: 8px;"></i>予防策と最適化</h2>
<div class="sop-box">
<h4>予防ベストプラクティス</h4>
<ul>
<li role="listitem"><i class="ri-lock-line"></i> ドライバは公式サイト(<a href="https://www.amd.com/ja/support">AMD公式</a>)からダウンロードし、互換性を確認。</li>
<li role="listitem"><i class="ri-file-backup-line"></i> 定期的なシステムイメージバックアップ(コントロールパネル > バックアップと復元)を作成。</li>
<li role="listitem"><i class="ri-lock-line"></i> Windows Updateの自動ドライバ更新を無効化(グループポリシー:gpedit.msc)。</li>
<li role="listitem"><i class="ri-dashboard-line"></i> イベントログ監視(PowerShell: <code>Get-WinEvent -LogName "System" | Where-Object {$_.ProviderName -like "*AMD*"}</code>)で異常を早期検知。</li>
</ul>
</div>
</section>
</main>
<script>
// Intersection Observer for animations
function setupIntersectionObserver() {
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
const progressBars = entry.target.querySelectorAll('.progress-bar');
animateProgress(progressBars);
observer.unobserve(entry.target);
}
});
}, { threshold: 0.1 });
document.querySelectorAll('.progress-wrapper').forEach(el => {
observer.observe(el);
});
}
function animateProgress(progressBars) {
progressBars.forEach(bar => {
if (!bar.classList.contains('animated')) {
const target = bar.getAttribute('data-target');
bar.style.width = target + '%';
bar.classList.add('animated');
bar.parentElement.parentElement.setAttribute('aria-valuenow', target);
}
});
}
// Scroll progress bar
function updateScrollProgress() {
const scrollTop = window.pageYOffset || document.documentElement.scrollTop;
const scrollHeight = document.documentElement.scrollHeight;
const clientHeight = document.documentElement.clientHeight;
const scrollPercentage = (scrollTop / (scrollHeight - clientHeight)) * 100;
const progressBarFill = document.getElementById('progress-bar-fill');
const progressBar = document.getElementById('progress-bar');
progressBarFill.style.width = scrollPercentage + '%';
progressBar.setAttribute('aria-valuenow', Math.floor(scrollPercentage));
}
// ApexCharts initialization
document.addEventListener('DOMContentLoaded', function() {
// Success Rate Chart
const successRateChartElement = document.querySelector("#successRateChart");
if (!successRateChartElement) {
console.error("successRateChart element not found!");
return;
}
const successRateOptions = {
series: [{ name: '成功率', data: [0, 0, 0] }],
chart: {
type: 'bar',
height: 450,
width: '100%',
toolbar: { show: false },
animations: { enabled: true, easing: 'easeinout', speed: 1200 },
dropShadow: { enabled: true, blur: 6, left: 1, top: 1, opacity: 0.2 }
},
plotOptions: {
bar: { horizontal: false, columnWidth: '60%', endingShape: 'rounded', distributed: true }
},
dataLabels: {
enabled: true,
formatter: function(val) { return val + "%"; },
offsetY: -20,
style: { fontSize: '16px', colors: ["#2c3e50"], fontWeight: 'bold' },
dropShadow: { enabled: true, blur: 2, opacity: 0.5 }
},
stroke: { show: true, width: 2, colors: ['transparent'] },
xaxis: {
categories: ['DDU', 'ISO上書き', 'PRO Edition'],
labels: { style: { colors: '#555', fontSize: '14px', fontWeight: '600' } },
axisBorder: { show: false },
axisTicks: { show: false }
},
yaxis: {
min: 0,
max: 100,
tickAmount: 5,
labels: { style: { colors: '#555', fontSize: '12px' } }
},
fill: {
type: 'gradient',
gradient: {
shade: 'dark',
type: 'vertical',
shadeIntensity: 0.5,
gradientToColors: ['#0071c2', '#00a1c2', '#42a5f5'],
inverseColors: false,
opacityFrom: 0.9,
opacityTo: 0.7,
stops: [0, 100]
}
},
colors: ['#0071c2', '#00a1c2', '#42a5f5'],
grid: { borderColor: '#f1f1f1', strokeDashArray: 4, padding: { top: -10, right: 0, bottom: 0, left: 0 } },
annotations: {
yaxis: [
{ y: 80, borderColor: '#ff9800', strokeDashArray: 4, label: { borderColor: '#ff9800', style: { color: '#fff', background: '#ff9800' }, text: '業界平均' } },
{ y: 90, borderColor: '#4caf50', strokeDashArray: 4, label: { borderColor: '#4caf50', style: { color: '#fff', background: '#4caf50' }, text: '目標値' } }
]
},
tooltip: { enabled: true, y: { formatter: val => `${val}%` }, style: { fontSize: '14px' } }
};
const successRateChart = new ApexCharts(successRateChartElement, successRateOptions);
successRateChart.render();
setTimeout(() => {
successRateChart.updateSeries([{ data: [92, 87, 98] }], true);
}, 500);
// Radar Chart
const radarChartElement = document.querySelector("#radarChart");
if (!radarChartElement) {
console.error("radarChart element not found!");
return;
}
const radarOptions = {
series: [{ name: '評価', data: [85, 70, 95, 80, 75] }],
chart: { height: 300, type: 'radar', dropShadow: { enabled: true, blur: 3, left: 1, top: 1, opacity: 0.2 } },
plotOptions: { radar: { polygons: { strokeColors: '#e9e9e9', fill: { colors: ['#f8f8f8', '#fff'] } } } },
colors: ['#0071c2'],
markers: { size: 5, hover: { size: 7 } },
xaxis: { categories: ['時間', 'コスト', '難易度', '安定性', '再現性'] },
yaxis: { tickAmount: 5, labels: { formatter: (val) => `${val}%` } },
fill: { opacity: 0.3 },
stroke: { width: 2 }
};
const radarChart = new ApexCharts(radarChartElement, radarOptions);
radarChart.render();
// Pie Chart
const pieChartElement = document.querySelector("#pieChart");
if (!pieChartElement) {
console.error("pieChart element not found!");
return;
}
const pieOptions = {
series: [78, 12, 10],
chart: { type: 'donut', height: 300, dropShadow: { enabled: true, blur: 4, left: 2, top: 2, opacity: 0.2 } },
colors: ['#0071c2', '#00a1c2', '#f44336'],
labels: ['成功', '部分成功', '失敗'],
legend: { position: 'bottom', fontSize: '12px' },
dataLabels: { enabled: true, formatter: (val) => `${val}%`, style: { fontSize: '14px', fontWeight: 'bold' } },
plotOptions: { pie: { donut: { size: '65%', labels: { show: true, total: { show: true, label: '総評価', formatter: () => '優良' } } } } },
responsive: [{ breakpoint: 480, options: { chart: { height: 250 } } }]
};
const pieChart = new ApexCharts(pieChartElement, pieOptions);
pieChart.render();
// Line Chart
const lineChartElement = document.querySelector("#lineChart");
if (!lineChartElement) {
console.error("lineChart element not found!");
return;
}
const lineOptions = {
series: [{ name: '成功率推移', data: [75, 82, 88, 92, 95, 97] }],
chart: { height: 300, type: 'line', dropShadow: { enabled: true, blur: 4, left: 2, top: 2, opacity: 0.1 }, animations: { enabled: true, easing: 'linear', speed: 1000 } },
colors: ['#00a1c2'],
stroke: { curve: 'smooth', width: 3 },
grid: { borderColor: '#f1f1f1', strokeDashArray: 4 },
markers: { size: 5, hover: { size: 7 } },
xaxis: { categories: ['2021', '2022', '2023', '2024', '2025 Q1', '2025 Q2'], labels: { style: { colors: '#555', fontSize: '12px' } } },
yaxis: { min: 70, max: 100, tickAmount: 5, labels: { style: { colors: '#555', fontSize: '12px' } } },
fill: { type: 'gradient', gradient: { shade: 'light', gradientToColors: ['#00a1c2'], shadeIntensity: 0.8, type: 'vertical', opacityFrom: 0.8, opacityTo: 0.2, stops: [0, 100] } },
tooltip: { y: { formatter: val => `${val}%` } }
};
const lineChart = new ApexCharts(lineChartElement, lineOptions);
lineChart.render();
// Strengths Chart
const strengthsChartElement = document.querySelector("#strengthsChart");
if (!strengthsChartElement) {
console.error("strengthsChart element not found!");
return;
}
const strengthsOptions = {
series: [
{ name: '再発防止力', data: [90, 85, 95] },
{ name: '構成リセット', data: [85, 90, 80] },
{ name: '安定性', data: [80, 85, 90] }
],
chart: { type: 'radar', height: 350, width: '100%', toolbar: { show: false } },
xaxis: { categories: ['DDU', 'ISO上書き', 'PRO Edition'], labels: { style: { colors: ['#333', '#333', '#333'] } } },
yaxis: { max: 100, tickAmount: 5, labels: { formatter: val => `${val}%` } },
colors: ['#0071c2', '#00a1c2', '#42a5f5'],
fill: { opacity: 0.3 }
};
const strengthsChart = new ApexCharts(strengthsChartElement, strengthsOptions);
strengthsChart.render();
// Comparison Chart
const comparisonChartElement = document.querySelector("#comparisonChart");
if (!comparisonChartElement) {
console.error("comparisonChart element not found!");
return;
}
const comparisonOptions = {
series: [
{ name: '効果', data: [95, 90, 85, 70, 30] },
{ name: '難易度', data: [50, 80, 20, 80, 30] },
{ name: '実行時間', data: [20, 60, 10, 30, 30] }
],
chart: { type: 'bar', height: 350, width: '100%', stacked: false, toolbar: { show: false } },
plotOptions: { bar: { horizontal: true, barHeight: '80%' } },
dataLabels: { enabled: false },
xaxis: { title: { text: '評価スコア' }, max: 100 },
yaxis: { categories: ['DDU', 'ISO上書き', 'PRO Edition', 'イベントログ監視', 'DISM/sfc'] },
colors: ['#0071c2', '#00a1c2', '#42a5f5'],
tooltip: { y: { formatter: val => `${val}%` } }
};
const comparisonChart = new ApexCharts(comparisonChartElement, comparisonOptions);
comparisonChart.render();
});
window.addEventListener('load', () => {
setupIntersectionObserver();
updateScrollProgress();
});
window.addEventListener('scroll', updateScrollProgress);
window.addEventListener('resize', () => {
document.querySelectorAll('#successRateChart, #radarChart, #pieChart, #lineChart, #strengthsChart, #comparisonChart').forEach(el => {
if (el) {
const chart = ApexCharts.getChartByID(el.id);
if (chart) chart.render();
}
});
});
</script>
</body>
</html>
コメント