PC最適化ガイド: Pythonを使ったシステム分析と対策
1. はじめに
このガイドでは、Pythonスクリプトを使用してPCのパフォーマンスを分析し、最適化する方法を解説します。市販のPC最適化ソフトウェアを購入しなくても、無料で効果的にパフォーマンスを向上させることが可能です。
2. 分析ツール
2.1 必要な環境
- Python 3.x
- psutilライブラリ(
pip install psutil
でインストール)
2.2 分析スクリプト
以下のPythonスクリプトをpython-pc-analyzer.py
として保存します:
import os
import platform
import psutil
import shutil
import datetime
import time
def get_system_info():
"""基本的なシステム情報を収集"""
print("\n===== システム情報 =====")
print(f"OS: {platform.system()} {platform.release()}")
print(f"バージョン: {platform.version()}")
print(f"マシン: {platform.machine()}")
print(f"プロセッサ: {platform.processor()}")
# CPU情報
cpu_count = psutil.cpu_count(logical=False)
cpu_count_logical = psutil.cpu_count()
print(f"CPU物理コア数: {cpu_count}")
print(f"CPU論理コア数: {cpu_count_logical}")
# メモリ情報
mem = psutil.virtual_memory()
print(f"総メモリ: {mem.total / (1024**3):.2f} GB")
print(f"利用可能メモリ: {mem.available / (1024**3):.2f} GB")
print(f"メモリ使用率: {mem.percent}%")
def check_disk_usage():
"""ディスク使用状況の分析"""
print("\n===== ディスク使用状況 =====")
partitions = psutil.disk_partitions()
for partition in partitions:
if os.name == 'nt' and ('cdrom' in partition.opts or partition.fstype == ''):
# スキップ: CDROMドライブなど
continue
try:
usage = psutil.disk_usage(partition.mountpoint)
print(f"ドライブ: {partition.device}")
print(f" マウントポイント: {partition.mountpoint}")
print(f" ファイルシステム: {partition.fstype}")
print(f" 総容量: {usage.total / (1024**3):.2f} GB")
print(f" 使用量: {usage.used / (1024**3):.2f} GB")
print(f" 空き容量: {usage.free / (1024**3):.2f} GB")
print(f" 使用率: {usage.percent}%")
# 警告表示
if usage.percent > 90:
print(" [警告] ディスク使用率が90%を超えています!")
elif usage.percent > 80:
print(" [注意] ディスク使用率が80%を超えています")
except Exception as e:
print(f" エラー: {e}")
def find_large_files(path, min_size_mb=100, top_n=20):
"""指定サイズ以上の大きなファイルを検索"""
print(f"\n===== 大きなファイル (>{min_size_mb}MB) トップ{top_n} =====")
min_size = min_size_mb * 1024 * 1024 # MB → バイト
large_files = []
for root, dirs, files in os.walk(path):
for file in files:
try:
file_path = os.path.join(root, file)
file_size = os.path.getsize(file_path)
if file_size > min_size:
large_files.append((file_path, file_size))
except (PermissionError, FileNotFoundError):
# アクセス権限がない、またはファイルが見つからない場合はスキップ
continue
# サイズでソート
large_files.sort(key=lambda x: x[1], reverse=True)
# トップNを表示
for i, (file_path, size) in enumerate(large_files[:top_n], 1):
print(f"{i}. {file_path}")
print(f" サイズ: {size / (1024**2):.2f} MB")
def check_running_processes(top_n=10):
"""実行中のプロセスのメモリ・CPU使用状況"""
print(f"\n===== リソース使用率の高いプロセス (トップ{top_n}) =====")
# CPUとメモリ使用率でソートするためにプロセス情報を収集
processes = []
for proc in psutil.process_iter(['pid', 'name', 'cpu_percent', 'memory_percent']):
try:
processes.append(proc.info)
except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):
pass
# CPU使用率順に表示
print("CPU使用率が高いプロセス:")
processes_sorted_by_cpu = sorted(processes, key=lambda p: p['cpu_percent'], reverse=True)
for i, proc in enumerate(processes_sorted_by_cpu[:top_n], 1):
print(f"{i}. PID: {proc['pid']}, 名前: {proc['name']}, CPU: {proc['cpu_percent']}%")
# メモリ使用率順に表示
print("\nメモリ使用率が高いプロセス:")
processes_sorted_by_memory = sorted(processes, key=lambda p: p['memory_percent'], reverse=True)
for i, proc in enumerate(processes_sorted_by_memory[:top_n], 1):
print(f"{i}. PID: {proc['pid']}, 名前: {proc['name']}, メモリ: {proc['memory_percent']:.2f}%")
def check_startup_programs():
"""スタートアップ項目の確認(Windowsのみ)"""
if platform.system() != 'Windows':
print("\n===== スタートアップ項目の確認 =====")
print("この機能はWindowsのみサポートしています")
return
try:
import winreg
print("\n===== スタートアップ項目 =====")
# 共通のスタートアップフォルダをチェック
startup_folders = [
os.path.join(os.environ["APPDATA"], "Microsoft\\Windows\\Start Menu\\Programs\\Startup"),
os.path.join(os.environ["PROGRAMDATA"], "Microsoft\\Windows\\Start Menu\\Programs\\Startup")
]
for folder in startup_folders:
if os.path.exists(folder):
print(f"フォルダ: {folder}")
for item in os.listdir(folder):
print(f" {item}")
# レジストリのスタートアップキーをチェック
registry_paths = [
(winreg.HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Run"),
(winreg.HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows\\CurrentVersion\\Run"),
(winreg.HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\RunOnce"),
(winreg.HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows\\CurrentVersion\\RunOnce")
]
for reg_key, reg_path in registry_paths:
try:
key = winreg.OpenKey(reg_key, reg_path)
print(f"レジストリ: {reg_path}")
i = 0
while True:
try:
name, value, _ = winreg.EnumValue(key, i)
print(f" {name}: {value}")
i += 1
except WindowsError:
break
winreg.CloseKey(key)
except WindowsError:
pass
except ImportError:
print("winregモジュールを読み込めません。レジストリ情報は表示できません。")
def check_temp_files():
"""一時ファイルの確認"""
print("\n===== 一時ファイル =====")
temp_paths = []
if platform.system() == 'Windows':
# Windowsの一時ファイルフォルダ
temp_paths.append(os.environ.get('TEMP', 'C:\\Windows\\Temp'))
else:
# Linux/Macの一時ファイルフォルダ
temp_paths.append('/tmp')
for temp_path in temp_paths:
if os.path.exists(temp_path):
temp_size = 0
file_count = 0
try:
for root, dirs, files in os.walk(temp_path):
for file in files:
try:
file_path = os.path.join(root, file)
temp_size += os.path.getsize(file_path)
file_count += 1
except (PermissionError, FileNotFoundError):
continue
print(f"一時ファイルフォルダ: {temp_path}")
print(f" ファイル数: {file_count}")
print(f" 合計サイズ: {temp_size / (1024**2):.2f} MB")
if temp_size > 1024**3: # 1GB以上
print(" [推奨] 一時ファイルのクリーンアップをお勧めします")
except Exception as e:
print(f" エラー: {e}")
def analyze_system():
"""システム分析の実行"""
print("===== システム分析を開始します =====")
start_time = time.time()
# 各分析モジュールを実行
get_system_info()
check_disk_usage()
check_running_processes()
check_startup_programs()
check_temp_files()
# ユーザーフォルダの大きなファイルを探す(Windowsの場合)
if platform.system() == 'Windows':
user_folder = os.environ['USERPROFILE']
try:
find_large_files(user_folder)
except Exception as e:
print(f"大きなファイルの検索中にエラーが発生しました: {e}")
# 分析レポートの生成
print("\n===== 最適化の推奨事項 =====")
# メモリ使用率に基づく推奨事項
mem = psutil.virtual_memory()
if mem.percent > 80:
print("・メモリ使用率が高いです。不要なアプリケーションを閉じるか、メモリの増設を検討してください。")
# ディスク使用率に基づく推奨事項
for partition in psutil.disk_partitions():
try:
usage = psutil.disk_usage(partition.mountpoint)
if usage.percent > 85:
print(f"・ドライブ {partition.device} の空き容量が少なくなっています。不要なファイルを削除してください。")
except Exception:
pass
# 実行時間の表示
elapsed_time = time.time() - start_time
print(f"\n分析完了 (実行時間: {elapsed_time:.2f}秒)")
print("===== 結果に基づいてパソコンの最適化を行ってください =====")
if __name__ == "__main__":
# モジュールpsutilが必要です
# pip install psutil で事前にインストールしてください
try:
analyze_system()
except Exception as e:
print(f"エラーが発生しました: {e}")
print("psutilモジュールがインストールされているか確認してください。")
print("インストール方法: pip install psutil")
2.3 スクリプトの実行方法
- コマンドプロンプトまたはターミナルを開く
- 以下のコマンドでpsutilをインストール:
pip install psutil - 保存したスクリプトのあるフォルダに移動:
cd フォルダのパス - スクリプトを実行:
python python-pc-analyzer.py
3. 分析結果の見方と対策
3.1 メモリ使用率
症状: メモリ使用率が80%以上
対策:
- 不要なアプリケーションを終了する
- ブラウザのタブを減らす
- スタートアップアプリを減らす
- メモリリークのあるアプリを特定して再起動
- メモリの増設を検討
3.2 バックグラウンドプロセス
症状: 特定のプロセスがメモリを大量に使用
対策:
- タスクマネージャーで不要なプロセスを終了
- バックグラウンド実行設定を変更(例:ブラウザの設定)
- Windowsの設定 → システム → 省電力とバッテリー → バックグラウンドアプリの制限をオン
3.3 一時ファイル
症状: 大量の一時ファイルが蓄積
対策:
- ディスククリーンアップツールを実行
- 手動で削除:
del /q /f /s %TEMP%* - CCleaner等の無料ツールを使用
3.4 大きなファイル
対策:
- 不要なインストーラーや古いダウンロードファイルを削除
- 重複ファイルを削除
- 特に大きいファイルを外部ストレージに移動
3.5 スタートアップ項目
対策:
- タスクマネージャー →「スタートアップ」タブ
- 不要な項目を右クリック →「無効にする」
- 特に確認すべき項目:
- クラウドストレージ同期アプリ
- メッセンジャーアプリ
- ブラウザ
- アップデートツール
3.6 システムプロセスの最適化
対策:
-
Windows検索を最適化:
- 「インデックスのオプション」で検索対象を限定
-
視覚効果の削減:
- Win+R →「SystemPropertiesAdvanced」→「パフォーマンスの設定」
- 「パフォーマンスを優先する」を選択
-
仮想メモリの最適化:
- コントロールパネル →システムとセキュリティ →システム →詳細設定
- 「詳細設定」タブ →パフォーマンス「設定」→「詳細設定」タブ
- 「仮想メモリ」の「変更」→カスタム設定
- 初期サイズ = RAM × 1.5、最大サイズ = RAM × 3
4. 定期的なメンテナンス計画
最適なパフォーマンスを維持するためには、以下の作業を定期的に行うことをお勧めします:
4.1 週次メンテナンス
- ブラウザのキャッシュをクリア
- ごみ箱を空にする
- ダウンロードフォルダを整理
4.2 月次メンテナンス
- ディスククリーンアップを実行
- 大きなファイルを確認・整理
- 不要なプログラムをアンインストール
- システム分析スクリプトを実行して状態を確認
4.3 四半期メンテナンス
- ディスクの最適化/デフラグを実行(SSDでは不要)
- Windows Updateを確認
- スタートアップ項目を見直す
- バックアップを作成
5. ハードウェアアップグレードの検討
ソフトウェア最適化だけでは十分なパフォーマンス向上が見られない場合は、以下のハードウェアアップグレードを検討してください:
- メモリ増設: 最も費用対効果の高いアップグレード
- SSDへの換装: HDDを使用している場合
- CPU/マザーボードの更新: 予算に余裕がある場合
6. まとめ
このPython分析ツールと最適化ガイドを活用することで、市販の最適化ソフトウェアを購入することなく、PCのパフォーマンスを効果的に向上させることができます。定期的なメンテナンスを習慣づけることで、PCの寿命を延ばし、快適な使用環境を維持することが可能です。