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

# PC最適化ガイド: Pythonを使ったシステム分析と対策

## 1. はじめに

このガイドでは、Pythonスクリプトを使用してPCのパフォーマンスを分析し、最適化する方法を解説します。市販のPC最適化ソフトウェアを購入しなくても、無料で効果的にパフォーマンスを向上させることが可能です。

## 2. 分析ツール

### 2.1 必要な環境

*   Python 3.x
*   psutilライブラリ（`pip install psutil`でインストール）

### 2.2 分析スクリプト

以下のPythonスクリプトを`python-pc-analyzer.py`として保存します：

```python
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の寿命を延ばし、快適な使用環境を維持することが可能です。