「動く」ことと「使ってよい」ことは別
AIにコードを頼むと、数秒で、それらしく動くものが出てきます。手作業でやっていた集計が自動化できた、という体験は、とても感動的です。
ただ、仕事でコードを使う時に大事なのは、「動いた」の先にあります。
- 想定外のデータが来た時に、壊れないか
- 秘密にすべき情報が、含まれていないか
- 半年後に、別の人が読んで直せるか
AIが出したコードは、動くことには強い一方で、これらの点は、人が確認しないと分かりません。
AIのコードで、技術的負債が増えやすい理由
「動いているから触れない」システムの改修を依頼されると、大きな負担になっているのは、担当者しか分からない処理、古いライブラリ、ドキュメントの不備、重複したコードの4つが重なっている場合です。こうなると、小さな修正にも時間がかかります。これが、いわゆる技術的負債です。
AIを使うと、コードを作るスピードが上がります。その分、誰も中身を理解していないコードが、短期間で増えてしまうリスクがあります。作る速さが上がるほど、理解しないまま積み上がる速さも上がる、ということです。
レビューで確認する5つのチェック
AIが書いたコードを使う前に、次の5つを確認します。
① 秘密情報が入っていないか
コードの中に、パスワードやAPIキーが直接書かれていないかを確認します。また、AIに相談するためにコードを貼る時、自分のコードに含まれているキーやパスワードを、そのまま貼っていないかも振り返ってください。キーは、貼った時点で他者に渡ったものと考え、必要ならば発行元で再発行します。APIキーの扱いは、APIキーとはで解説しています。貼る前の確認には、AIに貼る前チェックが使えます。
② 実在するものか確認する
AIは、存在しない関数名やライブラリ名を、もっともらしく出すことがあります。使われている関数やライブラリは、公式ドキュメントで実在を確認します。ライブラリは、公開元や、利用されている実績も、確認しておくと安心です。古い書き方(すでに推奨されていない方法)が混じっていることもあります。
③ 想定外の入力に耐えられるか
AIが書くコードは、「正常な入力が来る」ことを前提にしていることが多いものです。次のような場合に、どうなるかを確認します。
- データが空だった時
- 数字を期待しているのに、文字が入っていた時
- 通信が途中で失敗した時
- 外部のサービスが、エラーを返した時
④ テストで動作を確認する
正常な場合・異常な場合・ぎりぎりの場合(上限や下限)の3種類で、実際に動かして確認します。AIにテストを書いてもらうのは有効ですが、「期待する結果」は、人が決める必要があります。
⑤ 自分で説明できるか
最後の、そして最も大事なチェックです。読んで、何をしているか説明できないコードは、採用しない。これを基準にします。分からない部分は、AIに1行ずつ説明してもらい、それでも理解できなければ、使わないか、詳しい人に見てもらいます。
実例で見る:API連携の落とし穴
以前、プログラムのループ処理で、大量のリクエストを一度に外部のサービスに送ってしまい、サービス側からアクセスを制限されたことがありました。外から見ると、システムが突然止まったように見えて、原因の切り分けに時間がかかりました。これは、いわゆるレートリミットに引っかかったケースです。
AIに「全件を取得するコードを書いて」と頼むと、間隔を空けず、連続でリクエストを送るループが書かれることがあります。コードとしては正しく動きますが、相手のサービスの制限は考慮されていません。外部のサービスにつなぐコードは、上限・待ち時間・失敗した時の再試行を、必ず確認してください。