KNOWLEDGE - COLUMN ナレッジ - コラム

進化を遂げるAIプログラマー 「GitHub Copilot」

コラムイメージ

関連するソリューション

業務改革

AI

IDアメリカ
ハムザ・アフメッド顔写真

こんにちは。IDアメリカのハムザです。

GitHub Copilotとは

GitHub Copilotは、開発者がソフトウェアプロジェクトをホスト・管理するためのプラットフォームであるGitHubのAIを活用した新しいアシスタント機能です。機械学習を利用して、コードスニペットの提案、ファイルテンプレートの生成、コード内のエラーの特定など、開発者のコーディング作業を支援します。この機能は、開発者がより迅速かつ効率的にコードを書くことを支援し、繰り返し行われる手作業の必要性を減らすことを目的としています。CopilotはGitHub独自のコードベースに基づいており、基盤となるAIモデルはオープンソースコードとユーザーのコードベースに対して継続的にトレーニングされています。
 
また、自然言語処理(NLP)を用いてコードの文脈や開発者の意図を理解することで、より正確な提案を行うことができます。さらに、コード補完という機能を使い、コード内の次の単語を提案することで、ユーザーがコードを完成させることができるようになっています。

業界の人材不足

イメージ画像

現在、世界中の多くの国でソフトウェア開発者が不足しています。この不足は、さまざまな業界でテクノロジーの利用が進んだ結果、ソフトウェア開発への需要が高まっていること、そして、募集ポジションを埋める有能な候補者が不足していることなど、さまざまな要因が重なって生じています。

例えば、労働統計局のデータによると、コンピュータ・情報技術職の雇用は2019年から2029年にかけて11%増加すると予測されており、全職種の平均よりもはるかに速いスピードで成長しています。そして、ソフトウェア開発者、アプリケーション、システムソフトウェアは、雇用の伸びが最も高いと予測される職業の一つです。求人検索サイト「Indeed」が行った調査によると、ソフトウェア開発者の求人情報は2015年から2019年にかけて34%増加しましたが、その求人への応募者数は6%の増加にとどまっています。さらに、イギリスの調査会社Tech Nationの調査によると、イギリスでは2014年から2019年にかけてデジタル技術系の求人が40%以上増加し、その大半がソフトウェア開発系の求人であることがわかりました。

この不足の理由の1つは、技術変化のスピードが速く、開発者が常に新しいスキルや技術を習得する必要があることです。このため、企業が必要とする特定のスキルや経験を持つ開発者を見つけることが難しくなっている可能性があります。もう一つの理由は、ソフトウェア開発が高需要・高収入の分野となり、人材獲得競争が激化していることもあります。このため、企業は優秀な開発者を見つけ、引きつけることが難しくなっています。さらに、COVID-19の大流行により、デジタル化への移行が加速し、ソフトウェア開発やテクノロジーサービスへの需要が高まったことも、人材不足の一因となっています。

この開発者不足の結果、多くの組織が、アウトソーシング、リモート開発者の雇用、GitHub CopilotのようなAI搭載ツールを使ってコーディング作業を支援し、既存の開発者の生産性を高めるなどの代替ソリューションに目を向けています。

//function that connects to the database
 ConnectToDB()
	{
    	//create a connection string
 connectionString = "Data Source=.;Initial Catalog=CoPilotTest;Integrated Security=True";
    	//create a connection object
    	SqlConnection connection = SqlConnection(connectionString);
    	//open the connection
    	connection.Open();
    	//create a command object
    	SqlConnection connection = SqlCommand("SELECT * FROM dbo.Test", connection);
    	//create a data reader object
    	SqlDataReader reader = command.ExecuteReader();
    	//read the data
 (reader.Read())
    	{
            Console.WriteLine(reader[0].ToString());
    	}
    	//close the connection
    	connection.Close();
    	}
GitHub Copilot は、最初の行で書かれたコメントからからこのコードスニペットを作成し、さらに別の候補を表示して選択できるようになっています (ただし、このプロンプトから提案されたものはほぼ同じものでした) 。クラスの名前などからも、それに該当するコードを出力することができますし、プログラマーがコードを理解するのに役立つコメントも書き出すこともできます。こちらのリンク で、より多くの動作例を見ることができます。

ペアプログラミングとGitHub Copilot

イメージ画像

Vajrapani666, CC BY-SA 3.0 via Wikimedia Commons

GitHub Copilotは、開発者のコーディング作業を支援するために設計されており、ペアプログラミングのワークフローの一部として使用できる可能性があります。ペアプログラミングとは、2人の開発者が同じコードに取り組むソフトウェア開発手法のことで、1人がコードを書き、もう1人がレビューやフィードバックを行います。

GitHub Copilotは、コードを書いている開発者が、コードスニペットの提案を受け、ファイルテンプレートを生成し、エラーを特定するために使用できます。これにより、コーディングプロセスのスピードアップと手作業の繰り返しを減らすことができ、もう一人の開発者はコードのレビューとフィードバックの提供に集中できるようになります。

さらに、Copilotは、両方の開発者がコードベースを素早くナビゲートし、作業中のコードのコンテキストを理解するために使用することもできます。
 
特筆すべきことは、ペアプログラミングのツールとして特別に設計されているわけではなく、ペアプログラミングでの使用はまだ実験的なものであるということです。提案内容が必ずしも2人目の理解や好みと一致するとは限らないので、ペアプログラミングでの利用は少し難しいかもしれません。また、先に挙げた透明性や解釈可能性に関する懸念は、この場合にも当てはまるかもしれません。2人目の人がAIによる提案を理解し、信頼することが難しくなるかもしれないからです。

