
関連するソリューション

業務改革

AI
IDアメリカ
ハムザ・アフメッド
GitHub Copilotとは
また、自然言語処理(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
public static void ConnectToDB()
{
//create a connection string
string connectionString = "Data Source=.;Initial Catalog=CoPilotTest;Integrated Security=True";
//create a connection object
SqlConnection connection = new SqlConnection(connectionString);
//open the connection
connection.Open();
//create a command object
SqlConnection connection = new SqlCommand("SELECT * FROM dbo.Test", connection);
//create a data reader object
SqlDataReader reader = command.ExecuteReader();
//read the data
while (reader.Read())
{
Console.WriteLine(reader[0].ToString());
}
//close the connection
connection.Close();
}
ペアプログラミングと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はそのような発表はしていません。
次回のアップデート
GitHub Copilotの将来
Copilotの発展分野の1つとして、コードのリファクタリング、デザインパターンの特定、自動テストの実行など、より高度なタスクを支援する機能が考えられます。これにより、開発者にとってより強力なツールとなり、より優れた、より効率的なコードを書くことができるようになるでしょう。
Copilotを他の開発ツールやプラットフォーム(統合開発環境(IDE)、継続的インテグレーションとデリバリー(CI/CD)システム、プロジェクト管理ツールなど)と統合することも、開発の一分野として考えられます。これにより、開発者がより便利に使用できるようになり、ワークフローを改善できる可能性があります。
また、GitHub Copilotは、教育など他の業界でも利用される可能性があり、コーディングやソフトウェア開発の教育や指導に活用できます。教育現場でも、コードの誤りやプログラムの改善点を指摘することで、生徒を支援することができます。リファクタリングは、プログラミングの中でも習得が難しい分野なので、AIによる支援が有効かもしれません。しかし、この技術は、生徒がCopilotを使うことで、自分自身のプログラミングスキルを向上させないという懸念もあります。
なお、これは現在の技術や企業の動向や能力に基づいた私の推測であり、実際の製品の将来は、企業の戦略や市場の需要によって異なる可能性があることをお断りしておきます。