AI TECHNOLOGY

生成AIを使った開発(AIによるコーディング支援)の使いどころと注意点

生成AIによるコーディング支援は、コードの下書きや説明、テストの作成で手間を減らせる一方、もっともらしい誤り、セキュリティ、著作権、情報の扱いに注意が要ります。使いどころと、人のレビューを中心にした使い方の決まりを説明します。

AIの技術(AI TECHNOLOGY)のコラム

この記事の要点

  • 生成AIは、定型的なコードの下書き、既存のコードの読み解き、テストや説明の文書の作成など、人が確かめやすい作業で効果を出しやすい道具です
  • 出力には、動くように見えて誤っているコードや、脆弱性を含むコードが混ざることがあるため、テストと人のレビューを通すことを前提にします
  • 社外に出せない情報を入力してよいか、公開されているコードと一致する出力をどう扱うかを、使うサービスの設定と社内の決まりで決めておきます

生成AIによるコーディング支援は、定型的なプログラムの下書き、既存のコードの読み解き、テストや説明の文書の作成など、人が結果を確かめやすい作業で効果を出しやすい道具です。一方で、出力をそのまま使うと、誤り、脆弱性、権利や情報の扱いの問題を持ち込むおそれがあります。テストと人のレビューを通すことを前提に、使い方の決まりを作って使うのが基本です。

本記事では、開発を担う技術者と、開発を発注・管理する立場の方に向けて、使いどころと注意点を整理します。

AIによるコーディング支援とは

AIによるコーディング支援とは、生成AIを使って、プログラムの作成や修正、説明、テストの作成などを手伝わせる開発の方法です。開発の道具(エディター)の中で、書きかけのコードの続きを提案する形、やりたいことを文章で伝えてコードを書かせる形、複数のファイルにまたがる作業をAIに進めさせる形などがあります。

使い方の形が変わっても、AIが作ったものの正しさを判断し、責任を持つのは人です。この点を最初に確認しておくと、使いどころと注意点の整理がしやすくなります。

使いどころ

生成AIの支援は、正解の形がはっきりしていて、出力が正しいかを人がすぐに確かめられる作業に向いています。

向いている作業使い方の例
定型的なコードの下書きデータの読み書き、入力の確かめ、画面の部品など、よくある形の処理を書かせる
既存のコードの読み解き引き継いだプログラムの処理の流れを説明させ、理解の手がかりにする
テストの作成関数の動きを確かめるテストの案を書かせ、抜けている条件を考える助けにする
書き換えの補助古い書き方を新しい書き方に直す案や、名前の付け替えの案を出させる
説明の文書コードの説明、変更の内容の要約、手順書の下書きを作らせる

反対に、業務の決まりそのものを決める部分、セキュリティの要になる部分(認証、権限、暗号)、大きな設計の判断は、AIの案を参考にしても、判断は人が行います。業務の決まりは、システムの外にある事情で決まることが多く、AIはその事情を知らないためです。

注意点1:もっともらしい誤り

生成AIの出力には、動くように見えて誤っているコードが混ざることがあります。存在しない関数や部品を使う、条件の扱いを取り違える、といった誤りです。生成AIがもっともらしい誤りを出す性質は、ハルシネーションと呼ばれます。

対処の基本は、次の3つです。

  • 出力を、自動のテストで確かめる。テストのない部分にAIの出力を入れるときは、先にテストを用意する
  • 人がコードを読んで確かめる(コードレビュー)。AIが書いたかどうかにかかわらず、同じ基準でレビューする
  • AIが提案した部品やライブラリは、実在するか、提供元が信頼できるか、保守が続いているかを確かめてから使う

もっともらしい誤りの性質と付き合い方は、ハルシネーションのコラムでも説明しています。

注意点2:セキュリティ

生成AIは、学習したコードの中のよくある書き方を出すため、脆弱性のある書き方を出すこともあります。入力の確かめの抜け、データベースへの命令の組み立て方の誤り、秘密の情報をコードに直接書く、といった問題です。

  • AIの出力も、セキュリティの観点からのレビューと、点検の道具(静的解析など)の対象にする
  • パスワードや鍵などの秘密の情報を、AIへの入力やコードに含めない
  • AIに複数の作業を任せる形では、AIが実行できる操作(ファイルの削除、外部への送信など)の範囲を絞り、取り消せない操作は人の承認を経るようにする