GitHub Copilotの懸念点

GitHub Copilotや、より一般的なソフトウェア開発におけるAIの使用については、いくつかの懸念が指摘されています。
 
  • CopilotのようなAIを搭載したツールは、開発者が基礎となる概念を深く理解せずにコードを書くことを容易にする可能性があります。その結果、コードのバグや脆弱性が増え、長期的なソフトウェアの保守や更新が困難になる可能性があります。
  • AIを搭載したツールは、技術が高度化し、より多くのタスクに対応できるようになると、人間の開発者の仕事の数を減らすことにつながる可能性があります。
  • AIモデルの学習に使用する学習データに偏りが生じる可能性があり、それによってAIが偏った判断や推奨をする可能性もあります。これは、機密性の高いデータを扱う場合や、ヘルスケアや金融などの分野で考慮すべき特に重要な問題です。
 
さらに、AIモデルの透明性と解釈可能性も懸念されます。モデルが複雑で、意思決定プロセスが透明でないため、ユーザーはなぜある提案がなされたのか、あるいはエラーが確認されたのかを理解することが難しく、システムに対する信頼が低くなる可能性があります。
 
GitHubは、研究開発を通じて、またユーザーが経験をカスタマイズできるオプションを提供することで、これらの懸念に積極的に取り組んでいることは注目に値します。

GitHub Copilotが収集するデータ

イメージ画像

Ramiro Gomez, CC BY-SA 2.0 via Flickr

Copilotを利用する際の懸念事項のひとつに、GitHubが知らないうちに書かれたデータを利用しているのではないかということです。GitHubのプライバシーポリシーによると、GitHubは「ユーザーエンゲージメントデータ」を収集しており、これにはどのような提案が受け入れられ、拒否されたかの情報が集められています。また、レイテンシーやエラー、遅延などのパフォーマンスデータも収集しています。収集されたデータのほとんどは、アルゴリズムを改善するためだけに使用され、第三者に販売することはないようです。提案されたコード以外で書かれたものは収集しないけれども、どのようなコードスニペットが採用され、使用されたかという情報があれば、どのようなプログラムが書かれているのかが分かってしまう可能性もあります。

収集される情報は比較的安全だと思われますが、それでもプライバシーポリシーに厳しい企業にとっては抑止力になるかもしれません。特にGitHub Copilotはオフライン環境では利用できないため、活用できない企業もあるかもしれません。オフラインで活用できるGithub Copilotであればよいですが、現在の時点では、GitHubはそのような発表はしていません。

次回のアップデート

2023年頃に予定されている次のアップデートでは、プログラマーがGitHub上の公開リポジトリで類似のコードを見つけるための機能が追加されることです。これは、提案されるコードの偏りや透明性についての懸念に対処するためのものであると思われます。コードを書いた後、似たようなコードを持つソースや、提案の生成に使われたソースが自動的にリストアップされるようになります。これにより、コードスニペットがどこから来たのか分からないという懸念が解消されるはずです。また、開発者が他の開発者からインスピレーションを得るのにも役立つと思います。

GitHub Copilotの将来

GitHub Copilotの将来は、基礎となるAIモデルやアルゴリズムのさらなる開発と改良、および追加機能や性能の統合が必要になると思われます。
 
Copilotの発展分野の1つとして、コードのリファクタリング、デザインパターンの特定、自動テストの実行など、より高度なタスクを支援する機能が考えられます。これにより、開発者にとってより強力なツールとなり、より優れた、より効率的なコードを書くことができるようになるでしょう。
 
Copilotを他の開発ツールやプラットフォーム(統合開発環境(IDE)、継続的インテグレーションとデリバリー(CI/CD)システム、プロジェクト管理ツールなど)と統合することも、開発の一分野として考えられます。これにより、開発者がより便利に使用できるようになり、ワークフローを改善できる可能性があります。
 
また、GitHub Copilotは、教育など他の業界でも利用される可能性があり、コーディングやソフトウェア開発の教育や指導に活用できます。教育現場でも、コードの誤りやプログラムの改善点を指摘することで、生徒を支援することができます。リファクタリングは、プログラミングの中でも習得が難しい分野なので、AIによる支援が有効かもしれません。しかし、この技術は、生徒がCopilotを使うことで、自分自身のプログラミングスキルを向上させないという懸念もあります。
 
なお、これは現在の技術や企業の動向や能力に基づいた私の推測であり、実際の製品の将来は、企業の戦略や市場の需要によって異なる可能性があることをお断りしておきます。

まとめ

2022年は、テキストから意図を理解できるOpenAIの進展や、自動運転車など、AIが大きく活躍した年でしたが、AIがまともなレベルでプログラミングができるようになったことは、業界に衝撃を与えました。これまで、AIがプログラムを書いてくれるようになるには何十年もかかると思われていましたが、その未来は案外近いかもしれないですし、開発者不足が叫ばれる中、短期的には重要な役割を果たすことになるかもしれません。長期的には、ユーザーから与えられた説明文からアプリを作ることができるようになる可能性もありますし、この技術をこれからも注目することは重要だと思います。

当サイトの内容、テキスト、画像等の転載・転記・使用する場合は問い合わせよりご連絡下さい。

エバンジェリストによるコラムやIDグループからのお知らせなどを
メルマガでお届けしています。

メルマガ登録ボタン


ハムザ・アフメッド

IDアメリカ

この執筆者の記事一覧

関連するソリューション

業務改革

AI

関連するナレッジ・コラム

AI倫理~AIとの向き合い方と制度~

生成AIのトレンド「LLM+RAG」を解説

画像生成AIでキャラクターを作ってみる version 2