Capgemini Engineering は、世界中の 62,000 人を超えるエンジニアと科学者で構成されており、自動車、電車、飛行機を製造する工業企業から独立系ソフトウェア ベンダーまで、さまざまな顧客向けに製品を開発しています。
そのため、2022 年に AI 支援コード生成ツールが市場に溢れ始めたとき、世界的なイノベーションおよびエンジニアリング コンサルティング会社は注目しました。結局のところ、Capgemini の事業の 5 分の 1 は、デジタル変革イニシアチブの要求に直面している世界中の顧客向けのソフトウェア製品の作成に関係しています。
Capgamini の独自の調査データによると、10 社中 7 社が今後 12 か月以内にソフトウェア エンジニアリングに生成 AI (genAI) を使用する予定です。現在、30% の組織がソフトウェア エンジニアリングにこれを実験しており、さらに 42% が 1 年以内に使用することを計画しています。このテクノロジーをまったく使用しない組織はわずか 28% です。
実際、キャップジェミニによると、genAI はすでに 8 行に 1 行近くのコードの作成を支援しており、今後 12 か月でその比率は 5 行に 1 行に達すると予想されています。
ジアニ・チャン氏は3年前に同社の最高ソフトウェア責任者に就任した。その間、彼女はソフトウェア開発チームの効率と生産性を高めるためにgenAIが爆発的に利用されるのを目の当たりにしてきた。しかし、genAIは使いやすいソフトウェアを生み出すのに優れているが、その成果はまだ製品化できる段階ではなく、市民開発者の労働力を生み出す段階にさえ達していないとチャン氏は警告する。開発者やエンジニアが試験的に使用する際に直面する問題は、セキュリティ上の懸念、知的財産権の問題、マルウェアの脅威など、まだ数多くある。
キャップジェミニ・エンジニアリングの最高ソフトウェア責任者、ジアニ・チャン氏
とはいえ、張氏は AI が生成したソフトウェア ツールをリスクの低いタスクに数多く導入し、チームの効率を大幅に向上させています。Computerworld は、Capgemini Engineering の AI の活用について張氏にインタビューしました。以下はそのインタビューからの抜粋です。
Capgemini でのあなたの職務は何ですか? 「私は製品に組み込まれているソフトウェアを担当しています。ソフトウェアは非常に普及しているため、実際にはさまざまなカテゴリのソフトウェアとさまざまな開発方法が必要です。そして、ソフトウェアを [外部に] 移行するという点で、現在大きな推進力があることは想像に難くありません。」
AI 生成ソフトウェアへの取り組みはどのように始まったのですか? 「当初、私たちは、クリエイティブな要素に重点を置いた生成 AI について考えていました。そのため、多くの人がソフトウェアの構築、ストーリーの作成、Web サイトの構築、画像の生成、一般的な新しいものの作成について話していました。画像が生成できるのなら、コードを生成できない理由はありません。ストーリーを書けるのなら、ソフトウェアの構築に必要なユーザー ストーリーや要件を書けない理由はありません。これが現在起こっている変化の考え方であり、現実は市場主導の力学の組み合わせだと思います。誰もがデジタル ビジネスを構築したいという方向に進んでいます。事実上、現在、多くのテクノロジー企業と、これらの新しいデジタル プラットフォームを構築するための開発者を雇うために競争しています。
「多くの企業は、『例えば、ベイエリアにある大手テクノロジー企業に対抗して人材を雇うことはできない。では、どうすればいいか』と考えています。彼らは、実際にデジタルなものを構築するための人材プールやリソースがないという事実に対処するために、AIに目を向けます。だからこそ、今はまさに最悪の状況だと思います。リソースが不足しており、人々は本当にデジタルビジネスを構築したいと思っており、突然、コードを生成するために生成AIを使用するというアイデアが、実際に人材不足を補うことができるのです。したがって、彼らはそれらのプロジェクトを推し進めることができます。だからこそ、genAIソフトウェア拡張に非常に重点が置かれ、それに向けて構築したいと考えているのだと思います。」
AI をどのように活用してソフトウェア開発とエンジニアリングの効率化を図ってきましたか? 「ソフトウェア開発ライフサイクルは、ほぼ段階に分けることができます。プリコーディング段階があります。これは要件を記述する段階です。ユーザーストーリーを生成し、エピックを作成します。チームは、この領域で何を構築するかについて多くの計画を立てます。生成 AI は、ストーリーを生成するという点で付加的なメリットがあることがわかります。これを使用して要件を生成できます。つまり、生成 AI は記述を支援します。これが生成 AI の得意とするところです。どこに行きたいかというプロンプトをいくつか与えると、自動的にストーリーが生成されます。
「2 つ目の要素は、ソフトウェア構築段階、つまりコーディングです。この段階は、人々が非常に神経質になる段階です。それには十分な理由があります。生成 AI のコード生成の側面は、まだ魔法のようなものだからです。どのように生成されるのか、よくわかっていません。また、セキュリティに関しても、どこから生成されたのかなど、多くの懸念があります。ご存じのとおり、AI はまだ何か他のものから学習している最中だからです。また、自分の生成したコードが他の誰かによって使用されるかどうかも問わなければなりません。そのため、使用には大きな関心が寄せられていますが、生成の実際の実行には多くのためらいがあります。
「そして、コーディング後の段階があります。これは、デプロイメントからテストまですべてです。この段階では、ジェネレーティブ AI だけでなく、インテリジェント テストに重点を置いた AI 全般に多くのチャンスがあると思います。たとえば、適切なテスト ケースをどのように生成しますか? 適切なテスト対象に対してテストしていることをどうやって確認しますか? 多くのクライアントから、何年もかけてこの段階にテストをどんどん追加し、どんどん大きくなっているのをよく目にします。しかし、実際にその段階に入ってクリーンアップした人は誰もいません。つまり、膨大な数のテストを実行していることになります。そして、検出しようとしている欠陥のテストを実際にクリーンアップした人は誰もいないため、依然として多くの欠陥が残っています。そのため、ジェネレーティブ AI を使用すると、こうした多くの問題をより適切に処理できます。具体的には、テストの優先順位付けを大量に実行できます。使用されているテストと使用されていないテストのパターンを確認できます。また、そのことで何か問題が発生するという懸念も少なくなります。 AI ツールはその分野に非常に大きな影響を与えると思います。
「AI がさまざまな分野でさまざまな役割を果たしているのがわかります。そして、フロント部分はリスクが少なく、実行しやすいと思います。コード生成要素全体ほど多くのことを行わないかもしれませんが、生成されたコードに満足することについては、やはり非常にためらいがあります。」
AI コード生成ツールを使用する前に、既存のコード ベースがクリーンでエラーがないことを確認することはどの程度重要ですか? 「何から始めるかによって異なると思います。どのタイプの AI テクノロジーでも、何らかの構造、何らかのデータから始めます。ラベル付きデータとラベルなしデータがあり、AI エンジンはパターンと確率を判定しようとします。では、コードを生成したい場合、新しいコードは何に基づいて作成するのでしょうか?
「大規模な言語モデルや、あらゆるタイプのモデルを作成する場合、出発点は何でしょうか? 出発点がコード ベースのみである場合、確かに、不良データでトレーニングしているため、残っている問題はすべて継承される可能性が高くなります。その点を考慮してコーディングする必要があります。多くの人は、「自分のコードが最高だなんて傲慢なことはしない」と考えます。
「より一般的な方法は、より多くのコード セットを持つ大規模なモデルを活用することです。しかし、コードが増えるほど、セキュリティの問題が深刻化します。たとえば、そのコードはどこから来たのか? 自分は他の誰かの大規模なコード セットに貢献しているのだろうか? そして、本当に恐ろしいのは、コード セットをよく知らない場合、そこにトロイの木馬があるのではないかということです。つまり、そこには多くのダイナミクスがあります。
「私たちが接するクライアントの多くは、こうしたテクノロジーを気に入っています。これは非常に優れた技術です。なぜなら、人材不足という問題を解決し、人材不足のないデジタルビジネスを実際に構築する機会を提供するからです。しかし、彼らは本当に難しい問題に直面しています。AI の結果を信頼できるのか? また、安心して使用できる十分なコードベースがあるか? これを実行するモデルがどこからともなくやってくると想像するだけでは不十分なのか?」
以前の問題にはどのように対処しましたか? 大規模な LLM コードベースを使用するか、より小規模で独自の社内コードとデータに固執するか? 「クライアントの感受性によって異なると思います。多くの人がコード生成要素で遊んでいると思います。 [AI] コード生成を本番環境に導入している人は多くないと思います。先ほど言ったように、その分野には未知のことが多すぎるからです。
「私たちが気づいたのは、より多くのクライアントがプリコーディング段階をより深く理解し、ポストコーディング段階にも重点を置いているということです。なぜなら、どちらも比較的リスクが低く、大きなメリットがあるからです。特にテストの分野では、非常によく知られた手法です。そこには膨大なデータがあり、それを素早く整理して価値を引き出すことができます。ですから、これは非常に簡単に実現できる成果だと思います。そして、フロントエンド側では、多くの人がユーザーストーリーを書くことを好まなかったり、要件が適切に記述されていなかったりするので、そこから削減できる労力は意味があります。」
genAI コード生成で遭遇した問題は何ですか? 「これは最も価値の高い [方程式の一部] ですが、一貫性のあるコードを生成することも重要です。しかし、それが問題です。なぜなら、生成 AI は規範的ではないからです。したがって、「耳が 2 つと尻尾が振れるものが欲しい」と指示しても、実際には毎回ラブラドール レトリバーが生成されるわけではありません。ハスキー犬が生成されることもあります。[LLM] に適合するものを探しているだけです。つまり、パラメーターを変更すると、完全に新しいコードが生成される場合があります。そして、その完全に新しいコードは、統合、展開、そこから生じるすべてのことをやり直す必要があることを意味します。
「また、たとえコード セットを封じ込め、厳選された優れたエンジニアリング プラクティスとソフトウェア プラクティスを備えた LLM を構築し、独自のデータ セットで補完して信頼できるコードを生成できたとしても、変更を加えるたびに生成されるコードが同じコードになるかどうかを制御できないという状況もあります。業界では、一貫性を保つ方法を見つけるために、これらの要素を解明し、改良を重ねている段階だと思います。」
あなたのお気に入りの AI コード拡張プラットフォームは何ですか? 「かなり多様だと思います。この市場の課題は、非常に動的であることです。新しい機能セットが追加され続け、新しい機能セットは互いに重複しています。そのため、どれが最適かを判断するのは非常に困難です。現在、主導権を握っているものはいくつかあると思いますが、同時に、環境のダイナミクスにより、今後 8 週間でまったく新しいものが導入される可能性があります。したがって、非常に多様です。現時点でお気に入りがあるとは言えません。この時点では誰もが学習していると思います。」
genAI によって導入されたコード エラーにはどのように対処しますか? エラーを発見して修正するために、どのようなツールを使用していますか? 「それがテストの問題につながると思います。先ほども言ったように、根本的に考慮しなければならない一貫性の問題があります。コードを生成するたびに、コードが異なる方法で生成される可能性があるからです。テスト セットを改良し、それをインテリジェントなテスト方法として使用することは、これらの問題を確実に検出するための非常に重要な領域です。ソフトウェア開発ライフサイクルが非常に広範囲であるため、これらの問題が存在すると私は個人的に考えています。
「重要なのは、ポストコーディング フェーズでどこに焦点を当てるかです。テスト フェーズは、実際にこれらを正しく行うための重要な要素です。…AI テクノロジをすばやく活用し、製品コードに最小限のリスクしか導入しない領域です。実際、それが行うことは、コードを改善することだけです。[genAI] は、テスト セットをよりスマートに実行するのに役立ちます。そして、これらのテスト セットは、生成されたコードにも非常に役立ちます。なぜなら、ユーザーが何に対してテストしているのかがわかるからです。
「生成されたコードに問題があれば、これらの欠陥でそれを検出できます。先ほど言ったように、リスクの低い要素なので、その特定の領域を調べるのは大変な労力の価値があります。そのための AI ツールは数多くあります。」
「そして、すべてがジェネレーティブ AI である必要はありません。AI と機械学習は、かなり前から存在しており、それらを改良するための作業がすでにたくさん行われています。そのため、古いツールには多くのメリットと改善がもたらされています。市場は AI を採用する必要があると感じていますが、AI の採用はそれほどスムーズではありません。そのため、開発者は「一足飛びにジェネレーティブ AI を使い始めよう」と言っています。実際には、12 か月前に市場に登場したばかりではないテクノロジーに基づいて、これらの問題の多くを修正できます。そこには間違いなくメリットがあると思います。」
これまでにどんな生成 AI ツールを試しましたか? また、どのような成果がありましたか? 「ほとんどすべて試しました。これが簡単に答えるなら、すべて非常に有益でした。前にも言ったように、現実には、今日の生成 AI ツールの状況は、さまざまなクラウド サービス プロバイダー間でかなり似ていると思います。主要なツールとそうでないツールの区別はありません。どれもかなり優れた機能を備えていると感じています。
「新機能が次々とリリースされるため、利用可能な機能を常に把握しておくことが課題だと思います。これは励みになりますが、同時に、テクノロジーを有意義に実装して使用する方法を見つけなければなりません。現時点では、これらの機能のリリース速度と業界での採用速度は比類がありません。実際の採用数よりも機能の数のほうが多いと思います。
「当社にはキャップジェミニ研究所があり、幹部を対象に多くのアンケートを実施しています。その結果、約 30% の組織が genAI を試用していることがわかりました。また、おそらく 42% の組織が今後 12 か月間、genAI を試すことになるでしょう。しかし、これは採用の観点からも、ソフトウェア エンジニアリングで実際に genAI を使用している組織のうち、generator によって生産フローに根本的な影響を与えるのは 3 分の 1 未満に過ぎないことを意味します。したがって、市場はまだ実験段階にあると思います。そのため、すべてのツールは、できることとできないことの点でかなり似ています。
「繰り返しになりますが、あるプラットフォームの機能セットが他のプラットフォームよりも優れているかどうかは問題ではありません。ビジネス上の問題の解決にそれを適用することで、大きな影響が出るのではないかと思います。」
ソフトウェア開発に AI や生成 AI を使用していますか? 開発前と開発後のことは今は忘れてください。実際にコード生成に使用していますか? 「使用しています。私たちにとっても、まだ実験段階です。しかし、一貫性のあるコードを生成できるように、生成 AI エンジンを改良することに私たち自身も力を入れています。実際、これら 3 つの段階すべて [コード前モデリング、コード開発、コード後テスト] で、クライアントとかなり多くの実験と概念実証を行っています。先ほども言ったように、リスクが少ないため、開発前と開発後のほうが簡単です。
「さて、クライアントが [AI] 生成コードを本番環境に導入することに満足しているかどうかは別の話です。ですから、私たちが行っている概念実証は、必ずしも本番環境ではありません。そして、本番環境に導入するには、受け入れの面で業界がまだ取り組む必要があると思います。」
AI ツールによって生成されたコードはどの程度正確ですか? 言い換えると、そのコードはどの程度の頻度で使用可能ですか? 他の専門家から、正確さの度合いは 50% から 80%、あるいはそれ以上の範囲だと聞きました。どのような結果が得られましたか? 「正直に言うと、コードは非常に使用可能だと思います。生成されたコードは間違っていないので、実際にはかなり高い割合だと思います。生成されたコードに関する懸念は、正しく記述されているかどうかではないと思います。正しく記述されていると思います。問題は、先ほど言ったように、そのコードがどのように生成されたか、人々が知らない固有の欠陥や埋め込まれた欠陥があったかどうかです。そして、もう 1 つの質問は、その生成されたコードはどこから来たのか、そして、作成した生成コードがより大きなプールに供給されるかどうか、そしてそれが安全であるかどうかです。
「では、私が産業企業で、このソリューションを作成したいと思っていて、競合他社から取得したコードを生成するとします。これが自分の IP なのか、競合他社の IP なのかをどうやって判断するのでしょうか。あるいは、私が作成したコードが、何らかの方法でインターネットを通じて、まったく同じコードを生成する他の誰かに移行したのでしょうか。したがって、非常にプライベート化された genAI システムでない限り、その意味では非常に厄介な問題になります。」
コード自体が何らかの理由で使用できない場合でも、AI 生成コードは役に立つのでしょうか? 「その通りです。最初は使用できないコードが多数あります。学習システムと同じように、必要なものに合わせるには、より多くのプロンプトを与える必要があります。基本的なエンジニアリングについて考えると、最初に整数を定義します。genAI でそれができれば、定義済みのパラメーターや整数パラメーターなどをすべて事前に生成できるため、入力する時間を節約できます。
「うまくいかない場合は、追加のプロンプトで『実は、別のサイクル セットまたは別の種類の実行時間を探しています』と伝え、そのコードを微調整することもできます。つまり、論文を書くときのように、ゼロから書き始めるのではなく、他の人にアウトラインを書いてもらうことができます。また、イントロやエンディングなど、コンテンツの実際の核心ではない部分も使用できます。そして、コンテンツの核心も、生成 AI でさらに洗練させることができます。ですから、これは間違いなく大きな助けになります。ゼロから書くよりも時間の節約になります。」
AI や genAI によって、シチズン デベロッパーの労働力を作ることができましたか? 「まだ初期段階だと思います。AI によって、チームが必ずしもやりたくない作業を少し速く実行したり、開発者の観点からテスト ケースの生成やユーザー ストーリーの作成などの労力を削減したりできます。フレームワークの観点からコードのアウトラインを生成するのは非常に優れています。しかし、コード生成を独立して行うには、まだ比較的初期段階だと思います。」
AI コード生成は、効率化と生産性の向上にどの程度効果がありましたか? 「生産性、もちろんです。これは開発者エクスペリエンスの非常に強力な要素だと思います。コンセプトは、優秀なソフトウェア開発者を雇えば、彼らは機能や新しいコードなどを構築したいと考え、コード作成前の責任を負いたくないということです。そのため、彼らのためにその苦労をもっと解決し、単調で反復的な作業をもっと取り除くことができれば、彼らは価値を生み出す要素にもっと集中することができます。」
「生産性に関しては、これは大きな向上だと思いますが、より多くのコードを開発することではありません。多くの場合、より良いコードを開発することだと思います。つまり、基本的な構造を書くために何時間も費やしていたと言う代わりに、それが今では事前に生成されています。そして、ランタイムを最適化する方法を考えることができます。消費やストレージなどを最適化するにはどうすればよいのでしょうか。
「そのため、コードの基礎が何であるかを考えるだけでなく、コードをより良くするための追加の最適化について考える余裕が生まれます。」
エンジニアや開発者から聞いた他の使用法の 1 つは、genAI は新しいコードの生成には使用されず、古いコードの更新に使用されることが最も多いということです。あなたもその使用例を目にしていますか? 「すべての genAI ツールは新しいコードを生成することになると思いますが、違いは、先ほど強調した 1 つの非常に重要な使用例、つまり古いコードの移行要素です。
「また、多くのクライアントが、20 年、あるいは 30 年前の、かなり時代遅れのシステムを多数抱えていることにも気づきました。そこには、もう誰も理解できない独自のコードが含まれている可能性があり、そのスキル セットはすでに失われています。AI 支援によるコード生成と独自のチームでできることは、古いコードを理解するための知識のコーパスを作成することです。これにより、古いコードを実際に取り込んで、そのメタ モデルが何であるかを理解できます。何をしようとしているのか? 適切な入力と出力は何ですか? そこから、実際にメンテナンス可能な新しい言語で新しいコードを生成できます。これは、クライアントにとって非常に大きなメリットです。
「これは、コードを生成するという点で AI 技術の優れた応用例ですが、実際には古いコードを変更するわけではありません。古いコードを変更すると管理不能になるため、変更は望ましくありません。したがって、必要なのは、自分がやろうとしていることの概念を AI に理解させることです。そうすれば、はるかに保守しやすい新しいコードを実際に生成できます。」
コード生成に AI の使用を検討している人に、他にアドバイスはありますか? 「テクノロジーが非常にエキサイティングなので、今は素晴らしい時期だと思います。人々が試すためのさまざまな選択肢があり、簡単に実現できるものがたくさんあると思います。生成 AI も大きなメリットがあると感じています。AI は実際に実現可能であるという概念を人々に紹介、または再紹介したからです。
「AI はピラミッドの頂点にある技術だと考える人はたくさんいます。彼らは、AI は頂点に到達できるが、そのためにはすべてのデータをクリーンアップし、すべてのデータを正しく取り込める必要があると考えています。そして、それらのすべてのステップを踏めば、AI を使えるようになります。しかし、汎用 AI の普及と魅力は、それ以前でも実現可能であることです。今から始めても大丈夫です。その地点に到達する前にすべてをクリーンアップする必要はありません。実際に反復して、途中で改善を得ることができます。
「ソフトウェア開発ライフサイクルを見てみると、現在、AI を低リスクで使用できる領域が数多くあります。生産性だけとは言いません。AI は、生み出したい成果にとってより価値のあるものになるというだけの話であり、始めるには良い機会です。AI がすべてではありません。シチズン デベロッパーになるわけではありませんが、チームを強化します。生産性を向上させ、労力を軽減します。ですから、始めるにはちょうど良い時期なのです。」
上級記者のルーカス・メアリアンは、企業における AI、仕事の未来の問題、ヘルスケア IT、フィンテックをカバーしています。

元記事: https://www.computerworld.com/article/2095099/qa-capgemini-exec-on-why-ai-generated-software-isnt-ready-for-prime-time.html

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください