JavaScriptで空き容量

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の論理コア数を取得できます。パフォーマンス調整などに応用できます。


🚫 取得できない情報(制限事項)

これらはセキュリティ保護の観点から、ブラウザ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の挙動を徹底解説

MBTI診断

SEO対策に必須!検索上位を狙うsitemap.xmlの完全ガイド

Google Search Consoleの「代替ページ(適切なcanonicalタグあり)」とは?原因と解決法を徹底解説!

Microsoft純正の新しいコンソールエディタ「edit」が復活!| edit.exe インストール方法

Googleサイト確認のTXTレコードをnslookupで確認する方法【SEO対策】

Googleサーチコンソールに反映されるための最低限のSEO構造とは

PHPで複数ファイルを順番に削除する方法

MBTI診断 | あなたの性格タイプを分析

PDFファイル結合|パスワード設定ツール

【Anker Soundcore Liberty 4】イヤーピース紛失!代替品はAmazonで購入

JavaScriptでタイムゾーン変換!UTCとJST(日本時間)の変換方法

pnpmとは?npmとの違いとインストール方法

CSS・JSの更新が反映されない時のキャッシュ対策方法3選

HTMLとJavaScriptモジュールでクラスを定義し、ボタンから呼び出す方法

JavaScriptでTensorFlow.jsを動的に読み込む方法|HTMLに直接書かずに機械学習を実行する

ChatGPT風リンクバッジをCSSで作成する

ffmpegでMOVファイルを逆再生する方法【音声付き対応】

macOSでドメイン名から情報を取得する方法【初心者向け】

JavaScriptでPCの空き容量やメモリ量を取得できる?Chromeの制限と代替手法

JavaScriptでPCの空き容量やメモリ量を取得できる?Chromeの制限と代替手法

PowerShellでNode.jsの最新バージョン一覧を確認する方法【Volta/Windows対応】

Next.jsでbasePathを/homepage2にしてS3へ静的デプロイする完全手順

Homebrewの「update」と「upgrade」の違い+バージョン確認方法|Macのパッケージ管理

.DS_StoreをGitでアップしない方法|macユーザー向け