夜のオフィスで、見慣れないコードが映るモニターを前に、少し戸惑った表情で画面に顔を近づけて読んでいる開発者

知らないコードをAIに1行ずつ説明させる|安全に触るための読み方

「この関数、仕様がちょっと変わったから直しておいて。数行でしょ?」 開いてみると、見たことのない書き方が並んでいる。書いた人はもう別のチーム。コメントはない。たしかに数行なのに、どこを触っていいのか分からない。

こういうとき、AIに「このコードを説明して」と貼るのは、とても自然な一手です。実際、それらしい説明はすぐ返ってきます。 ただ、説明を読んで「分かった」と思えたのに、直したら別のところが壊れた——そんな経験がある人も多いのではないでしょうか。

それは、あなたの読み方が浅かったからではありません。AIの説明は「何をしているか」には強い一方で、触るときにいちばん大事な「何を前提にしているか」が抜けやすいのです。 この記事では、知らないコードをAIに1行ずつ説明させて、安全に触れる状態まで理解する読み方を整理します。今日は、気になっている関数をひとつ選ぶところから、一緒に進めましょう。

結論:知らないコードをAIに説明させるときは、説明を「答え」ではなく「確かめるための仮説」として受け取ります。手順は4つ。①範囲を関数ひとつに絞って渡す/②1行ずつ説明させ、「確実に言えること」と「推測」を分けさせ、前提条件も出させる/③説明を、小さな入力で実際に動かして確かめる/④分かったことを自分の言葉で書き残してから触る。いちばん効くのは③。数分動かすだけで、説明の抜けが見えてきます。

何が起きているのか——要約は合っていても、「前提」が抜ける

AIにコードを説明させると、たいてい筋の通った文章が返ってきます。そして多くの場合、要約としては合っています。

ただ、コードを触る人に必要なのは要約だけではありません。

こうした「前提」は、コードの中に書かれていないことが多い部分です。AIはコードの見た目から自然な説明を組み立てるので、書かれていない前提までは、こちらから聞かないと出てこないことがあります。ときには、もっともらしい推測を事実のように書くこともあります(いわゆるハルシネーションです)。

だから「AIの説明は当てにならない」ではなく、聞き方と確かめ方を決めておけば、AIは知らないコードを読むときの心強い相棒になる、と考えるのが現実的です。

具体例:「最新のレコードだけ返す」関数の、書かれていない前提

たとえば、こんなPythonの関数を引き継いだとします。

def pick_latest(rows):
    seen = {}
    for r in sorted(rows, key=lambda r: (r["id"], r["updated_at"])):
        seen[r["id"]] = r
    return [r for r in seen.values() if not r.get("deleted")]

AIに「説明して」とだけ頼むと、こんな答えが返ってくるかもしれません。

「IDごとに、更新日時がいちばん新しいレコードだけを残し、削除済みのものを除いて返す関数です」

要約としては合っています。でも、この関数を触る前に知っておきたいことが、まだいくつか隠れています。

隠れた前提・挙動何が起きるか
最新のレコードが削除済みだと、そのIDごと結果から消える1つ前の削除されていないレコードに戻るわけではない。仕様どおりかは要確認
updated_at が空(None)のレコードが混ざると、並べ替えでエラーになるPython 3 では None と文字列を比べられず、TypeError で止まる
updated_at が文字列のまま比べられている"2026-10-9" と "2026-10-10" のように桁がそろっていないと、新旧の判定が逆になる
結果はIDの小さい順に並ぶ呼び出し側がこの順番に頼っていたら、書き換えで並びが変わると影響が出る

どれも、コードのどこにも「注意」とは書かれていません。そして直すときに壊しやすいのは、まさにこういう所です。

放っておくと、何が起きるか

「分かったつもり」で触ると、次のようなことが起きやすくなります。

逆に、説明を一度確かめて書き残しておけば、そのコードはもう「知らないコード」ではなくなります。ここが、この記事でいちばん伝えたいところです。

知らないコードを読む4ステップ

左にAIからの説明カードを読む場面、中央に小さな入力を流して結果を確かめる場面、右にノートに書き残す場面が、矢印でつながって並んでいる流れの図
AIの説明は仮説。動かして確かめ、分かったことを書き残してから触る

ステップ1:範囲を関数ひとつに絞って渡す

