Typescript+NodejsでCPU使用時間を取得する

やりたくなったので記録に残しつつ実施。

概要

Windows上でCPUの使用時間を取得するnodejsコードを作成する。

環境準備

プロジェクトを新規作成。

version確認

> node -v
v20.5.1
> npm -v
9.8.0

init および install。

> npm init -y ; npm install typescript ts-node @types/node -D

初期設定

tsconfigの生成。

> .\node_modules\.bin\tsc --init --rootDir src --outDir bin 

package.jsonのscriptsを以下の通り編集(変更)する。

scripts: {
    "start": "ts-node src/index.ts",
    "bulid": "tsc"
}

開発

osパッケージからCPU情報取得して使用時間に取得日時を付与して表示するコードを作成する。osパッケージの情報は下記参照。 nodejs.org

プログラム生成

ソースファイル配置。

> New-Item src\index.ts -Force 

index.tsを以下の通り編集する。

import os from 'os';

// CPU情報の使用時間にcore番号と取得日時を付与して表示/1sec
setInterval(()=>{
    const cpus: os.CpuInfo[] = os.cpus();
    const date = new Date();
    const data = cpus.map((cpu, index) => ({date: date.toISOString(), core: index, ...cpu.times}));
    console.log(data);
}, 1000);

デバッグ実行

下記コマンドでテスト実行する。

> npm start build

> electron@1.0.0 start
> ts-node src/index.ts build

[
  {
    date: '2023-08-27T15:27:01.558Z',
    core: 0,
    user: 19031,
    nice: 0,
    sys: 153921,
    idle: 3063328,
    irq: 9890
  },

  :

正常動作確認。

JSコード生成

下記コマンドでコンパイル&ビルド

> npm run build

binディレクトリ配下にindex.jsが出力されることを確認。

感想

作業時間2時間ほど。(ほぼosモジュールの機能確認と作るものの内容決めだったが… 端末のシステム情報取得して表示するというのは課題として作りやすくていいかもしれない。 コーディング時間は10分程度。

今後は取得した情報をグラフ化したりできればいいなぁと思います。

使用端末

使用している端末。ゲームもできるという事で購入したがちょいちょいフリーズする…