日常 : お片付け

日常

お片付けといっても、パソコン内の話です。

うちにあるパソコンで2番目に古いデスクトップは、
トレードで使っているので、画面録画をしているので、動画ファイルが増えています。

5年前くらいに作ったパソコンだと思うのですが、
ディスク容量を、全部で8TBくらいあるので、今でも現役機です。

このデスクトップのCドライブがいつのまにか空きがなくなっていたので、
急遽、PC内のお片付けを実行しました。

不要なものばかり

Cドライブの空き容量を増やす、ついでに、他のディスクに関しても整理をしました。

10年以上前のオンラインゲームの動画やスクリーンショットがたくさんあったので、
これは動画はすべて削除しました。

他には、データが重複しているものが多数あり。
この辺り、重複チェックできるソフトとかありそうですが、お金はかけたくないので、
とりあえず、容量が大きく不要なものだけ削除しました。

以上を実行しましたが、思ったより空き容量を増やせず、次の作戦に。

前職で使ったワザ

前職はインフラエンジニアでしたので、
サーバーやネットワーク機器などの保守も行っていました。

前任者というか、プロパの方も、内部向けのサーバーなどは優先度が低いのか、
ディスク容量が圧迫していることを放置していたり、またその原因がわからないし、
ディスク残量がなくなった場合にどのような不具合が起きるのかを軽視していました。

で、この問題について、丸投げされて、一から担当ベンダーさんと作業を進めていました。

その際、windowsのバッチファイルでファイルやフォルダ名と、
その更新日、ファイルサイズなどを取得するものを作りました。

バッチファイルなんて作ったことないので、Windowsコマンドはよくわかりません。
なので、chatGPTさんに作ってもらっては、検証してを繰り返しました。

今回は、自分のパソコンなので、より高度な検査ができるpythonスクリプトで作成しました。
下記のスクリプトは、Windows内臓のCopilotで作成してもらいました。

import os
import csv
import time

# === 設定セクション(メンテナンスしやすい変数) ===
BASE_PATH = "C:\\Users\\hoge"                  # 調査対象のフォルダ
MAX_DEPTH = 5                                  # 最大階層
SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))  # スクリプトのあるフォルダ
CSV_FILENAME = "hoge_folder_sizes.csv"         # 出力CSVファイル名

CSV_PATH = os.path.join(SCRIPT_DIR, CSV_FILENAME)

# === フォルダサイズ取得関数 ===
def get_folder_size(path, current_depth, max_depth):
    total_size = 0
    if current_depth > max_depth:
        return 0
    try:
        for entry in os.scandir(path):
            try:
                if entry.is_file(follow_symlinks=False):
                    total_size += entry.stat(follow_symlinks=False).st_size
                elif entry.is_dir(follow_symlinks=False):
                    total_size += get_folder_size(entry.path, current_depth + 1, max_depth)
            except Exception as e:
                print(f"  ⚠️ エラー: {entry.path} → {e}")
    except Exception as e:
        print(f"  ⚠️ アクセス不可: {path} → {e}")
    return total_size

# === サイズ変換関数 ===
def format_size(bytes_size):
    gb = bytes_size / (1024 ** 3)
    return round(gb, 2)

# === メイン処理 ===
def main():
    results = []
    start_time = time.time()

    print(f"📊 {BASE_PATH} 以下のフォルダサイズを最大 {MAX_DEPTH} 階層まで集計中...\n")

    for root, dirs, files in os.walk(BASE_PATH):
        depth = root[len(BASE_PATH):].count(os.sep)
        if depth <= MAX_DEPTH:
            print(f"🔍 処理中: {root}(階層: {depth})")
            size_bytes = get_folder_size(root, 0, MAX_DEPTH)
            size_gb = format_size(size_bytes)
            results.append({"Folder": root, "Size_GB": size_gb})
            print(f"✅ 完了: {root} → {size_gb} GB\n")

    # サイズ順にソート(降順)
    results.sort(key=lambda x: x["Size_GB"], reverse=True)

    # CSV出力
    with open(CSV_PATH, mode="w", newline="", encoding="utf-8") as file:
        writer = csv.DictWriter(file, fieldnames=["Folder", "Size_GB"])
        writer.writeheader()
        writer.writerows(results)

    elapsed = round(time.time() - start_time, 2)
    print(f"\n📁 CSV保存完了: {CSV_PATH}")
    print(f"⏱ 所要時間: {elapsed} 秒")

if __name__ == "__main__":
    main()

※上記のスクリプトを使用するには、Pythonを導入する必要があります。

ちなみに、このスクリプトは数秒でつくってくれます。
自分の指示どおりにスクリプトができるとは限らないです。

ここで重要なのは言語化なのでしょうね。
僕は、言語化が苦手な方なので、何度も検証を繰り返しやっとできました。

とはいえ、自分で作るのでは、pythonのライブラリや記述方法なども、
初心者でレベルですので、調べながらスクリプト書いて…なんてしていると、
数年が経ちそうですが、生成AIさんなら、数秒でスクリプトができます。

本当に良い時代が来ましたね。

あとは手動で…

ディスクを圧迫している犯人は特定できました。

犯人の多くは、デイトレのトレード動画でした。220GBくらいありました。
いまは、Cドライブでは保存していないので、こんなに残っているのは気づかなかったです。

あとは、5年前くらいのiPhoneのバックアップファイルが複数ありました。
このサイズが意外に大きく120GBほどありました。

とりあえず、これらを削除・移動したので、Cドライブの空き容量が増えました。

Cドライブの空き残量は、340GBになったので、しばらくは安心して使えそうです。

さて、そろそろ寝ます。

タイトルとURLをコピーしました