生成AIを用いてアプリケーション開発プロセスを変革しよう 序章編

Microsoft

2024.03.26

     

OpenAIのChatGPTを始めとした新しいコンテンツを生産できる生成AIの発展は、社会やビジネスのプロセスに大きな影響をもたらしています。
従来のAIが事前に決められたルールや作業手順を自動で行うのに対し、生成AIはディープラーニング等を用いて、学習した情報を組み合わせて新しいものを創造します。その革新的な技術は、アプリケーション開発プロセスにも大きな影響を与えています。

本コラムでは、アプリケーション開発における生成AIを用いたプロセス変革にむけた当社の取り組みについて連載していきます。今回はそれらのサマリーをご紹介します。

※本コラムの内容は、2023年8月~2024年2月までの情報をもとにしています。現在進行形で急速に技術革新が進んでおり、最新の状況を把握して活用していくことが重要です。当社でも常にキャッチアップしながら現場適用を行っています。

生成AIを用いた2つのアプローチ

アプリケーション開発プロセスに以下の2つのアプローチで生成AIを活用する取り組みを進めています。

  • レガシーアプリケーションに対するモダナイゼーションへの適用
  • Low Code Platformでの活用

① レガシーアプリケーションのモダナイゼーション作業への適用

古いシステムを最新の技術やアーキテクチャに適合させるモダナイゼーションへの生成AI活用の検証を行っています。過去のプログラム言語や過去のフレームワークで実装されたプログラムコードを生成AIに自動的に解析させることで下記3点の実現が見込めます。

  • 1)プログラムコードからプログラム仕様書の自動生成
  • 2)古い、もしくは異なるプログラム言語で実装されたプログラムコードの自動変換
    例:COBOL→Java、C/C++ →C# 、VisualBasic→VB.NET/C#、Oracle SQL→PostgreSQL
  • 3)古いフレームワークからの自動変換
    例:Struts 1.x→Spring/Quarkus、MFC(Windows 95時代からのフレームワーク) →WPF(.NETベースのフレームワーク)

これらのモダナイゼーションに対して生成AIを用いることで、どのレベルまでの実現が可能かを検証するため、当社では、中小規模のオープンソースとして公開されているアプリケーションを題材とし、以下のポイントで調査を実施しています。

  • 1)過去のプログラムコード分析、プログラム仕様書・コメント自動生成
    • 正しい仕様書・読みやすいコメントを自動作成できるか?
  • 2)プログラムコード変換・フレームワーク変換
    • モダンプログラミング言語への変換がどの程度できるか?
    • モダンフレームワークへの適用が可能か?
  • 3)(変換後の)プログラムコード最適化、コメント追加
    • 意図しないコードをプロンプトベースで変更できるか?
    • 手動で修正したコードのバグチェックができるか?
    • コメント追加、プログラム仕様書を自動作成できるか?

検証にはプログラムコード生成用として現在メジャーな「GitHub Copilot/GitHub Copilot Chat」と「ChatGPT Advanced Data Analysis」の2製品を使用しています。

  • GitHub Copilot/GitHub Copilot Chat
    Microsoft社の子会社であるGitHub社が提供するツールであり、Visual Studioに組み込まれています。
    GPT3言語モデルをベースに、GitHubリポジトリ上のソースコードを使ってチューニングされており、プログラムコードの分析・生成用途においては比較的安定した動作をします。また、C++、Visual Basic、.NETといったMicrosoft社のプロダクトのプログラミング言語やフレームワークを用いて実装されているプログラムコードの分析に対応しています。
    ただし、現時点では、C++のクラス定義やヘッダーファイルといった複数ファイルにまたがったプログラムコードの分析を行うことができません。
  • ChatGPT Advanced Data Analysis
    OpenAI社がChatGPTの拡張機能として提供しているツールです。言語モデルとしてGPT4.0を用いており、各種コードやデータの分析用にチューニングされているようです。こちらは複数ファイルにまたがったプログラムコードの分析が可能なほか、入出力ファイルなどもプロンプト情報として同時に渡し、分析することができます。加えて、Python言語をクラウド上で直接実行し、デバッグすることも可能です。
    ただし、プロンプト次第で出力結果が大幅に変わるため、利用にはプロンプトスキルが求められます。また、C++やPythonといった汎用プログラミング言語を用いた分析・生成では良好な結果が得られる一方、Visual BasicなどのMicrosoft関連プロダクトに関する言語の分析・生成に関しては課題が残ります。

どちらのツールも、生成AIの進歩と合わせ日々進化しているため、検証タイミングによって異なる結果となることがある点にも注意が必要です。

これらの検証と実際の開発プロジェクトへの適用を進めるなかで、状況に応じた最適なツール選定方法の確立や、プログラムコード分析・変更用のプロンプトパターンの蓄積を進めています。さらに、このように蓄積したナレッジについて、開発の方法論・フレームワークへ組み込むことにより、NTTデータグループの様々な開発プロジェクトでの活用を目指しています。

② Low Code Platformでの活用

Microsoft社の提供する統合プラットフォームPower PlatformにおけるCopilotによるアプリケーション開発について、各種業務要件をプロンプト(自然言語)で記述することでアプリケーションやそのひな形をAIに生成させる検証を行います。
Low Code Platformは開発の民主化・内製化促進のキーファクタとして注目されています。しかし、残念ながらLow Code Platformにおいても開発の知識が全く不要となるわけではなく、ハードルが高いと感じられる方も多いのが実情です。そのため、AIを用いた自然言語による開発が実現することでこのハードルが下がり、「開発の初心者」であっても容易に開発が行えるようになることが期待されます。
検証では、その実現性や通常の手法による開発との以下のような観点で生産性比較を行います。

  • プロンプトベースの開発と通常のアプリケーション開発の作業の流れや工数の違い
  • プロンプトベースでの開発の適用が有用な領域、適用が難しい領域の見定め
  • プロンプトベースでの開発の考慮・留意点

まとめ

アプリケーション開発に対する生成AIの適用に注目が集まる中で、アプリケーション開発生産性向上の度合いや適用領域、留意点を見定めたうえで活用していくことが重要であり、当社で取り組む検証の概要について紹介しました。次回以降、具体的な検証の中身や結果について解説していきます。

  • 文中の商品名、会社名、団体名は、一般に各社の商標または登録商標です。

生成AIを用いてアプリケーション開発プロセスを変革しよう 序章編