見出し画像

GitHub Copilot Xに向けて、現在のおさらい

GitHub Copilot X

 GitHub Copilot は、OpenAI社が開発したGPT-3を利用して構築された、AIを利用したコード作成補助ツールです。
GitHub Cpilotを適用した開発環境で、コードを書き始めたときに自動的にコードを予測し補完を行ったり、入力されたコメントをもとにコードを自動生成して、提案を行う機能が搭載されています。
 2022年に一般公開されてから、2023年にはビジネス向けのGithub Copilot for Businessの提供が始まりました。提案コードの品質向上や企業内のポリシーやプロキシーをサポートし、各企業に合わせた環境での利用が可能となりました。

 そんなGitHub Copilotの次期ビジョンとしてGitHub Copilot Xが発表されました。現在限られたユーザに限定公開をしている様々機能は、将来コーディングだけでなく、開発のワークフロー全体に対して利用できる機能へ拡張されていくようです。

 GitHub Nextでは現在利用可能な機能やWaitListに登録できる機能が一覧で表示されています。なかには今すぐにでも利用が楽しみな機能から、今後の開発方法が変わるのではないかとワクワクするような機能が掲載されています。興味がある方は是非こちらのページを確認してみてはどうでしょうか。

GitHub Copilot

 さまざまな機能が追加されているGitHub Copilotですが、まず基本的な動作を確認し、今後のシステム開発の効率化のための調査を行いました。    

前段準備:GitHub Copilot を導入したVisual studio code を準備しました。  

 今回はVScode上でjavaでプログラムを作成します。まず簡単な動作確認として、ソースコード内でコメントを記載したときの動作を確認していきます。「2つの文字列が同じか判定する」とコメントを記載すると、予測されたコードが表示されます。

コメントから予測されてコード

灰色の部分がコメントを入力して出現した予測コードです。
 以下の例では、ざっくりした説明と詳細な説明ではどのような違いが出るか確認していきます。まず、やりたいことである「2つの数値が同じか判定するメソッド」というコメントを入力します。

簡単な内容

生成されたコードを確認すると、数値が等しければTrueを返す単純なコードになっています。次に「2つの文字列が数値であるか確認して、等しい値か確認する」をコメントに入力します。

ある程度詳しく書いた場合

Try-Catchで囲まれたparseIntで文字から数値へ変換して数値判定を行っています。2つのコードを見比べると、コメントに記載されたことを満たすようにコードを作成されていることがわかります。より良いコードを予測してもらうには、コメントに細かく情報を記載することが重要です。またコメントの記載方法は通常の1行のコメント文でも、JavaDocのようなコメント文でも候補が表示されます。こちらの場合はメソッドの引数などを指定しているため精度が高い場合もあります。

JavaDocの形式で記載した場合

 また予測に対して一部変更などを加えたい場合には、予測された文字列について、一文字ずつ受け入れたり、変更していったりすることも可能です。

予測内容の受け入れ

この例では、文字列のリストがStringの配列になっていますが、List<String>を利用したいため手前のメソッド名までをAcceptして、List<String>を自分で入力します。すると後続の処理が以下のように変更されます。

修正後のコード

 メソッドからの記載ではなくコードの途中のコメントからも生成可能です。先ほどのコードの検索文字列をプロパティファイルから読み込むように指定しました。

メソッド内のコメント

この場合、コメントから予測したコードが推測として出てきますが、1行ずつの場合が多いようです。イメージとしては、通常のコーディングの予測変換をより強力にした機能になります。
そのため、次に自分がやらなければいけないことを理解していなければ利用することは難しいです。(自動的に次の行が推測されることがあるが、やりたいこととマッチしているとは限らないため)

今後に向けて

 GitHub Copilotはコードを記述する時間と労力を節約できる強力なツールです。今回基本的な使い方である、コメントからのコード生成を試しました。現状ではすべてを託すのではなく、副操縦士として一緒にコーディングをしていく頼もしいパートナーですが、いずれはシステム開発を行う上で、詳細設計の情報からコードが出力される未来も遠くないかもしれません。