2025.01.31
STAFF BLOG
スタッフブログ
TECHNICAL
テクログ

なぜこの座学を行ったか
弊社ではキャリアの背景として業務による開発経験があるかの制限はありません(たしか)。
業務のアプリケーションを実装することは出来ても、プロセスの存在を認識する機会は無いのでは?と思い、今回の座学を行いました。
以下に続く文章はその座学の資料をブログ用に改変したものです。
この座学の狙い
プロセスの存在を知ることで↓↓ここらへんの効果がでることが狙いです
- コンピュータがプログラムを実行するときの解像度が深まる
- 深めた結果何か良いことが起きれば嬉しいです
- 業務で扱うアプリのメモリ使用量やCPU使用率などの感覚を持つことで適切なマシンスペックがある程度分かること
- PCが重いときのストレスを軽減できる(かも)
「プロセス」とは
プログラムが実際にメモリ上で稼働しているものを「プロセス」といいます。
どのサイトでも大体このような説明です。↓↓ こんな感じです。
「プロセス」とは、簡単に言えば、動作中のプログラムのことです。それに対して「プログラム」は、ファイルのような形態で存在しているデータのことも含む言葉です。
ふつうのLinuxプログラミング 第2版 https://www.sbcr.jp/product/4797386479/
一方,実行中のプログラムがプロセスである.
システムプログラム(第4回)https://www.coins.tsukuba.ac.jp/~syspro/2023/2023-06-14/index.html
プロセスとは、Macで実行しているプログラムのことです。プロセスには、アプリ、macOSが使用するシステムアプリ、または不可視のバックグラウンドプロセスがあります。
Apple https://support.apple.com/ja-jp/guide/activity-monitor/actmntr1001/mac
データの容量の単位
続く説明でデータ容量の単位が出てくるのでサクッと紹介します。
コンピュータで扱われるデータの容量の単位に{bit(ビット)、Byte(バイト)}があります。基本的にByte(バイト)が使われます。省略して「B」と書かれたりします。
M(メガ)、G(ギガ)、T(テラ)とかありますが、これらは単位じゃなくて、接頭辞/接頭語 です。大きい桁数をそのまま書かずに1文字で表現するのに使われます。
「プロセス」が使うメモリ使用量を見るときに例えば 100MB 使っているとかが分かります。
「プロセス」の例
Google Chrome や VScode, Excel など、PC上で実行ファイルを実行すると「プロセス」になります。
「プロセス」を観察する
Windows のタスクマネージャーを起動すると「プロセス」を観察することが出来ます。「プロセス」ごとのCPU使用率やメモリ使用量などが観察できます。図1はタスクマネージャーの様子です。バックグラウンド プロセスの項目は会社固有のものもあるので隠しています。

Google meet 使ってる時の「プロセス」を観察する
画面共有+顔出し のときのChromeのプロセスの様子を図2に示します。
GPUが比較的多く使っているのがポイントです。
「動画の処理にちゃんと GPU が使われているんだなー」みたいな感覚を持てます。

逆に動画に関係無さそうなプロセスが GPU を多く使っていたら気になります。
PHPのプログラムを実行して観察します (その1)
メモリ使用量を観察します。
PHPのプログラムの概要
- UTF-8の10万文字の日本語を変数に代入する
- 10秒間処理を停止する
- おわり
変数に代入することでメモリ使用量が変わることを確認します。10秒間処理を停止することでタスクマネージャー上でプロセスがすぐに終わるのを回避します。
PHPのプログラムの詳細
<?php
/**
* UTF-8 という文字コードでは日本語は1文字3バイト~8バイトらしいです
* https://itpfdoc.hitachi.co.jp/manuals/3000/30003D0820/GD080450.HTM
*
* 3 Byte * 10 文字 = 30 Byte
*
* これを 100,000 回生成します。なので、3MB のメモリを使用するはずです。
*
* 30 Byte * 100,000 = 3,000,000 Byte = 3MB
*/
$message = str_repeat('あいうえおかきくけこ', 100000);
/**
* 事前に試したところ sleep(10) を実行するとメモリを 3.6MB 使用していました。
*/
sleep(10);
/**
* 想定では、$message と sleep(10) によって、メモリを 6.6MB 使用します。
*/
PHPプログラム実行中のプロセスの様子
先程のプログラムの実行中のタスクマネージャーの様子を図3に示します。

予想では 6.6MB 使用すると思っていましたが、実際には 6.5MB 使用していました。大体あってました。
文字数を1桁増やすと、変数 $message は 30MB ぐらいを確保するはずです。sleep 関数と合わせて、33.6MB ほど使われる予想です。このプログラムの実行中のタスクマネージャーの様子を図4に示します。

実際には 31.7MB でした。予想と違いますが、大体同じなので許容します。
PHPのプログラムを実行して観察します (その2)
PHPのプログラムの概要
指定した値までの素数を求めます
PHPのプログラムの詳細
プログラムは ChatGPT さんに協力してもらい、指定範囲までの素数を求めるプログラムを作ってもらいました。(「PHP で CPU をたくさん使用する簡単なスクリプトを教えて下さい」と聞きました。)
先程のメモリ消費するプログラムとの違いは以下の部分です。
- 変数への代入するサイズが少ない
- 計算回数が多い(余りを求める計算をたくさん行っています)
ChatGPTが出力したプログラムコードは割愛します。
PHPプログラム実行中のプロセスの様子
CPUを多く使用するプログラムを実行中のタスクマネージャーの様子を図5に示します。

ディスクを使うPHPプログラムはうまく作れなかったです
ファイルをたくさん作成するプログラムを実行したらウイルス対策ソフトのCPU使用率がグンと上がったのでやめました。もしかすると会社のサポートチームに通知行っているかもしれないです。
おわり
おわりです。今回の座学で PC がやたら重いときにタスクマネージャーを確認して解決の糸口になっていれば幸いです。
たとえば、私は以前に業務とは関係ない、何か PC メーカーの公式っぽいプロセスがメモリを多く使用していました。その時の様子を図6に示します。

会社のサポートチームに問い合わせてプロセスを終了させることで解決できました。