Webシステムのよくある脆弱性と対策は、Webシステムのセキュリティ対策の基本を参考にしてください。

注意点3:著作権とライセンス

生成AIの出力が、公開されているコードと同じか、よく似たものになることがあります。公開されているコードには、使う条件を定めたOSSライセンスが付いていることが多く、条件によっては、使う側に表示や公開の義務が生じます。

サービスによっては、この点への対策の機能があります。例えば GitHub Copilot では、公開されているコードと一致する提案をブロックする設定を、個人や組織のポリシーで選べます。一致する提案を許可している場合や、ブロックの設定に対応していない製品を使う場合は、一致したコードのライセンスの種類と、同じコードが見つかったファイルの URL を示す「コード参照」の情報が表示されます。

出典:Finding public code that matches GitHub Copilot suggestions(GitHub Docs)

使うサービスでどの設定にするかを組織として決め、ライセンスの条件が分からないコードを納品物に含めないようにします。オープンソースのライセンスの基本はオープンソースのライセンスと、発注者が確かめることで、開発を外部に頼んだときの成果物の権利の扱いはシステム開発の成果物の著作権は誰のものかで説明しています。権利の扱いは個別の事情で変わるため、判断に迷う場合は弁護士などの専門家にご確認ください。

注意点4:入力する情報の扱い

生成AIのサービスに入力したソースコードや設計書は、サービスの提供者に送られます。入力した内容をサービスの改善や学習に使うかどうか、どこに保存されるかは、サービスや契約の種類によって違います。

  • 社外に出せないソースコードや、お客様から預かった情報を入力してよいかを、契約と社内の決まりで確かめる
  • 使うサービスの利用規約と設定で、入力した内容の扱い(学習に使うか、保存の期間)を確かめる
  • 個人情報を含むデータを入力しない。テストのデータには、架空のデータを使う

外部に開発を頼んでいる場合は、委託先が生成AIを使うか、使うならどのサービスで、どの情報を入力するかを、取り決めておくと安心です。社内の決まりの作り方は社内の生成AIの利用ルールの作り方で説明しています。

使い方の決まりをまとめる

生成AIを開発に使うときは、次の点を決まりとしてまとめておくと、使う人ごとの差を減らせます。

  1. 使ってよいサービスと、組織としての設定(入力の扱い、公開コードと一致する提案の扱い)
  2. 入力してよい情報と、入力しない情報
  3. AIの出力を取り込むときのテストとレビューの基準
  4. AIに任せない作業(業務の決まりの判断、セキュリティの要の部分)
  5. AIに作業を任せる形での、実行できる操作の範囲と承認の手順

決まりは、使い始めてから見直していくものです。使った人の声と、レビューで見つかった問題をもとに、定期的に直します。

当社のご支援

当社は、AIを使った仕組みの設計と開発をソリューション提供でお受けしています。開発の進め方に生成AIを組み込む専任のチームでの開発は、ラボ開発でご相談いただけます。社内で生成AIを使うときのルールづくりから始めたい場合は、無料の生成AIの利用ルール診断もご利用ください。

  • AIによるコーディング支援
  • 生成AI
  • コードレビュー
  • ソフトウェア開発

この記事に出てくる用語

この記事を書いた人

石田 誠 グループCTO

インターネットの黎明期から、ホスティング事業の立ち上げや、インフラ・セキュリティのプロジェクトに携わってきました。現在は、AWS・Azure へのクラウド移行の支援と、業務アプリケーションの要件定義から実装までを担っています。

このコラムは一般的な情報の提供を目的としたもので、個別の状況への助言ではありません。製品・サービスの名前と内容は、記事の更新日の時点のものです。

あわせて読みたい

AIの技術のコラムを見る コラムの一覧に戻る

無料で相談する無料の診断