AIが開発ツールを進化させる方法

AIが開発ツールを進化させる方法

[[410767]]

GitHub Copilot、DeepDev、IntelliCode、その他のコード中心の機械学習アプリケーションは、開発者がより優れたコードをより速く提供できるように支援できることが実証されています。

新型コロナウイルス感染症のパンデミックによる突然の加速は、ほとんどの企業がデジタル変革に対していかに準備ができていないかを浮き彫りにしました。彼らが依然として直面している最大の問題の 1 つは、「アプリケーション ギャップ」、つまりエンド ユーザーが業務を効率的に遂行するために必要なアプリケーションの不足です。ローコードおよびノー​​コード ツールは、ユーザー インターフェイス (UI) ビルダーとロボティック プロセス オートメーションを通じて、ある程度ギャップを埋めてきましたが、まだやるべきことはたくさんあります。

1 つの選択肢は、機械学習を使用して開発者の生産性を向上させることです。一部の開発者はすでに、基本的なルールベースのツールを使用してコード補完を提供し、メソッドを公開しています。では、公開コードの膨大なデータセットをさらに構築して、一般的な設計パターンがどのように適用されているか、どのようなアルゴリズムがどのような状況で使用されているか、開発者がパブリック API をどのように活用できるかなどを共有してみてはいかがでしょうか。

GitHub Copilot: AI を活用したコーディング アシスタント

GitHub はまさにそれを実行し、OpenAI の Codex 機械学習モデル (おなじみの GPT-3 に似たコード中心の言語モデル) を使用して、コード エディターと連携して作業中に次のステップを提案するサービスを構築およびトレーニングしました。 GitHub はこれを Copilot と呼び、「AI ペアリングプログラマー」と表現しています。これは、Copilot が規範的なツールではなく、共同作業用のツールであることを示す興味深い方法です。

Copilot は、パブリック リポジトリ内の何百万行ものコードでトレーニングされ、Visual Studio Code 拡張機能としてインストールされており、現在のエディター ウィンドウのコンテキスト内で動作し、開発者が入力している内容に基づいて提案を提供し、使用している内容の詳細をフィードバックします。開発者のプライベート コードは、新しいコード サンプルを使用してサービスをトレーニングするために使用されません。唯一のシグナルは、使用しているコードです。

開発者は、Copilot によって生成されたコードが最初から正しいと期待すべきではありません。一方、このタイプのアプリケーションはまだ開発の初期段階にあり、初期のデータセットを超えたトレーニングはほとんど行われていません。 Copilot を使用するユーザーが増え、強化学習の推奨事項の使用方法を Copilot が学習するにつれて、推奨事項は改善されるはずです。ただし、開発者は、使用するコードの部分とその使用方法について決定を下す必要があります。セキュリティ上の理由から、Copilot によって生成されたコードにも注意する必要があります。 GitHub が Copilot のトレーニングに使用したすべてのコードを監査することは不可能です。 Dependabot や CodeQL セキュリティ スキャナーなどのツールを使用した場合でも、悪いパターンやよくある間違いを示す低品質のコードが依然として大量に存在します。

リスクはあるものの、Copilot には興味深いアイデアがいくつかあります。開発者のコ​​メントを取得してコードに変換する方法や、継続的インテグレーション (CI)/継続的デプロイメント (CD) プロセスの一部として使用できるテストを提案する方法などです。継続的インテグレーション (CI)/継続的デプロイメント (CD) DevOps モデルの開発およびテスト部分に AI を組み込むことは、開発者の負担を軽減し、コード開発に集中できるようにするため、理にかなっています。同時に、開発者はこれらのテストが適切であり、適切なレベルのコード カバレッジを提供していることを確認する必要があります。開発者は一度に 1 つのソリューションに限定されず、エディターで結果をページングして、どのソリューションが最適かを確認してからそれを承認することができます。

DeepDev: 開発者向けの新しい AI モデル

Microsoft は、アプリケーション開発者をサポートするために独自の機械学習モデル セットを開発しています。プロトタイプの DeepDev サービスはまだ公開されていませんが、いくつかのドキュメントは利用可能です。公開されている情報によると、DeepDev は GitHub の Copilot と同様の技術を使用しているようですが、おそらくより幅広いモデルセットを使用しているようです。

Copilot と同様に、DeepDev は、ソースコードの理解と使用に重点を置き、オープンソース コードと一般的なドキュメントを組み合わせてトレーニングを受けました。一部のモデルはより一般的で、開発者のソースコード リポジトリでの追加トレーニングが必要ですが、他のモデルは特定の一般的なタスクを処理するように設計されています。

DeepDev にアクセスするために適切な API キーを必要とする開発者は、ツールを独自のコードに組み込む前に試してみることができます。 DeepDev は、Microsoft が独自のツールを機械学習モデルで拡張し、それらのモデルを継続的インテグレーション (CI)/継続的デプロイメント (CD) パイプラインに組み込んで、コードがチェックインされたときにテストを生成できるようにする方法であると思われます。

Intell iSense から IntelliCode へ

AI 支援コーディングは興味深い開発であり、より優れた開発者ツールにつながるはずです。 Visual Studio の IntelliSense や IntelliCode などのテクノロジでは、コード補完やジャストインタイム コンパイル ツールを使用してコードを記述しながらデバッグすることで、すでに開発の効率化が図られています。 IntelliCode は、GitHub をコード品質の指標として使用し、GitHub パブリック リポジトリを使用してコード補完モデルを構築してきました。

