はじめに
さて今年の2記事目の投稿になります渡邊です。(諸般の事情により今年はいっぱい登場します・・・!)
皆さん、生成AIは活用されていますか?私は普段コーディングをする人ではないので、アイデアを出したい時や言葉が浮かんでこない時にChatGPTさん(正確に言うと、私が聞きたいことをChatGPTさんに聞いてくれる夫)に助けてもらう、というのが主な生成AIとのお付き合いです。先日は電車の中で、隣に座った人が「退職しますメールへの返信」をChatGPTさんに書いて貰っているのを目撃しました。「もっと泣ける感じで」とかいうリクエストにもちゃんと答えてくれていました。素晴らしい!
生成AIを活用する際に気を付けたいリスク
生成AIにより業務効率が劇的に向上すると言われていますが、リスクについても注意したいところ。生成AIを活用する際に気を付けたいリスクを以下に纏めてみました。
AI倫理の問題
バイアスされたデータを学習した生成AIにより、生成されたデータに差別的な表現や極端な思想などが含まれてしまうことがあります。
虚偽情報が混入する問題
AIが誤ったデータを生成してしまうことがあります。Qiitaのコミュニティガイドラインにも、今年から「AIが生成した内容は正確性を確かめよう」と書かれていますね。
著作権やライセンス侵害の問題
コピーレフト系ライセンスのOSSのソースコードを学習した生成AIが、OSSのコード(またはその一部)を「コピー」してコードを生成するかもしれません。
OSSコンプライアンスについて活動している私としては、「ライセンス侵害」が気になります!!
マイクロソフト社の Copilot Copyright Commitment
マイクロソフト社は、著作権侵害により訴えられてしまうかもしれないというユーザーの心配を払拭するため、「Copilot Copyright Commitment」の中でこのように述べています。
(略) 第三者がマイクロソフトの Copilot または Copilot が生成する出力結果を使用した法人のお客様を著作権侵害で訴えた場合、お客様が製品に組み込まれたガードレールとコンテンツフィルターを使用しているという条件の下で、マイクロソフトはお客様を弁護し、訴訟の結果生じた不利な判決または和解により課された金額を支払います。
ユーザーとしては大変ありがたい&安心できそうなステートメントではありますが、「お客様が製品に組み込まれたガードレールとコンテンツフィルターを使用しているという条件の下で」とある以上、100%なんでもカバーしてくれるという性質のものではないでしょうし、ユーザー側でも合理的な範囲内で自衛しておく必要がある、と言わざるを得ないでしょう。
生成AI活用に伴うリスクを軽減するTips
Suggestions matching public codeの設定
GitHub Copilot には、GitHub のパブリックコードと一致するコードをフィルタリングする機能があります。この機能が有効になっている場合、周囲の約150文字分のコード候補が、GitHub上のパブリックコードに一致していないかをチェックしてくれます。このフィルタリング機能はSettingから有効 / 無効を切り替えることができます。意図しないライセンスのOSSの一部が混入するリスクを減らすことができるかもしれませんので、ライセンス違反のリスクが心配な方は活用してみると、良いかも。
タグ付け
「自分で書いたオリジナルのコード」と「生成AIを活用して書いたコード」を明確に区別するべく、タグ付けなどしておくことで、万が一、後からAIが生成した部分のコードを置き換えなければならなくなった時に役立ちます。タグ付け以外にも、ファイル単位で分けておくという方法もありますね。
各種解析ツールの活用
フィルタリングを有効にしていたとしても、本当に大丈夫・・・?と心配になる場合は、AIが生成したコードをプッシュする前に、静的解析ツールを活用するのも一案です。SAST (Static Application Security Testing)ツールやSCA (Software Composition Analysis)ツールの活用により、セキュリティリスクやライセンスコンプライアンスリスクを低減することができます。
おわりに
生成AIの活用と並行して、著作権の保護やユーザーの心理的安全を高めるような、技術面での進化が進んでいくと良いですね。これからに期待したいところです。
English Summary
Generative AI is getting more populer. We need to understand there are many risks to use generative AI for your development. I recommend you to use Suggestions matching public code setting(only on Github Copilot), tagging, using static analysis tools to reduce your risks.