import re
UUID_TEXT = re.compile(r"[0-9a-f]{8}(?:-[0-9a-f]{4}){3}-[0-9a-f]{12}")
def uuid_bytes(text):
if not isinstance(text, str) or not UUID_TEXT.fullmatch(text):
raise ValueError("canonical lowercase UUID required")
return bytes.fromhex(text.replace("-", ""))適用前に確認
実際の動作を期待する結果と比較します。検証に失敗した場合は、次の変更を加える前に原因を調べてください。
モデル
OpenAI互換またはAnthropicのエンドポイントを、ベースURLと必要なAPIキーで設定し、接続をテストします。ローカルのモデルサーバーは起動が必要です。リモートツールは別途データを送信する場合があります。
プロジェクト
全ゼロと16進英字を確認し、大文字、波括弧、位置の違うハイフン、前後の空白を拒否します。
import re
UUID_TEXT = re.compile(r"[0-9a-f]{8}(?:-[0-9a-f]{4}){3}-[0-9a-f]{12}")
def uuid_bytes(text):
if not isinstance(text, str) or not UUID_TEXT.fullmatch(text):
raise ValueError("canonical lowercase UUID required")
return bytes.fromhex(text.replace("-", ""))アプリケーション境界で識別子の表現を合意する
IdSaffronは、アプリケーションの大きな部分どうしを結ぶ小さな境界関数を調べるWindows用AIコーディング作業環境です。識別子処理を変更する必要がある場合、受け付ける表現と後段のコードの期待を説明します。一見無害な正規化で入力仕様を黙って広げないよう、検証器、変換手順、関連する呼び出し元を一緒に調べるようモデルに依頼してください。
uuid_text.pyを題材に、バイト列への変換前に正規形式の小文字UUID文字列を受け付ける処理をレビューできます。大文字・小文字、区切り文字、前後の空白が異なる例を示し、どれを拒否すべきか指定してください。検証前に正規化するのか、呼び出し元が正規形式を渡すべきなのかを話し合います。これらを決めることで、コードと照合してレビューできる具体的な修正案になります。
レビュー後、生成されるバイト列と拒否する表現の両方を確認するプロジェクトのテストを実行します。従来は変換が失敗しないと想定していた経路も含め、アプリケーションが無効な識別子をどう報告するか調べてください。IdSaffronは対応するOpenAI互換またはAnthropicのエンドポイントに、必要な場合は認証情報を使って接続します。制限なしとされるモデルの選択肢は選んだ接続先によって異なり、制約、利用可能なツール、コンテキスト容量はそのモデルとサーバーの特性です。受け入れ例が、改訂を重ねるコーディングの会話に一貫した基準を与えます。
明確にしておきたい識別子の境界
補助関数は大文字の識別子も受け付けるべきですか?
自動的に寛容な動作を追加せず、アプリケーションの仕様から判断してください。呼び出し元に正規形式の小文字が必要なら、他の形式の受け入れは上流の不整合を隠す可能性があります。正規化が目的なら、その場所を指定し、生成された表現をテストしましょう。
識別子が有効ならレコードの存在が証明されますか?
いいえ。形式検証で分かるのは、渡された表現が期待する形を満たすことだけです。存在確認と認可は別のアプリケーションのチェックに属します。変換成功をレコードへのアクセス許可と扱う前に、利用側をレビューしてください。
受け付ける文字列だけでなくバイト列も確認するのはなぜですか?
受け入れだけでは、変換が利用側の期待する値を生成するとは証明できません。既知の文字列とバイト列のペアを含め、後段の処理を検証してください。特に、プロジェクトの他の場所で使う直列化や保存の境界を修正案が変える場合に重要です。
呼び出し元がすでに前後の空白を除去している場合は?
同じ処理を追加する前に、その動作を調べます。この補助関数が正規化済みの入力を受け取るのか、自身で正規化するのか合意してください。責任を明確にすれば拒否ルールを理解しやすくなり、呼び出し経路ごとの不統一な扱いを防げます。
IdSaffron · 更新日 2026-10-25