こんにちは!add more エンジニアチームの森田です。
現在、add moreエンジニアチームではClaude Code のチームプランを契約しており、それぞれが日常的にAIと並走しながら開発するようになりました。生産性は上がった一方で、以前はなかったリスクや注意点も生まれます。
今回は、実際に運用していく中で私が強く意識していることをまとめてみました。
入力情報の取り扱いに注意する
毎日のように、どこかで情報漏洩、不正アクセスのニュースを目にするようになりました。AIを活用する際に特に気をつけたいのが、個人情報、機密情報の管理です。
Claude Codeはプロジェクト内のファイルを参照できるため、.envファイルや認証情報を含むファイルが意図せずコンテキストに含まれてしまう可能性があります。
- 除外ファイル(.claudeignoreなど)の設定をしておく
- 仮にデバッグ目的であっても個人情報やキー情報などが含まれたものをプロンプトに含めない
などの対策をとることで、情報漏洩、不正アクセスのリスクを大きく下げることができます。
必ず差分を確認する
拡張機能等と紐つけしている場合、AIは直接ファイルの確認、修正、保存も行えるようになります。非常に便利だなと思う反面、想定していない箇所を修正している可能性があります。
コードの差分に必ず目を通すようにし、
- 想定外の差分箇所がないか
- 既存のコードと命名規則が揃っているか
- インデントやフォーマットがルールに沿ったものになっているか
を把握しておく必要があります。
Lint、Prettierなどのフォーマッターや、GitHub Copilotといったコードレビューを活用するのも非常に有効な手だと思います。
「動く」のその先
AIは優秀です。ある程度抽象度が高いプロンプトを投げたとしても、それなりに要求に則ったアウトプットを出力します。場合によっては、動作だけでいえば一切の手直しが必要ない状態のものが出来上がることもあると思います。
ですが、それは「優れたコード」ではない可能性があります。
AIは正しく動作するコードを生成することは得意ですが、簡潔さを優先するあまり、読み手への配慮が薄いコードになる傾向があります。リーダブルコードにも「優れたコードとは、他の人が短い時間でそのコードを理解できるものである」とあるように、可読性、拡張性、改修性が高いコードを書くべきです。
他の人とは、新しくプロジェクトにアサインされた作業者、あるいは何ヶ月、何年後の自分自身かもしれません。動作に問題がなかったとしても、いざコードを見ようとなった時に、どのように動作しているのか、なぜその実装になっているかの理解に時間がかかってしまっては本末転倒です。「動いたから」「要件を満たしたから」で終わらせず、誰がみても理解しやすいコーディングを心がけることが重要だと考えています。
const price = isMember
? purchaseAmount >= 10000
? purchaseAmount * 0.8
: purchaseAmount * 0.9
: purchaseAmount;let price;
if (!isMember) {
price = purchaseAmount;
} else if (purchaseAmount >= 10000) {
price = purchaseAmount * 0.8;
} else {
price = purchaseAmount * 0.9;
}(どちらも同じ動作をしますが、下の方が理解しやすいと思います。)
AIは責任を取らない
コードを出力したのはAIかもしれませんが、それをaddしてcommitしてpushしたのは自分です。もし何らかのミスがあった場合、それはAIではなく自分の責任になります。
妥当性があったとしても、もし動いたとしても、AIの生成したコードには全て目を通し、自分自身もそのコードの内容、実装の経緯が説明できる状態でいなければいけません。
まとめ
コードの最終責任は常に作業者にあります。
作業者自身がセキュリティと動作検証の最終的な責任を負う必要があります。そのためには、「なぜそのような実装にしたのか」「他にどのようなアプローチがあるか」などを聞いてみるなど、AIと壁打ちをする習慣を身につけ、知識として自身に残すことが重要です。
小さな意識の積み重ねが、AIと安全に共存するための土台になります。
/assets/images/1130553/original/f75593f8-1631-4828-9e9b-880695b61273.png?1485146218)