ファイルを丸ごと貼るより、いま触りたい関数ひとつ(目安として数十行まで)に絞るほうが、説明が具体的になります。範囲が広いと、AIは全体をなめらかに要約しようとして、細かい前提が落ちやすくなるからです。

周辺のコードの雰囲気まで伝えたいときは、既存コードにAIを馴染ませる文脈の渡し方の要約の作り方が使えます。

ステップ2:1行ずつ説明させ、「確実」と「推測」を分けさせる

「説明して」だけでなく、触る人に必要な情報を指定して頼みます。たとえばこんな頼み方です。

次のコードを、修正する前に正しく理解したいです。

## 説明してほしいこと
- 1行(または意味のまとまり)ずつ、何をしているかを説明してください
- 各説明に「コードから確実に言えること」か「推測」かを付けてください
- このコードが暗黙に前提にしている入力の条件を挙げてください
  (型・形式・空やNoneのとき・重複・件数 など)
- 入力によって、結果が直感と違いそうな所があれば挙げてください
- 結果の順番や件数が、何によって決まるかを説明してください
- 自信がない箇所は「自信がない」と書いてください

## してほしくないこと
- 修正案やリファクタリング案は、今は出さないでください

(ここにコード)

「修正案は出さないで」の一行が、意外と効きます。いきなり直し方が出てくると、理解する前に手が動いてしまうからです。

返ってきた説明で「推測」と付いた所、「自信がない」と書かれた所が、次のステップで確かめる場所になります。

ステップ3:説明を「仮説」として、小さく動かして確かめる

ここがいちばん大事なステップです。AIの説明を読んだら、実際に小さな入力を流して、説明どおりに動くかを見ます。

先ほどの例なら、「最新が削除済みのID」と「updated_at が空のレコード」を1件ずつ混ぜるだけで、表の挙動がすぐ確かめられます。

入力の候補を考えるのはAIに手伝ってもらえます(境界値・異常系をAIに考えさせる手順も参考にどうぞ)。ただし、結果がどうなるかはAIに予想させて終わりにせず、必ず実際に動かして確かめるのがポイントです。予想と実際が食い違った所こそ、理解が深まる所です。

確かめた入力と結果は、そのまま単体テストとして残せます。あとでコードを直したとき、前提を壊していないかを機械が見張ってくれます。

ステップ4:自分の言葉で書き残してから、触る

最後に、分かったことを自分の言葉で書き残します。AIの説明をコピーするのではなく、確かめた結果をもとに、短くまとめ直すのがコツです。

自分の言葉で書けない所は、まだ分かっていない所です。そこだけもう一度、ステップ2と3に戻れば大丈夫です。

ここまで来て、ようやく「直す」作業に入ります。書き換えたあとの確認は、AIリファクタリングの差分レビューの手順がそのまま使えます。

明日やること(小さく始める3つ)

  1. 触る予定の関数をひとつ選び、上のテンプレでAIに説明させる:「確実」と「推測」が分かれて返ってくるだけで、確かめる場所が見えてきます。
  2. 「推測」と書かれた所をひとつだけ、実際に動かして確かめる:2〜3件のデータで十分です。5分で終わることも多いはずです。
  3. 分かった前提を、関数の先頭にコメントで1行残す:次にそのコードを開く人(未来の自分を含む)が、同じところで迷わずに済みます。

知らないコードを読む チェックリスト

【必須】の3つだけでも、「分かったつもりで壊す」をかなり防げます。 残りは余裕があるときに。

最後に

知らないコードを前に手が止まるのは、慎重に仕事をしている証拠です。「数行でしょ」と言われても、その数行が何を前提にしているかを知らずに触らない——それは臆病ではなく、ちゃんとした技術です。 AIに1行ずつ説明させて、小さく動かして確かめる。それだけで、知らないコードは、少しずつ「説明できるコード」に変わっていきます。

明るいオフィスで、モニターのコードを指し示しながら、隣の同僚に落ち着いた笑顔で説明している開発者
確かめて書き残したコードは、もう「知らないコード」ではない

AIに説明を頼むのは、ずるいことでも手抜きでもありません。確かめる手順さえ持っていれば、読み解く速さも、触るときの安心感も、ぐっと上がります。 まずは明日、気になっている関数をひとつ選んで、「確実」と「推測」を分けて説明してもらうところから始めてみましょう。

よければ、こちらも

関連用語