ソフトウェアエンジニアリングリーダーの間で、OpenAIの「ChatGPT」やGoogleの「Gemini」のような生成AIチャットbotの可能性に関心が高まっている。だが、生成AIは有能ではあるが、完全に信頼することはできない。本稿では、生成AIが抱える課題について紹介する。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
OpenAIの「ChatGPT」や、これに似たGoogleの「Gemini」、Anthropicの「Claude」のような生成AIチャットbotは、ある開発言語で書かれたソフトウェアコードを別の言語に翻訳する能力を示しており、ソフトウェアエンジニアリングリーダーの間では、コードの変換や近代化における生成AIチャットbotの可能性への関心が高まっている。
例えば、生成AIチャットbotが、メインフレーム上で動作するCOBOLアプリケーションを、クラウド上で動作するJavaアプリケーションに変換してくれるというわけだ。こうした生成AIチャットbotのソフトウェアコード変換プロセスの出力は、可読性が高く、構造が明確で、一見正しく見える。
だが、生成AIは有望な能力を持つものの、こうしたコード変換について完全に信頼することはできない。
生成AIがコードを翻訳する能力は画期的に思えるかもしれないが、この能力には大きな限界がある。生成AIは以下のような限界を抱えているため、ほとんどの企業は、生成AIをコードの自動変換に使用することを容認すべきではない。
通常、アプリケーションを近代化する際、コード変換では元のコードを忠実に翻訳する必要がある。変換後のアプリケーションは元のアプリケーションと機能、データの両面で完全に同等であり、それが実証されていなければならない。この実証がなければ、アプリケーションを全面的にテストし、コードの不備、不正確さ、容認できない問題を手作業で修正する必要がある。ChatGPTや他の生成AIソリューションを使用する場合、この機能とデータの等価性の要件が大きな課題となる。
生成AIは、機能/データ等価性を確保するのに適していない。GPT-4は従来の生成AIよりも信頼性が高く、より複雑な状況に対処できるが、以下のように幾つかの重大な問題を抱えている。
通常、アプリケーションのソースコードは数十万行から数百万行にも及び、GPTシリーズやGeminiのような大規模言語モデル(LLM)では処理しきれない。生成AIチャットbotの1つのプロンプトに入力できる文字数には上限がある。GPT-3と比べると、GPT-4では8〜10倍のユーザーコンテンツを指示とともに入力できるが、上限があることに変わりはない。その上限は、ほとんどのアプリケーションのコードベースよりも小さい。
生成AIモデルはモジュールを個別に変換できるが、アプリケーションを段階的に変換することは推奨されていない。大規模なアプリケーションでは、コードとデータの間に多くの明示的および暗黙的な依存関係があり、それらは変換時に解釈され、考慮されなければならない。きちんと動作する安定した安全なアプリケーションを生成するには、完全なシステムのコンテキストが必要になる。
生成AIの基盤となる大規模言語モデル(LLM)は、高品質のコードだけでなく、セキュリティ脆弱(ぜいじゃく)性やバグ、著作権上の制限があるコードも使ってトレーニングされている。そのため、こうしたLLMによって生成されるコードには、プロプライエタリ(他者が所有するもの)、オープンソース、または安全性の低いコーディングパターン、さらには危険な、あるいは悪意あるコードセグメントが含まれる可能性がある。
生成AIなどのAI技術は、コード変換とモダナイゼーションツールを進化させると期待されている。だが、人手を介さない完全に自動化されたコード変換がすぐに可能になるわけではない。長い間、この分野のベンダーは機械学習のようなAI技術を利用してきたが、現在は生成AIの限界を改善することに取り組んでいる。生成AIを決定論的ルールに基づくモデルやトランスパイラと統合することで、コード変換作業の効率と成果が向上すると予想されている。
出典:Can Generative AI Enhance Code Transformation and Modernization Efforts?(Gartner)
※この記事は、2024年8月に執筆されたものです。
Copyright © ITmedia, Inc. All Rights Reserved.