バイブコーディング実践編 — Claude Code を中心に AIで安全に作る力生成コード読解とレビュー — 5層チェックリスト

Intent / Integration の見抜き方

読了目安 6

学習のねらい

前レッスンで、Intent (意図) と Integration (統合) の確認がレビューの初期段階で非常に重要であることを学びました。 しかし、AIが生成したコードの中から、それらの問題を見抜くのは簡単ではありません。 このレッスンでは、AI生成コードにおける意図のズレや統合不良の具体的なサインを学び、実際のコード例を通じて見抜き方を習得します。

Intent (意図) のズレを見抜くサイン

意図のズレとは、AIがあなたの指示を誤解したり、指示に含まれていない余計な機能を追加したり、あるいは必要な機能が欠けていたりする状態を指します。

  1. 仕様逸脱のサイン:

    • 指示にない機能の追加: 例えば、「ユーザーリストを表示する」と指示したのに、勝手に「ユーザー追加機能」まで実装されている場合。これは一見親切に見えますが、意図しない複雑性や潜在的なバグの原因になります。
    • 指示された機能の欠落: 必要な認証チェックやバリデーション(入力値の検証)が抜けている、特定の例外処理が考慮されていないなど。
    • 要件と異なるロジック: 「昇順でソート」と指示したのに降順でソートされている、特定の条件分岐が逆になっている、など。

    見抜き方: AIへの元々の指示(プロンプト)と、生成されたコードの機能を一行ずつ照らし合わせる「プロンプトとの差分チェック」が有効です。

  2. 副作用の混入:

    • 意図しないグローバル変数の変更: 関数内で予期せずグローバルな状態を変更してしまうなど。
    • データベースへの不必要な書き込み: 読み取り専用の処理であるべきなのに、なぜかデータが更新されている。
    • 外部サービスの呼び出し: ログ出力やメトリクス収集以外の、指示にない外部APIへのアクセス。

    見抜き方: 変更されるべきでない変数が変更されていないか、想定外のI/O(入力/出力)操作がないか、コードの「影響範囲」を意識して読み解きましょう。

Integration (統合) 不良を見抜くサイン

統合不良とは、AIが生成したコードが既存のシステムやライブラリ、他のモジュールと適切に連携できない状態を指します。

  1. 不適切なimport (インポート) 過多 / 不足:

    • import過多: 実際に使われていないライブラリやモジュールが多数インポートされている場合。これはコードの肥大化や、依存関係の複雑化を招きます。
    • import不足: 必要なライブラリがインポートされておらず、実行時にエラーとなる場合。
    • 間違ったパスからのimport: 既存モジュールが期待するパスと異なる場所からインポートしようとしている。

    見抜き方: lintツール(例: PythonのRuff、JavaScriptのESLint)が未使用importを警告してくれることが多いです。また、プロジェクトの既存コードのimport規約と照らし合わせることも重要です。

  2. データ形式の不一致:

    • APIの期待値と異なる引数: 既存のAPIが {"id": 1, "name": "Alice"} のようなJSON形式を期待しているのに、AIが ("id", 1, "name", "Alice") のようなタプルを渡そうとしている。
    • 返り値の不一致: 既存のコードが特定のデータ型(例: intstr)を期待しているのに、AIが None や異なる型の値を返している。

    見抜き方: 既存コードの関数シグネチャ(引数と返り値の型情報)やAPIドキュメントと、AI生成コードの呼び出し部分を比較します。型ヒント(Type Hinting)が書かれている場合は、その情報が非常に役立ちます。

  3. 命名規則やコーディング規約の不一致:

    • キャメルケースとスネークケースの混在: Pythonでは snake_case が一般的ですが、AIが camelCase を使っている場合など。
    • 既存の定数や関数名との重複: 既存コードと衝突する名前をAIが使ってしまうと、予期せぬ挙動を引き起こします。

    見抜き方: プロジェクトのコーディング規約(lint設定など)と照らし合わせます。特に、AI生成コードが既存のファイルに追記される場合、周囲のコードとの統一感を意識して確認しましょう。

まとめ

AI生成コードのIntentとIntegrationの問題は、見た目の動作だけでは見抜きにくいことがあります。 しかし、「プロンプトとの差分チェック」「影響範囲の意識」「lintツールの活用」「型ヒントや規約との比較」といった具体的なサインと見抜き方を知ることで、これらの問題を早期に発見し、手戻りを最小限に抑えることができます。 次の演習では、具体的なPRを使ってこれらの見抜き方を実践してみましょう。


Intent / Integration の見抜き方 | バイブコーディング実践編 - AI研修