JavaScriptでPCの空き容量やメモリ量を取得できる?Chromeの制限と代替手法
2025-10-08「ブラウザ上でJavaScriptを使って、ユーザーのPCのHDD空き容量やメモリ容量を取得したい」──Web開発をしていると、こうした疑問を持つ方も多いでしょう。
しかし結論から言うと、ブラウザ環境(特にChrome)では、OS全体のストレージやメモリ情報を正確に取得することはできません。
その理由と、代わりに利用できる「近い情報の取得方法」について、わかりやすく解説します。
🔒 なぜブラウザではPCのリソース情報を取得できないのか?
Chromeを含む主要ブラウザでは、ユーザーのプライバシー保護とフィンガープリント対策のため、ハードウェア情報のアクセスが厳しく制限されています。
もし自由にディスク容量やメモリ総量を取得できてしまうと、ユーザーの端末特定や追跡が容易になり、セキュリティ上のリスクが発生します。そのため、JavaScriptからOSレベルのリソースに直接アクセスすることはできません。
💡 それでも「目安」として取得できる情報一覧
1️⃣ メモリの概算(deviceMemory)
const deviceRamGB = navigator.deviceMemory;
console.log(deviceRamGB); // 例: 4, 8 など
navigator.deviceMemory は搭載メモリのおおまかなGB単位のバケットを返します。正確な容量ではありませんが、端末の性能目安として利用できます。
2️⃣ JavaScriptヒープ使用量(performance.memory)
const heap = performance?.memory;
console.log(heap?.usedJSHeapSize, heap?.totalJSHeapSize);
これは「JavaScriptエンジン(V8)」が使用しているヒープメモリ量を取得します。Chromeなど一部ブラウザでのみ有効で、実際のRAM使用量とは異なります。
3️⃣ ストレージ使用量の見積り(navigator.storage.estimate)
const { usage, quota } = await navigator.storage.estimate();
console.log(`使用量: ${usage}, 割当量: ${quota}`);
OS全体の空き容量ではなく、「このサイト(オリジン)」に割り当てられたストレージ上限と使用量の概算が取得できます。
4️⃣ CPUスレッド数(hardwareConcurrency)
const cores = navigator.hardwareConcurrency;
console.log(cores); // 例: 4, 8 など
CPUの論理コア数を取得できます。パフォーマンス調整などに応用できます。
🚫 取得できない情報(制限事項)
- OS全体のディスク空き容量(例: Cドライブ残りGB)
- 正確な搭載メモリ容量(例: 15.9GBなど)
- 現在のシステムRAM使用率
これらはセキュリティ保護の観点から、ブラウザAPIでは完全に非公開となっています。
🧭 実用的な代替手法
もしアプリとしてPCリソースを管理したい場合は、ローカルアプリ(Electron・Node.js・Pythonなど)を利用すると、OSレベルの情報を安全に取得できます。
例:
// Node.jsでディスク空き容量を取得(例)
import checkDiskSpace from 'check-disk-space';
checkDiskSpace('C:/').then(info => console.log(info));
✅ まとめ
| 目的 | 利用可能なAPI | 正確度 |
|---|---|---|
| 概算メモリ容量 | navigator.deviceMemory | 低(バケット表示) |
| JSヒープ使用量 | performance.memory | 中(Chrome限定) |
| オリジンストレージ量 | navigator.storage.estimate | 中 |
| CPUスレッド数 | navigator.hardwareConcurrency | 中 |
| OS全体の空き容量 | 取得不可 | ✖ |
ブラウザJavaScriptは安全性を重視しているため、システムレベルの情報は取得できません。 しかし、上記APIを組み合わせれば「ユーザー環境の目安」を取得して、Webアプリの最適化や警告表示に活用できます。
👉 まとめ: JavaScriptだけではPCのHDD空き容量やメモリを完全に取得することはできませんが、APIを活用すれば「おおよその端末性能」を知ることは可能です。
.htaccessは階層で引き継がれる?Apacheの挙動を徹底解説
SEO対策に必須!検索上位を狙うsitemap.xmlの完全ガイド
Google Search Consoleの「代替ページ(適切なcanonicalタグあり)」とは?原因と解決法を徹底解説!
Microsoft純正の新しいコンソールエディタ「edit」が復活!| edit.exe インストール方法
Googleサイト確認のTXTレコードをnslookupで確認する方法【SEO対策】
Googleサーチコンソールに反映されるための最低限のSEO構造とは
【Anker Soundcore Liberty 4】イヤーピース紛失!代替品はAmazonで購入
JavaScriptでタイムゾーン変換!UTCとJST(日本時間)の変換方法
HTMLとJavaScriptモジュールでクラスを定義し、ボタンから呼び出す方法
JavaScriptでTensorFlow.jsを動的に読み込む方法|HTMLに直接書かずに機械学習を実行する
ffmpegでMOVファイルを逆再生する方法【音声付き対応】
JavaScriptでPCの空き容量やメモリ量を取得できる?Chromeの制限と代替手法
JavaScriptでPCの空き容量やメモリ量を取得できる?Chromeの制限と代替手法
PowerShellでNode.jsの最新バージョン一覧を確認する方法【Volta/Windows対応】
Next.jsでbasePathを/homepage2にしてS3へ静的デプロイする完全手順