Unifyが手動クォート地獄から救ってくれた話

Read in: English · Español · Français · Deutsch · Português (Brasil) · 日本語 · 中文(简体) · Русский

少しずつ気が狂いそうになるコーディングスタイルの癖に悩まされたことはありますか?仕事では、私たちのチームは Blackのコードスタイルに従っています——ただし一つだけ例外があります。二重引用符ではなく単一引用符を使うことです。無害に思えますよね?

ところが、このほんの小さな逸脱が驚くほどの摩擦を生むことが分かりました。

「検索と置換」疲れ

もちろん、引用符を手動で検索・置換することもできます。しかし、それを複数のファイルに渡って繰り返すのは面倒です。そこでCursorを使ってみましたが、それはそれで新たな頭痛の種を生みました。大量のトークン消費、遅い処理、そして頑固なロボットアシスタントのように何ステップかごとに突く必要があること。

それは私の作業の流れを乱していました。

Unify(とuv)の登場

すでに uv をインストールしていたので、Unifyを導入するのはシームレスでした:

uv tool install --python=python3.10 unify

この --python=python3.10 という部分が重要です——そうしないと uv はデフォルトでPython 3.13を使ってしまい、 lib2to3 に問題が生じます(そう、今でも関係あるんです!)。

Traceback (most recent call last):
  File "/Users/abramowi/.local/bin/unify", line 10, in <module>
    sys.exit(main())
             ~~~~^^
  File "/Users/abramowi/.local/share/uv/tools/unify/lib/python3.13/site-packages/unify.py", line 230, in main
    return _main(sys.argv,
                 standard_out=sys.stdout,
                 standard_error=sys.stderr)
  File "/Users/abramowi/.local/share/uv/tools/unify/lib/python3.13/site-packages/unify.py", line 210, in _main
    if format_file(name, args=args, standard_out=standard_out):
       ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/abramowi/.local/share/uv/tools/unify/lib/python3.13/site-packages/unify.py", line 144, in format_file
    encoding = detect_encoding(filename)
  File "/Users/abramowi/.local/share/uv/tools/unify/lib/python3.13/site-packages/unify.py", line 125, in detect_encoding
    from lib2to3.pgen2 import tokenize as lib2to3_tokenize
ModuleNotFoundError: No module named 'lib2to3'

Unifyはこれに依存しているので、古めのPythonバージョンが救いになります。

すべてを解決した一行コマンド

その場で単一引用符に切り替えるのに必要なのはこれだけです:

unify --quote "'" --in-place /path/to/file.py

それだけで、もう手間はかかりません。トークンの浪費もありません。AIツールを従わせるために突く必要もありません。

変更前と変更後

# Before
print("Hello, world!")

# After
print('Hello, world!')

まとめ

時には、最善の解決策は外科的なものです。Unifyは単にコードを整えただけでなく、時間と集中力を取り戻させてくれました。もしあなたが引用符スタイルの煉獄で立ち往生しているなら、この一行コマンドが脱出口になるかもしれません。

WordPress and DreamHost: Perfect Duo

Leave a Reply

Your email address will not be published. Required fields are marked *