📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
| (同じ利用者による、間の10版が非表示) | |||
| 46行目: | 46行目: | ||
* パフォーマンスへの影響 | * パフォーマンスへの影響 | ||
*: 頻繁な情報取得はシステムに負荷をかける可能性がある。 | *: 頻繁な情報取得はシステムに負荷をかける可能性がある。 | ||
<br><br> | |||
== CPU == | |||
==== LibreHardwareMonitorライブラリ ==== | |||
===== LibreHardwareMonitorライブラリとは ===== | |||
LibreHardwareMonitorライブラリは、コンピュータのハードウェア情報を包括的に監視するためのオープンソースライブラリである。<br> | |||
元々は、OpenHardwareMonitorプロジェクトから派生しており、現在も活発に開発が続けられている。<br> | |||
<br> | |||
LibreHardwareMonitorライブラリの主な特徴は、システムの様々なコンポーネントから詳細な情報を取得できることである。<br> | |||
CPU、GPU、マザーボード、RAM、ストレージデバイス、ネットワークアダプタ等、幅広いハードウェアをサポートしている。<br> | |||
各コンポーネントについて、温度、クロック速度、使用率、電圧等の重要なパラメータを監視することができる。<br> | |||
<br> | |||
LibreHardwareMonitorライブラリの設計は非常に柔軟で、必要な情報のみを選択して取得することができる。<br> | |||
例えば、CPUの情報だけが必要な場合は、他のコンポーネントの監視を無効にすることにより、リソース使用を最適化できる。<br> | |||
<br> | |||
また、このライブラリは異なるハードウェアメーカーや型番に対応するため、抽象化レイヤーを使用している。<br> | |||
これにより、開発者は特定のハードウェアの詳細を気にすることなく、一貫したインターフェースを通じて情報を取得することができる。<br> | |||
<br> | |||
性能面では、LibreHardwareMonitorライブラリは一般的に効率的であるが、頻繁に更新を行う場合や全てのセンサを同時に監視する場合には、システムに若干の負荷がかかる可能性がある。<br> | |||
そのため、アプリケーションの要件に応じて、更新頻度や監視するコンポーネントを適切に選択することが重要である。<br> | |||
<br> | |||
LibreHardwareMonitorライブラリは、システムのハードウェア情報を詳細に把握するアプリケーションにとって、強力で信頼性の高いツールである。<br> | |||
システム監視、パフォーマンス最適化、ハードウェア診断等、幅広い用途に活用できる有用なライブラリといえる。<br> | |||
<br> | |||
<u>LibreHardwareMonitorライブラリは、[[その他 - ソフトウェアライセンス#MPL 2.0ライセンス|MPL 2.0ライセンス]]に準拠している。</u><br> | |||
<br> | |||
* LibreHardwareMonitorライブラリの公式Webサイト | |||
*: https://github.com/LibreHardwareMonitor/LibreHardwareMonitor | |||
<br> | |||
<u>※注意 1</u><br> | |||
<u>一部の機能では管理者権限が必要になる場合がある。</u><br> | |||
<u>特に、センサからの詳細な読み取りや一部のハードウェア固有の情報を取得する場合が当てはまる。</u><br> | |||
<br> | |||
<u>※注意 2</u><br> | |||
<u>LibreHardwareMonitorライブラリはWindowsプラットフォームで最も広範なサポートを提供している。</u><br> | |||
<u>Linux上での使用は可能であるが、一部の機能が制限される、あるいは、追加の設定が必要な場合がある。</u><br> | |||
<br> | |||
===== 取得可能な情報 ===== | |||
* CPU | |||
*: 温度 | |||
*: 使用率 | |||
*: クロック速度 | |||
*: 電力消費 | |||
* マザーボード | |||
*: 各種センサの温度 | |||
*: ファン速度 | |||
* RAM | |||
*: 使用量 | |||
*: 空き容量 | |||
* GPU | |||
*: 温度 | |||
*: 使用率 | |||
*: メモリ使用量 | |||
*: ファン速度 | |||
* ストレージデバイス | |||
*: 温度 | |||
*: 使用量 | |||
*: 読み書き速度 | |||
* ネットワークアダプタ | |||
*: データ送受信量 | |||
* 電源ユニット (対応している場合) | |||
*: 電圧 | |||
*: 電流 | |||
*: 電力消費 | |||
<br> | |||
ただし、上記の情報は、システムやハードウェアの構成により利用可能な項目が異なる場合がある。<br> | |||
<br> | |||
===== LibreHardwareMonitorライブラリのインストール ===== | |||
RiderまたはVisual StudioからNuGetを使用して、LibreHardwareMonitorライブラリをインストールする。<br> | |||
* Riderの場合 | |||
*# プロジェクトを開く。 | |||
*# [ツール]メインメニュー - [Nuget] - [ソリューション の Nuget パッケージを管理] (または、[<プロジェクト名> の Nuget パッケージを管理])を選択する。 | |||
*# メイン画面下部にある[パッケージ]タブから <u>LibreHardwareMonitor</u> と入力して検索する。 | |||
*# メイン画面下部の右にある[+]ボタンを押下して、LibreHardwareMonitorライブラリをインストールする。 | |||
*: <br> | |||
* Visual Studioの場合 | |||
*# プロジェクトを開く。 | |||
*# NuGetパッケージマネージャーを開く。 | |||
*#* [ツール]メインメニュー - [NuGetパッケージマネージャー]を選択して、[ソリューションのNuGetパッケージの管理]を選択する。 | |||
*#* または、ソリューションエクスプローラーでプロジェクトを右クリックして、コンテキストメニューから[NuGetパッケージの管理]を選択する。 | |||
*# LibreHardwareMonitorライブラリを検索する。 | |||
*#: NuGetパッケージマネージャーの検索ボックスに <u>LibreHardwareMonitor</u> と入力して検索する。 | |||
*# LibreHardwareMonitorライブラリのインストール | |||
*#: 検索結果からTomlynLibreHardwareMonitorライブラリを選択して、[インストール]ボタンを押下する。 | |||
*# インストールの確認ダイアログが表示されるので、[OK]ボタンを押下してインストールを完了する。 | |||
*# 参照の確認 | |||
*#: インストールが完了した後、プロジェクトの参照にLibreHardwareMonitorライブラリが追加されていることを確認する。 | |||
*: <br> | |||
* パッケージマネージャーコンソールからインストールする場合 | |||
*# プロジェクトを開く。 | |||
*# [表示]メインメニュー - [その他のウィンドウ] - [パッケージマネージャーコンソール]を選択して、パッケージマネージャーコンソールを開く。 | |||
*# パッケージマネージャーコンソールから、Tomlynライブラリをダウンロードしてインストールする。 | |||
*#: <code>Install-Package LibreHardwareMonitorLib</code> | |||
*# ソリューションエクスプローラーのプロジェクトの参照において、LibreHardwareMonitorライブラリが追加されていることを確認する。 | |||
*: <br> | |||
* <code>dotnet</code>コマンドを使用する場合 | |||
*# ターミナルを開く。 | |||
*# プロジェクトのルートディレクトリに移動する。 | |||
*# LibreHardwareMonitorライブラリをインストールする。 | |||
*#: 最新の安定版をインストールする場合 | |||
*#: <code>dotnet add package LibreHardwareMonitorLib</code> | |||
*#: <br> | |||
*#: バージョンを指定してインストールする場合 | |||
*#: <code>dotnet add package LibreHardwareMonitorLib --version <バージョン></code> | |||
*#: <br> | |||
*: <u>※注意</u> | |||
*: <u>プロジェクトがGit等のバージョン管理システムを使用している場合、これらの変更がトラッキングされることを確認すること。</u> | |||
*: <u>プロジェクトを再ビルドして、新しく追加されたパッケージが正しく統合されていることを確認することを推奨する。</u> | |||
<br> | |||
プロジェクトにおいて、LibreHardwareMonitorライブラリを使用する場合は、ソースコードファイルの先頭にusingステートメントを追加する。<br> | |||
これにより、名前空間を使用することで、LibreHardwareMonitorライブラリに関する主要な機能にアクセスすることができる。<br> | |||
<syntaxhighlight lang="c#"> | |||
using LibreHardwareMonitor.Hardware; | |||
</syntaxhighlight> | |||
<br> | |||
===== 使用例 ===== | |||
以下の例では、CPU情報を取得している。<br> | |||
また、LibreHardwareMonitorライブラリは、CPU以外の他のデバイス情報も提供しているため、より包括的な情報を取得することができる。<br> | |||
<br> | |||
<u>※注意 1</u><br> | |||
<u>一部の情報 (特に温度や詳細な使用率) を取得する場合は、管理者権限が必要な場合がある。</u><br> | |||
<br> | |||
<u>※注意 2</u><br> | |||
<u>LibreHardwareMonitorライブラリは常に最新のハードウェアに対応しているわけではない。</u><br> | |||
<u>特に新しいCPUモデルの場合、一部の情報が正確でない可能性がある。</u><br> | |||
<br> | |||
<u>※注意 3</u><br> | |||
<u>LibreHardwareMonitorライブラリはクロスプラットフォームをサポートしているが、一部の機能はWindowsでのみ動作する可能性がある。</u><br> | |||
<br> | |||
<syntaxhighlight lang="c#"> | |||
using System; | |||
using LibreHardwareMonitor.Hardware; | |||
class Program | |||
{ | |||
static void Main() | |||
{ | |||
var computer = new Computer | |||
{ | |||
IsCpuEnabled = true, | |||
}; | |||
computer.Open(); | |||
foreach (var hardware in computer.Hardware) | |||
{ | |||
if (hardware.HardwareType == HardwareType.Cpu) | |||
{ | |||
Console.WriteLine($"CPU: {hardware.Name}"); | |||
hardware.Update(); | |||
foreach (var sensor in hardware.Sensors) | |||
{ | |||
switch (sensor.SensorType) | |||
{ | |||
case SensorType.Clock: | |||
Console.WriteLine($"Clock: {sensor.Value} MHz"); | |||
break; | |||
case SensorType.Temperature: | |||
Console.WriteLine($"Temperature: {sensor.Value} °C"); | |||
break; | |||
case SensorType.Load: | |||
Console.WriteLine($"Load: {sensor.Value} %"); | |||
break; | |||
} | |||
} | |||
} | |||
} | |||
computer.Close(); | |||
} | |||
} | |||
</syntaxhighlight> | |||
<br> | |||
==== Hardware.Infoライブラリ ==== | |||
===== Hardware.Infoライブラリとは ===== | |||
Hardware.Infoライブラリは、C#で開発されたオープンソースのライブラリであり、コンピュータのハードウェア情報を収集するために設計されている。<br> | |||
このライブラリを使用することにより、開発者はシステムの詳細な情報を簡単に取得することができる。<br> | |||
<br> | |||
主な特徴として、CPU、マザーボード、メモリ、ストレージデバイス、ネットワークアダプタ、ビデオカード等、様々なハードウェアコンポーネントの情報を提供する。<br> | |||
また、OSやBIOSの詳細も取得可能である。<br> | |||
<br> | |||
Hardware.Infoライブラリのメリットの1つはその使いやすさであり、シンプルなAPIを通じて、複雑なハードウェア情報へのアクセスが可能になる。<br> | |||
これにより、システム診断ツール、ハードウェアモニタリングアプリケーション、システム要件チェッカー等の開発が容易になる。<br> | |||
<br> | |||
このライブラリは、Windows、Linux、MacOS等の複数のプラットフォームをサポートしている。<br> | |||
クロスプラットフォーム対応により、開発者は異なるOS上で一貫したハードウェア情報収集が可能になる。<br> | |||
<br> | |||
パフォーマンスの面では、Hardware.Infoライブラリは効率的な設計がなされており、システムへの負荷を最小限に抑えつつ迅速にデータを取得する。<br> | |||
また、非同期操作もサポートしているため、アプリケーションの応答性を維持しながら情報収集を行うことができる。<br> | |||
<br> | |||
セキュリティとプライバシーに配慮して設計されており、センシティブな情報へのアクセスは制限されている。<br> | |||
ライブラリは必要最小限の権限で動作して、ユーザデータの保護に努めている。<br> | |||
<br> | |||
拡張性も考慮されており、新しいハードウェアコンポーネントや技術に対応するためのアップデートが定期的に行われている。<br> | |||
開発者コミュニティからの貢献も活発で、継続的な改善が行われている。<br> | |||
<br> | |||
<u>Hardware.Infoライブラリのライセンスは、MITライセンスに準拠している。</u><br> | |||
<br> | |||
* Hardware.Infoライブラリの公式Webサイト | |||
*: https://github.com/Jinjinov/Hardware.Info | |||
<br> | |||
===== 取得可能な情報 ===== | |||
* BIOS | |||
* CPU および SoC | |||
* RAM | |||
* ストレージドライブ | |||
* ネットワークアダプタ | |||
* サウンドカード | |||
* GPU | |||
* バッテリー | |||
* マザーボード | |||
* マウス | |||
* キーボード | |||
* モニタ | |||
* プリンタ | |||
<br> | |||
Hardware.Infoライブラリは、WindowsではWMI、Linuxでは/dev、/proc、/sys、MacOSではsysctl、system_profilerを使用する。<br> | |||
<br> | |||
===== Hardware.Infoライブラリのインストール ===== | |||
RiderまたはVisual StudioからNuGetを使用して、Hardware.Infoライブラリをインストールする。<br> | |||
* Riderの場合 | |||
*# プロジェクトを開く。 | |||
*# [ツール]メインメニュー - [Nuget] - [ソリューション の Nuget パッケージを管理] (または、[<プロジェクト名> の Nuget パッケージを管理])を選択する。 | |||
*# メイン画面下部にある[パッケージ]タブから <u>Hardware.Info</u> と入力して検索する。 | |||
*# メイン画面下部の右にある[+]ボタンを押下して、Hardware.Infoライブラリをインストールする。 | |||
*: <br> | |||
* Visual Studioの場合 | |||
*# プロジェクトを開く。 | |||
*# NuGetパッケージマネージャーを開く。 | |||
*#* [ツール]メインメニュー - [NuGetパッケージマネージャー]を選択して、[ソリューションのNuGetパッケージの管理]を選択する。 | |||
*#* または、ソリューションエクスプローラーでプロジェクトを右クリックして、コンテキストメニューから[NuGetパッケージの管理]を選択する。 | |||
*# Hardware.Infoライブラリを検索する。 | |||
*#: NuGetパッケージマネージャーの検索ボックスに <u>Hardware.Info</u> と入力して検索する。 | |||
*# Hardware.Infoライブラリのインストール | |||
*#: 検索結果からHardware.Infoライブラリを選択して、[インストール]ボタンを押下する。 | |||
*# インストールの確認ダイアログが表示されるので、[OK]ボタンを押下してインストールを完了する。 | |||
*# 参照の確認 | |||
*#: インストールが完了した後、プロジェクトの参照にHardware.Infoライブラリが追加されていることを確認する。 | |||
*: <br> | |||
* パッケージマネージャーコンソールからインストールする場合 | |||
*# プロジェクトを開く。 | |||
*# [表示]メインメニュー - [その他のウィンドウ] - [パッケージマネージャーコンソール]を選択して、パッケージマネージャーコンソールを開く。 | |||
*# パッケージマネージャーコンソールから、Hardware.Infoライブラリをダウンロードしてインストールする。 | |||
*#: <code>Install-Package Hardware.Info</code> | |||
*# ソリューションエクスプローラーのプロジェクトの参照において、Hardware.Infoライブラリが追加されていることを確認する。 | |||
*: <br> | |||
* <code>dotnet</code>コマンドを使用する場合 | |||
*# ターミナルを開く。 | |||
*# プロジェクトのルートディレクトリに移動する。 | |||
*# Hardware.Infoライブラリをインストールする。 | |||
*#: 最新の安定版をインストールする場合 | |||
*#: <code>dotnet add package Hardware.Info</code> | |||
*#: <br> | |||
*#: バージョンを指定してインストールする場合 | |||
*#: <code>dotnet add package Hardware.Info --version <バージョン></code> | |||
*#: <br> | |||
*: <u>※注意</u> | |||
*: <u>プロジェクトがGit等のバージョン管理システムを使用している場合、これらの変更がトラッキングされることを確認すること。</u> | |||
*: <u>プロジェクトを再ビルドして、新しく追加されたパッケージが正しく統合されていることを確認することを推奨する。</u> | |||
<br> | |||
プロジェクトにおいて、Hardware.Infoライブラリを使用する場合は、ソースコードファイルの先頭にusingステートメントを追加する。<br> | |||
これにより、名前空間を使用することで、Hardware.Infoライブラリに関する主要な機能にアクセスすることができる。<br> | |||
<syntaxhighlight lang="c#"> | |||
using Hardware.Info; | |||
</syntaxhighlight> | |||
<br> | |||
===== 使用例 ===== | |||
以下の例では、CPU情報を取得している。<br> | |||
<br> | |||
HardwareInfoクラスのtimeoutInWMIには、各クエリを実行するManagementObjectSearcherのEnumerationOptionsのTimeoutプロパティを設定する。<br> | |||
デフォルト値は、EnumerationOptions.InfiniteTimeoutである。<br> | |||
各ハードウェアコンポーネントには1つ以上のクエリが存在するため、RefreshAllメソッドでは16を超えるクエリが実行される。<br> | |||
<br> | |||
クエリがタイムアウトに達すると、System.Management.ManagementException例外がスローされる。<br> | |||
ここで、例外クラスManagementExceptionのErrorCodeプロパティには、System.Management.ManagementStatus.Timedoutになる。<br> | |||
<br> | |||
<u>timeoutInWMIを設定する場合は、try-catchブロックを使用する必要がある。</u><br> | |||
<br> | |||
<syntaxhighlight lang="c#"> | |||
using System; | |||
using Hardware.Info; | |||
class Program | |||
{ | |||
static void Main() | |||
{ | |||
IHardwareInfo hardwareInfo; | |||
try | |||
{ | |||
hardwareInfo = new HardwareInfo(timeoutInWMI: TimeSpan.FromMilliseconds(100)); | |||
hardwareInfo.RefreshAll(); | |||
} | |||
catch (ManagementException ex) when (ex.ErrorCode == ManagementStatus.Timedout) | |||
{ | |||
Console.WriteLine(ex); | |||
} | |||
catch (Exception ex) | |||
{ | |||
Console.WriteLine(ex); | |||
} | |||
// CPUの情報のみを取得する場合 | |||
//IHardwareInfo hardwareInfo = new HardwareInfo(); | |||
//hardwareInfo.RefreshCPUList(); | |||
foreach (var cpu in hardwareInfo.CpuList) | |||
{ | |||
Console.WriteLine($"CPU Name: {cpu.Name}"); | |||
Console.WriteLine($"Manufacturer: {cpu.Manufacturer}"); | |||
Console.WriteLine($"Caption: {cpu.Caption}"); | |||
Console.WriteLine($"Description: {cpu.Description}"); | |||
Console.WriteLine($"Number of Cores: {cpu.NumberOfCores}"); | |||
Console.WriteLine($"Number of Logical Processors: {cpu.NumberOfLogicalProcessors}"); | |||
Console.WriteLine($"L2 Cache Size: {cpu.L2CacheSize}"); | |||
Console.WriteLine($"L3 Cache Size: {cpu.L3CacheSize}"); | |||
Console.WriteLine($"Socket Designation: {cpu.SocketDesignation}"); | |||
Console.WriteLine($"Max Clock Speed: {cpu.MaxClockSpeed}"); | |||
} | |||
} | |||
} | |||
</syntaxhighlight> | |||
<br><br> | <br><br> | ||