シナリオは、あらゆる機械学習コーディング ツールにとって重要です。開発者が API セットを使用する場合、ツールは他のユーザーによる API の使用方法ではなく、開発者による API の使用方法に対応する必要があります。繰り返しになりますが、ツールは開発者が記述したコードに基づいて、メソッドに適切なオーバーロードを提供する必要があります。十分な大きさのトレーニング データセットと応答モデルを用意することが重要です。必要なのは、開発者が他のプロジェクトで同じ間違いを繰り返すのではなく、提供したいものをより早く提供できるようにするツールです。

IntelliCode はおそらく最も成熟した AI アシスタントであり、最も目立たないものです。しかし、IntelliSense の拡張機能のように動作します。開発者はこれを Visual Studio 内で使用するだけでなく、Visual Studio Code 拡張機能としても利用できるため、日常の開発環境の一部として使用できます。標準バージョンに加えて、Microsoft は開発者が今後の機能を試すことができる Insider ビルドも提供しています。現在の Insider ビルドの便利なツールは、特定された API への呼び出し例を表示する Python の API サンプルです。開発者は、別のエディター ウィンドウで人気順にグループ化された呼び出しを見つけることができるため、コードにコピーして貼り付けたり、Visual Studio Code に組み込まれている REPL を使用して開発者に必要な応答を提供する呼び出しを見つけたりして、API の使用方法のガイドとして使用したりすることができます。その他の Insider ツールには、一般的な JavaScript ライブラリの日付/時刻形式を生成する方法と、その表示方法の例が含まれています。

データ変換用のコードを生成する

このような例によるプログラミングは、開発プロセスに AI アシスタンスを追加するもう 1 つの便利な方法です。 Microsoft Research の PROSE (Program Synthesis by Example) は、Excel や多くの Azure および Power Platform ツール、さらに SQL Server でも既に使用されています。 Visual Studio は、これを IntelliCode リファクタリング ツールの一部として使用し、開発者のコ​​ード内のパターンを検出し、再利用できる場所を提案します。また、データを抽出して一貫して変換し、入力を受け入れて期待される出力形式で配信するコードを生成する便利な方法でもあります。

AI 支援開発ツールは、エディターに組み込まれたペアのプログラマーと考えるのが最適です。これは開発者向けのコードを生成するマシンではありません。むしろ、開発プロセスをスピードアップし、エラーを減らし、反復的なタスクを自動化できる提案として捉えてください。開発者のエディターがテストを提案すると、テスト駆動開発の採用に役立ち、予想される出力に基づいて正規表現と変換を生成して、文字列とデータの操作を簡素化できます。

この採用ギャップを克服するには、開発者はコードをより迅速かつ一貫して提供する必要があります。開発プロセスを中断することなく、機械学習を開発プロセスに追加します。 Stack Overflow などのツールは、他の開発者が同じ問題や類似の問題をどのように解決したかの例を提供することで役立ちます。

これらの新しい AI ベースのツールは、文書化されていない何百万行ものコードをすべて解析して理解し、開発者が検索しなくても必要なときに便利なスニペットを見つけることで、さらに一歩進んでいます。開発者が行う必要があるのは、コードを記述し、問題が発生したときに解決策を見つけることだけです。

<<:  2021年世界人工知能会議の結論によって、どのような新しいトレンドが明らかになるのでしょうか?

>>:  カリフォルニア大学バークレー校と他の研究チームは、岩の多い海岸や草原を横断しながら、変化する環境にリアルタイムで素早く適応する新しいロボット動作アルゴリズムを開発している。

ブログ    
ブログ    

推薦する

人工知能はあなたよりも多くの XXX スターを知っている

[[206395]]さまざまな興味の組み合わせに応じて必要な動画を検索できるのは、毎日無数の動画コン...

人工知能と人間の思考の類似点と相違点

人間の思考(合理性や心を含む)とはいっ​​たい何なのかという問いは、哲学者や科学の巨匠たちを常に悩ま...

一般的なスマートカーの7つの技術についてお話ししましょう

ハイテク業界は常に進化しており、毎週新たな革命的な変化が起こっています。当然のことながら、関連するニ...

...

AI教育の知能化、パーソナライゼーション、多様化は今後さらに発展するだろう

人工知能教育は主に、ユーザーの学習行動データを分析・処理することで、パーソナライズされた学習コンテン...

...

MIT: この AI ソックスはあなたの行動を明らかにします | Nature サブジャーナル

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

分散型コンセンサスアルゴリズム: 想像以上に複雑

1. 分散システムの難しさ張大鵬は難しい問題に遭遇した。彼らの会社には貴重なデータを保存しているサー...

...

ビッグモデルの時代、周志華教授の「ラーニングウェア」の考え方を分析:小さなモデルでも大きなことができる

ビッグモデルの時代に入りつつあることは間違いありません。オープンソースやクローズドソースのさまざまな...

...

iOS 18 の新機能がついに公開されました!

今年は生成AI技術が大変人気です。ChatGPTの登場以来、多くの大規模な生成AIモデルが雨後の筍の...

NumPy から直接 RNN を作成するにはどうすればいいですか?

成熟した Tensorflow および PyTorch フレームワークを使用して再帰ニューラル ネッ...

...

...