「C Sharpの基礎 - デバイス情報」の版間の差分

ナビゲーションに移動 検索に移動
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>特に、センサからの詳細な読み取りや一部のハードウェア固有の情報を取得する場合が当てはまる。
* LibreHardwareMonitorライブラリはWindowsプラットフォームで最も広範なサポートを提供している。<br>Linux上での使用は可能であるが、一部の機能が制限される、あるいは、追加の設定が必要な場合がある。
<br>
性能面では、LibreHardwareMonitorライブラリは一般的に効率的であるが、頻繁に更新を行う場合や全てのセンサを同時に監視する場合には、システムに若干の負荷がかかる可能性がある。<br>
そのため、アプリケーションの要件に応じて、更新頻度や監視するコンポーネントを適切に選択することが重要である。<br>
<br>
LibreHardwareMonitorライブラリは、システムのハードウェア情報を詳細に把握するアプリケーションにとって、強力で信頼性の高いツールである。<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 LibreHardwareMonitor</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><br>
<br><br>


案内メニュー