GitHub Copilot~GitHubユーザーが知っておくべき AI×セキュリティの最新動向~
はじめに
最近話題のChatGPT、ご存じの方も多いのではないでしょうか。ChatGPTとは、人工知能を使ったチャットツールで、まるで人間同士が会話をしているかのようにAIと自然な対話ができるツールのことを指します。
例えば、「本ホワイトペーパーのタイトルを使ってセミナー用の集客メールの内容を考えてください」とChatGPTにチャットを送るだけで、AIがメールの内容を考えてくれます。他にも、詩や短歌、小説などを作成することも可能です。
ChatGPTの登場を契機に、ドキュメント生成や画像生成、音声編集など50以上の多様なカテゴリで、1,500以上のAIツールが登場していることからも、AIブームが巻き起こっていることが伺えます。
そんな中、GitHubからも"GitHub Copilot"というAI機能が登場しました。副操縦士(Copilot)として開発を支援するAI機能となっており、ソースコードの生成に特化したAI Botです。コンテキスト情報を基に次の行のソースコードを自動で提案してくれるという、開発者にとって最高の手助けツールとなっています。
目次
- Copilotでの開発例 - GitHubによるシミュレーション
- Copilot導入による業務変化
- GitHub Advanced Security - GitHubのセキュリティ機能
1. Copilotでの開発例 - GitHubによるシミュレーション
WEBアプリケーションでの計算機アプリ作成を例に、GitHub Copilot をシミュレーションしてみます。簡単な四則演算の部分はすでに実装されており、ここに指数関数と三角関数を実装していく様子を見ていきましょう。
まずはボタンを追加します。こちらは数字のボタンや四則演算の割り算/掛け算を表示している部分です。
最下部に新しくボタンを追加してみます。
従来のやり方では、上部の必要な部分をコピー&ペーストし修正、指数関数の演算の書き方を知らない場合は調べるなどの作業が発生します。
しかし、GitHub Copilotで開発をする際は、「指数関数」とコメントし改行するだけでCopilotがソースコードを提案してくれます。
開発者はTabキーを押し、ソースコードを承諾するだけです。本来であれば、調べないと書くことができなかった演算の部分や上付き文字の記載が一瞬で書けます。
続いて、三角関数とコメントを書きEnterを押すと提案されるので、Tabキーを押して承諾します。
さらにEnterを押してTabキーを押すと、サイン、コサイン、タンジェントと簡単に実装することができました。
ボタンを追加した部分を更新してみると、4つボタンが増えているのが確認できます。先ほどはボタンの表示部分を作成したので、続いて中身である計算の部分を作成していきます。
早速、Copilotが自動で判断して指数関数の計算の部分を表示してくれています。内容を確認し、Tabキーを押して承諾していきます。
Copilotの提案が想定していたものと違っていた場合は、手入力で操作します。ここでは、"Sin"まで入力することでこの後の部分が提案されました。
ここでは、"b"という変数が不要なため削除しました。Copilotの提案するソースコードが全て正しいとは限らないため、開発者は練習をする必要があります。
Copilotはファイル内のデータの一部など周囲のコンテキストを基に提案を行うため、コサイン(Cos)、タンジェント(Tan)の行に関しては、先ほど修正した部分が既に反映され一つの変数になっている事が確認できます。
今回実装する機能とは関連していませんがCopilotの活用例として、うるう年の判定を行う計算をしてみます。うるう年判定用の計算を行う関数を作るために、"うるう年判定"とコメントに記載すると" LeapYear "という関数名が表示され、その後EnterキーとTabキーで簡単に開発が進められます。
うるう年が4年に1度というのはおおよその人が知っている事実ではありますが、100の倍数の時はうるう年ではないこと、しかし400の倍数の時はうるう年であること、を知っている人は少数だと思います。ソースコードを書くタイミングで調べる事が多いとは思いますが、このような部分に関しても調査の必要がなくなり開発の作業に集中することができるのがCopilotの強みといえます。
2. Copilot導入による業務変化
Copilotの導入により実際の業務がどのように変化したのかを下の表にまとめました。
Copilotがある場合は、関数リファレンスの調査に充てていた時間が不要となり、コメントにより自動提案が可能になります。また、大量にコピー&ペーストで対応していた作業も不要となり、Tabキーを押すだけの作業に変わります。
また、言語の理解が必須ではなくなります。Copilotの学習データは膨大で、言語やパッケージの情報が含まれているため、開発者は本来の開発作業に集中できます。
Copilot導入において注意すべき点
Copilotは、GitHub上に公開されたパブリックのリポジトリデータを使用して学習をしており、例えばJava・JavaScript・Pythonなどのメジャーな言語は学習データが豊富にあり、より優れたパフォーマンスが可能となります。しかし、マイナーな言語に関しては、学習データが少なくパフォーマンスが低くなります。
開発者側は、生成されたコードが正しいものかどうかをきちんと判断する必要があること、Copilotが入力したコード以外で開発者自身が作成したコードも含めて品質やセキュリティのチェックが必要となります。
現状、AI Copilotに全てのソースコードを作成してもらうことは難しいため、従来通りのセキュリティチェックは欠かせません。
3. GitHub Advanced Security - GitHubのセキュリティ機能
開発者がよく使用するセキュリティツールとして次の4つが挙げられます。静的解析(SAST)、動的解析(DAST)、ソフトウェア構成分析(SCA)、対話型アプリケーションセキュリティテスト(IAST)です。
GitHubでは、SASTとSCAの2つが機能として実装されています。この2つのツールは開発者がコードのセキュリティを確保するために使用するテストツールです。
\GitHubのSAST、SCA機能とは?/
\『GitHubユーザーが知っておくべき AI×セキュリティの最新動向』続きはこちら/
\動画で解説!『GitHubユーザーが知っておくべき AI×セキュリティの最新動向』を視聴したい方はこちら/