1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

🎁小さな便利スクリプトもGit管理すると後で役立つ話

Last updated at Posted at 2025-10-03

📝 はじめに

こんにちは、piyovateです。

今回は自分用のちょっとしたツール開発として、BMP → PNG 変換スクリプト を作り、それを Git + uv環境 で管理するようにしました。

普段から業務でGitを使っているものの、「自分用スクリプトをリポジトリ化」するのは初めての試み。
実際にやってみて感じたことやポイントをまとめておきます。


🎯 背景

  • 画像を一括で変換する処理を手元で使いたかった
  • どうせならGitで管理して育てていきたい
  • 依存関係は乱雑にしたくないので、話題の uv を使って環境を構築

「小さな便利スクリプトでも、ちゃんとリポジトリにしておくと後で便利だよね」という実験です。


🛠 実装内容

ディレクトリ構成

format-converters/
  converters/   # ソースコード
    bmp_to_png.py
  replace/      # 置き換え前(入力ファイル)
  replaced/     # 置き換え後(出力ファイル)
  README.md
  pyproject.toml
  uv.lock
  .gitignore

bmp_to_png.py

from PIL import Image
from pathlib import Path

# ベースディレクトリ
BASE_DIR = Path(__file__).resolve().parent.parent
INPUT_DIR = BASE_DIR / "replace"
OUTPUT_DIR = BASE_DIR / "replaced"
OUTPUT_DIR.mkdir(parents=True, exist_ok=True)

# BMPとBMP大文字に対応
bmp_files = list(INPUT_DIR.rglob("*.bmp")) + list(INPUT_DIR.rglob("*.BMP"))

for src in bmp_files:
    try:
        rel = src.relative_to(INPUT_DIR)
        dst_subdir = OUTPUT_DIR / rel.parent
        dst_subdir.mkdir(parents=True, exist_ok=True)
        dst = dst_subdir / (src.stem + ".png")

        with Image.open(src) as img:
            img.save(dst, "PNG", optimize=True)
        print(f"{src} -> {dst}")
    except Exception as e:
        print(f"⚠️ エラー {src}: {e}")

.gitignore

__pycache__/
*.pyc
.venv/
replaced/
replace/
.vscode/
Thumbs.db
.DS_Store

⚙ 環境構築(uv利用)

  1. uv 初期化

    uv init
    
  2. Pillow 追加

    uv add pillow
    
  3. 実行

    uv run python converters/bmp_to_png.py
    
  • replace/.bmp を置くと、replaced/.png が出力されます。

📌 Git管理のポイント

  • 管理対象

    • converters/ のスクリプト
    • pyproject.toml, uv.lock
    • .python-version(バージョン固定)
    • .gitignore, README.md
  • 管理対象外

    • replace/(入力データ)
    • replaced/(出力データ)
    • .venv/(仮想環境)

🙌 おわりに

今回は BMP → PNG 変換というシンプルなスクリプトでしたが、

  • Gitで管理することで育てやすくなる
  • uvで依存関係がきれいに管理できる

というメリットを実感しました。

今後は音声(WAV → MP3)やテキスト(CSV → JSON)など、他の変換スクリプトも追加して「自分用便利ツール集」として育てていく予定です。


1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?