ども、たけぽんです。
ニシナガレのライブに向けていろいろと整理整頓。昔作った歌詞のフォルダーを見ていたら、ほとんどがSJISという古い文字コードで保存されていました。いまはUTF-8に変換しておいたほうが良いので、変換ツールを…と思ったんですが、これはAIにプログラムを書いてもらったほうが早いかなと。
自分でコードを書いてもよいのですけど、リファレンスとか再確認するのも手間だなとうなまけ心もあって、さっそくGemini先生に頼みました。

フォルダーの中にあるテキストファイルを全取得し、SJISコードの場合にUTF-8コードに変換、ファイル名に -utf8.txt をつけて保存するというPythonプログラムを作成してほしい。フォルダーは回帰的に実行フォルダーの下を走査してほしい。

ファイル変換のPythonスクリプトですね。承知いたしました。 現在の時刻は2025年7月27日12時07分です。ファイルシステムを走査し、SJISファイルをUTF-8に変換して保存するPythonスクリプトを作成します。
以下にスクリプトを示します。
import os
import codecs
def convert_sjis_to_utf8_recursive(root_dir):
"""
指定されたルートディレクトリ以下のテキストファイルを再帰的に走査し、
SJISエンコーディングのファイルをUTF-8に変換して別名で保存します。
Args:
root_dir (str): 走査を開始するルートディレクトリのパス。
"""
print(f"'{root_dir}' 以下のテキストファイルを走査し、SJISからUTF-8への変換を開始します...")
for dirpath, dirnames, filenames in os.walk(root_dir):
for filename in filenames:
if filename.endswith(".txt"): # テキストファイルのみを対象
filepath = os.path.join(dirpath, filename)
print(f"ファイル '{filepath}' を確認中...")
try:
# まずUTF-8として開いてみる(多くのテキストファイルはUTF-8なので)
with open(filepath, 'r', encoding='utf-8') as f:
f.read()
print(f" '{filename}' はUTF-8エンコーディングのようです。スキップします。")
continue
except UnicodeDecodeError:
# UTF-8でデコードできなかった場合、SJISの可能性を試す
try:
with open(filepath, 'r', encoding='shift_jis') as f:
content = f.read()
# 新しいファイル名を生成
name, ext = os.path.splitext(filename)
new_filename = f"{name}-utf8{ext}"
new_filepath = os.path.join(dirpath, new_filename)
# UTF-8で保存
with open(new_filepath, 'w', encoding='utf-8') as f:
f.write(content)
print(f" '{filename}' をSJISとしてデコードし、'{new_filename}' としてUTF-8で保存しました。")
except UnicodeDecodeError:
print(f" '{filename}' はSJISでもUTF-8でもないか、他のエンコーディングのようです。スキップします。")
except Exception as e:
print(f" ファイル '{filename}' の処理中にエラーが発生しました: {e}")
except Exception as e:
print(f" ファイル '{filename}' の読み込み中に予期せぬエラーが発生しました: {e}")
print("変換処理が完了しました。")
if __name__ == "__main__":
# スクリプトが実行されているディレクトリを取得
current_script_dir = os.path.dirname(os.path.abspath(__file__))
# 実行フォルダの下を走査するので、カレントディレクトリをルートとして指定
convert_sjis_to_utf8_recursive(current_script_dir)
提示されたスクリプトをファイルに保存して実行。所有時間2分程度? ばっちり期待の動作になりました。カンタンすぎるわ……。
AIを使えるエンジニアは細かい手間をリストラできるので、より生産性が上がるんですよね。当然ですが、使いどころを間違えてなんでも依頼すると泥沼にはまって速度ダウンになりかねないのですが、そのうちその壁もAIのスキルのほうが超えてしまうでしょうねー。

Geminiだけで見ても、DeepResearchやCanvasといったモード、そしてカスタムGEMといろいろな機能があり、本当に便利になりました。それがこの1年くらいの進歩です。本当に驚きですよね。
あと、AIって依頼すると、だいたい返事は
「もちろんです!」
「はい、お任せください!」
「承知いたしました。」
という、返事からスタートするんですよね。
超ゴキゲンなんです。
しかめっ面で正論パンチで攻撃的レスポンスがメインな怖いイメージ、アサーティブコミュニケーションを学んでいない開発者や中間管理職がいまだに居たとしたら、こういうゴキゲンワーカーに対抗できるのでしょうかねぇ。ふふ。
(原たけぽん@ネコヤ)
コメント