なぜこう書くのか
コード変換はAIが最も得意そうに見えるタスクの一つであるため、出力されたコードをそのまま貼り付けてしまいがちです。しかし問題は、「文法的に合っているコード」と「その言語において安全なコード」は別物であるという点です。Pythonで何気なく書いていた表現がJavaでは値の丸め誤差や例外の原因になることがあり、しかもコンパイル自体は通ってしまうため、後からバグとして発覚しやすくなります。
課題の段落で「文法をそのまま置き換えるだけでなく」と明記したのはこのためです。この1行がないと、1行ずつ直訳しただけのコードが出力されます。動作はしてもその言語のエンジニアから見れば不自然で、かえって修正が難しいコードになってしまいます。元の言語で自然だった表現が移植先言語では危険なイディオムになるケースを指摘するよう求めているのも同じ意図です。
出力形式の肝は②と③です。移植後のコードだけを受け取っても、何がなぜ変わったのかが分からず学びにつながりません。変更点の対応表は2つの言語の違いを一目で示し、「動作が異なる可能性がある点」は、PythonからJavaへの移行などで実際に事故が起きやすいポイント(整数の除算、エンコーディング、null処理など)を事前に洗い出します。
制約の「要確認」という指定は、存在しない関数名をそれらしく捏造(ハルシネーション)することを防ぎます。分からない箇所が明示されれば、どこを検索して検証すべきかが定まります。コードを """ で囲んでいるのは、コード内のコメントや文字列がプロンプトへの指示として誤認されるのを防ぐためです。# この部分は削除可能 といった1行のコメントがプロンプト指示として解釈されてしまう事故を防止します。
用語が分からなければAha AIで: hallucination, output-format
悪い例との比較
これをJavaに変えて def parse_orders(rows): ... (コード貼り付け)
コードは出力されますが、元のコードと1行ずつ対応させただけの直訳になり、Javaではあまり使われない構造がそのまま残ってしまいます。何が変わったのかの説明がないため、整数の除算のように暗黙的に値が変わってしまうポイントを見落としやすく、ライブラリ名が間違っていても実際に実行するまで気付けません。結局、移植されたコードを最初からすべて読み直して検証することになり、手作業で移植する場合と作業時間が変わらなくなります。
バリエーション
移植前にリスクのある箇所を把握したい場合
以下の{{元の言語}}コードを{{翻訳先言語}}に移植する予定です。まだコードは移植せず、移植時に問題になりそうな注意点のみを洗い出してください。危険度順にリストを作成し、各項目について「元のコードのどの部分か」「なぜ問題になるのか」「対応策の候補」を記述してください。問題のない部分には言及しないでください。
""" {{コード}} """
規模の大きなコードを移植する前に事前チェックとして使用します。あらかじめリスクの高い箇所を把握しておくことで、移植後のコードレビュー時にどこを重点的に見るべきかが明確になります。
移植したコードが正しいか検証したい場合
以下は私が{{元の言語}}から{{翻訳先言語}}へ移植したコードです。元のコードと結果が異なってしまう可能性がある入力値のパターンを見つけてください。「入力例」「元のコードの実行結果」「移植後コードの実行結果」「なぜ結果が異なるのか」を表形式で整理し、差異がないと判断した部分についてはその根拠を1行で記述してください。
""" {{コード}} """
自分で移植を行った後にレビュー・検証を依頼する用途です。結果の差異を検証するためのテスト用入力値を先に取得することで、そのまま動作テストに活用できます。
モデル別の注意
移植されたコードは必ずご自身で実際に実行して確認してください。標準ライブラリの名前は正しくても、関数名や引数の順序を誤って記憶・出力しているケースがよくあります。
関連プロンプト
最終更新 2026-09-02 · 誤りがありますか? 知らせる