生成 AI は新たなテクノロジーのゴールド ラッシュを引き起こしました。自然言語コンテンツやビジュアル アートを生成する AI ツールに多くの注目が集まっています。テクノロジー業界では、特にAI コーディング ツールへの関心が高まっています。チャットボットに目的のアプリケーションを説明するのは、魅力的であると同時に恐ろしいことであり、数秒後に実行可能コードの形で銀の大皿に渡されるだけです。

周知のとおり、このテーマに関しては、特にマネージャー、コンサルタント、技術専門家の観点から、多くの講演や執筆が行われています。だからこそ、私たちはすでに実際に AI を使ったプログラミングを行っている開発者がこのテーマについて何と言っているか知りたかったのです。

Gen AI を使用したプログラミング アプローチ

私たちが話を聞いた開発者は、 ChatGPTまたは GitHub Copilot を使用しています。どちらのツールも、自然言語命令に基づいてコードを生成できます。ただし、Copilot (およびその実験的な後継者 Copilot X) は、会話モデルを一歩超えています。これらは、開発者が現在取り組んでいることを「予測」するオートコンプリートを備えた一種の強化された IDE として機能します。

Croquet.io の共同創設者兼チーフ アーキテクトである Vanessa Freudenberg は、日々の業務で GitHub Copilot をVisual Studio Codeと組み合わせて使用​​しています。開発者はlet x = this.leftMargin + this.width / 2;実際の例を使用して主な利点を説明します。と書くと、次の行が自動的に提案されます。 let y = this.topMargin + this.height / 2; AI は、「 width 」と「 left 」を「 height 」と「 top 」に置き換えるべきであることを認識しています。これにより、入力する手間が大幅に省けます。」

NetBeez の共同創設者兼 CTO である Panickos Neophytou 氏も、Copilot X と ChatGPT の日常ユーザーであることを明らかにし、AI ツールを使用して既成概念にとらわれずに考えるための 2 つの異なるアプローチについて説明しています。 1 つ目は体系的です。「特定の入力、予想される出力の例、および暗黙的な結合を備えたデータベース テーブルを含む関連するデータ モデルを含む、明確に定義された関数を説明します。 AI は一般的に関連性を推測できます。」そうは言っても、CTO が経験から知っているように、よりカジュアルな方法でも良い結果が得られる可能性があります。「タスクを実行しているときに、頭に浮かんだ質問をするだけです。経験豊富なエンジニアが隣に座って質問に答えてくれるようなものです。」

開発者がどの方法を使用するかに関係なく、ソフトウェア プロバイダー CodeSee の創設者兼 CEO である Shanea Leven 氏が認めているように、Generative AI を適切に制御するにはコツが必要です。「適切な動詞と説明を選択することは、適切なプロンプトを作成するために不可欠です。」

AI を使用したプログラミング – 利点

以下に、 生成 AI ツールがソフトウェア開発者の日常生活をサポートできる使用例をいくつか示します。

コードからドキュメントを生成する

ソフトウェアのドキュメントは通常、かなり構造化された形式であるため、Web コンサルタント会社 Love2Dev の創設者である Chris Love 氏が次のように指摘しているように、AI はこの分野でうまく機能します。これらは通常、手動で完了するには時間がかかるタスクです。 AI を使えば、それは 1 ~ 2 秒の問題です。」

ドキュメントからコードを作成する

この概念は裏返すこともできます。AI はコメントやドキュメントに基づいてコードを生成することもできます。次のようなコメント:

// get file name from our url

たとえば、GitHub Copilot の場合、次の出力が得られます。

let fileName = window.location.pathname.split ("/").pop();

「私だったら、おそらくもう少し違う書き方をしたでしょう。私はただの正規表現好きです」とフロイデンバーグ氏はコメントし、さらに次のように付け加えています。単に時間を節約するだけではありません。AI を通じて、自分では思いつかなかったような熟語を思いつくこともあります。」

解決された問題

開発者は、 常に車輪を再発明することが自分たちの仕事の一部であることを知っています。また、すでにどこかに存在していることがわかっている問題の解決策に取り組むのはイライラすることもあります。ソフトウェア プロバイダー Rise8 のエンジニアリング プラクティス リードである Jeff Wills 氏によると、これらのタスクは生成 AI のサポートを求めています。その後、Copilot が自動的にHaversinus アルゴリズムを見つけて、関連するコードを生成します。」

