HiÐΞClassic

PC最適化ガイド: Pythonを使ったシステム分析と対策 (claude3.7に聞いた例)

SHOGAKU
19 days ago
PC最適化ガイド: Pythonを使ったシステム分析と対策1. はじめに2. 分析ツール2.1 必要な環境2.2 分析スクリプト2.3 スクリプトの実行方法3. 分析結果の見方と対策3.1 メモリ使用率3.2 バックグラウンドプロセス3.3 一時ファイル3.4 大きなファイル3.5 スタートアップ項目3.6 システムプロセスの最適化4. 定期的なメンテナンス計画4.1 週次メンテナンス4.2 月次メンテナンス4.3 四半期メンテナンス5. ハードウェアアップグレードの検討6. まとめ

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 スクリプトの実行方法

  1. コマンドプロンプトまたはターミナルを開く
  2. 以下のコマンドでpsutilをインストール:
    pip install psutil
    
  3. 保存したスクリプトのあるフォルダに移動:
    cd フォルダのパス
    
  4. スクリプトを実行:
    python python-pc-analyzer.py
    

3. 分析結果の見方と対策

3.1 メモリ使用率

症状: メモリ使用率が80%以上

対策:

  • 不要なアプリケーションを終了する
  • ブラウザのタブを減らす
  • スタートアップアプリを減らす
  • メモリリークのあるアプリを特定して再起動
  • メモリの増設を検討

3.2 バックグラウンドプロセス

症状: 特定のプロセスがメモリを大量に使用

対策:

  • タスクマネージャーで不要なプロセスを終了
  • バックグラウンド実行設定を変更(例:ブラウザの設定)
  • Windowsの設定 → システム → 省電力とバッテリー → バックグラウンドアプリの制限をオン

3.3 一時ファイル

症状: 大量の一時ファイルが蓄積

対策:

  • ディスククリーンアップツールを実行
  • 手動で削除:
    del /q /f /s %TEMP%\*
    
  • CCleaner等の無料ツールを使用

3.4 大きなファイル

対策:

  • 不要なインストーラーや古いダウンロードファイルを削除
  • 重複ファイルを削除
  • 特に大きいファイルを外部ストレージに移動

3.5 スタートアップ項目

対策:

  1. タスクマネージャー →「スタートアップ」タブ
  2. 不要な項目を右クリック →「無効にする」
  3. 特に確認すべき項目:
    • クラウドストレージ同期アプリ
    • メッセンジャーアプリ
    • ブラウザ
    • アップデートツール

3.6 システムプロセスの最適化

対策:

  1. Windows検索を最適化:

    • 「インデックスのオプション」で検索対象を限定
  2. 視覚効果の削減:

    • Win+R →「SystemPropertiesAdvanced」→「パフォーマンスの設定」
    • 「パフォーマンスを優先する」を選択
  3. 仮想メモリの最適化:

    • コントロールパネル →システムとセキュリティ →システム →詳細設定
    • 「詳細設定」タブ →パフォーマンス「設定」→「詳細設定」タブ
    • 「仮想メモリ」の「変更」→カスタム設定
    • 初期サイズ = RAM × 1.5、最大サイズ = RAM × 3

4. 定期的なメンテナンス計画

最適なパフォーマンスを維持するためには、以下の作業を定期的に行うことをお勧めします:

4.1 週次メンテナンス

  • ブラウザのキャッシュをクリア
  • ごみ箱を空にする
  • ダウンロードフォルダを整理

4.2 月次メンテナンス

  • ディスククリーンアップを実行
  • 大きなファイルを確認・整理
  • 不要なプログラムをアンインストール
  • システム分析スクリプトを実行して状態を確認

4.3 四半期メンテナンス

  • ディスクの最適化/デフラグを実行(SSDでは不要)
  • Windows Updateを確認
  • スタートアップ項目を見直す
  • バックアップを作成

5. ハードウェアアップグレードの検討

ソフトウェア最適化だけでは十分なパフォーマンス向上が見られない場合は、以下のハードウェアアップグレードを検討してください:

  1. メモリ増設: 最も費用対効果の高いアップグレード
  2. SSDへの換装: HDDを使用している場合
  3. CPU/マザーボードの更新: 予算に余裕がある場合

6. まとめ

このPython分析ツールと最適化ガイドを活用することで、市販の最適化ソフトウェアを購入することなく、PCのパフォーマンスを効果的に向上させることができます。定期的なメンテナンスを習慣づけることで、PCの寿命を延ばし、快適な使用環境を維持することが可能です。


コメント
いいね
投げ銭
最新順
人気順
コメント
いいね
投げ銭
最新順
人気順
トピック
アプリ

Astar Network

DFINITY / ICP

NFT

DAO

DeFi

L2

メタバース

BCG

仮想通貨 / クリプト

ブロックチェーン別

プロジェクト

目次
Tweet
ログイン