ソフトウェアの専門家によると、このアプローチは、AI 生成コードの代替手段が包括的なライブラリをアプリケーションに追加する場合に特に実用的です。「完全なジオメトリ ライブラリをコードに挿入すると、コード ベースが肥大化します。本当にこの 1 つのアルゴリズムだけが必要な場合、これは意味がありません。したがって、残された選択肢は 2 つあります。アルゴリズムを自分で書くか、ChatGPT または Copilot を使用してサポートするかのどちらかです。」

コードを更新またはクリーンアップする

一方、Love 氏は、生成 AI ツールがすでに作成されたコードを更新するのに特に役立つと考えています。「私は古い Node.js モジュールを更新するために ChatGPT を使用しました。以前はそんな時間はありませんでした。」

プログラムの高速化 (?)

AI を使用したプログラミングは、開発作業もスピードアップします。少なくとも、会話相手はそう認識しています。たとえば、「AI のおかげで、より良いコードをより速く書くことができると思います」とラブ氏は言い、次のように述べています。「それを定量化するのは比較的難しいですが、私個人としては、それを掴んでください。」

また、ウィルズ氏は、考えられる解決策をより迅速に繰り返すことができると感じています。「作業がスピードアップするだけでなく、より多くの解決策を検討することもできます。結局のところ、メリットがあるのは時間構造だけではなく、品質にもあります。」

AI を使用したプログラミング – 落とし穴

ソフトウェア開発分野における生成型 AI に対する一般的な熱意にもかかわらず、専門家は AI システムにはさまざまな落とし穴があることを認識しています。

AI を使用したプログラミング – 基本がないわけではありません

AI チャットボットが「魔法」のように見えても、望ましい結果を生み出すためには、できるだけ具体的な入力が必要です。

Web デザイン会社の CEO、リアム・エドワーズ氏は次のように説明します。「現時点では、プログラミングの問題についてできる限り多くの情報をツールに提供する必要があります。たとえば、「ボタンの背景を白にするカスタム CSS コードを書いてください」と指示すると、機能する可能性のあるコードが得られます。 「ボタンの背景を白にするカスタム CSS コードを書いてください (ボタンのクラスは .button)」というプロンプトは、より正確な出力を提供します。」

エドワーズ氏の意見では、これは AI を使用したプログラミングに関して重要な点を強調しています。「これらのツールを最大限に活用するには、経験とノウハウが必要です。コーディングが苦手なユーザーは、Generative AI の使用に時間がかかり、最終的に提供できる品質は低くなります。」

単純な作業が好ましい

Web デザインおよび開発会社 Brain Jar の CTO である Peter Surowski 氏も、コーディング目的で AI ツールを使用していますが、それを大局的に次のように述べています。何かを設定します。または、特定のプログラミング言語でのswitchステートメントの書き方を突然忘れてしまったとき。それを超えるタスクには、生成 AI は役に立ちません。」

また、Leven 氏は現在、ソフトウェア開発における Gen AI の仕事の範囲は限られていると考えていますが、将来的にはこれが根本的に変わると強く予想しています。「本当の付加価値は、企業の特定のコード ベースについて質問できるようになったときに生まれます。実際の仕事はAIに任せましょう。これは本当の転換点になるだろう。」

テストは必須です

現在、ほとんどのソフトウェア開発チームは、コードが実稼働環境に入る前に広範な自動テストを受ける必要があるシステムに依存しています。現時点では、AI が生成したコードも例外ではありません。

これ自体はデメリットではありませんが、テクノロジーが達成できることに対して非現実的な期待を抱いている人にとっては失望を招く可能性があるとラブ氏は強調します。「もちろん、AI が生成したプログラム コードを十分にレビューしてテストする必要もあります。これまで、Stack Overflow に書かれていることを正しいものとして受け入れてきた開発者が多すぎます。 ChatGPT でも状況は変わらないはずです。」

ChatGPT や GitHub Copilot で生成されたコードを単純にコピー&ペーストするのは簡単ではありません。それどころか、「ほとんどの場合、コードを少し改良する必要がありますが、少なくとも根本的に書き直す必要はありません」と Neophytou 氏は言います。

セキュリティに気を配る

プログラミングに新しいテクノロジーが使用されると、必然的に悪意のある攻撃者の標的になります。その結果を見積もることは困難です。最近の例では、セキュリティ研究者が ChatGPT 幻覚を介して悪意のあるコードを拡散する方法を発見しました。

ある意味、Generative AI の現在の制限は、組み込みのセキュリティ障壁として機能します。ラブ氏は次のように述べています。「トークンまたはプロンプト/レスポンスのサイズ制限は、開発者がすべてを小さな塊でチェックすることを強いられるため、悪意のあるコードに対する一種の保護を提供すると思います。 」 (FM)

この投稿は、米国の姉妹誌 Infoworld.com の記事に基づいています。