LLMを活用したリバースエンジニアリングおよびコード変換について

背景

日々、生成AI技術は発展しており、ソフトウェア開発において大きなインパクトを与えようとしています。

GitHub Copilot に代表されるサービスを利用すれば、 プログラムやテストコードの生成などを自動化し、うろ憶えのライブラリやスペルミスなどから解放され、開発者はより有意義で革新的な作業に集中できるようになっています。また、チャット機能による自然言語での対話により、必要な情報を取得し、短時間で問題解決に到達することが出来るようになりました。出力される品質についても、十分実用的な水準に達しています(適切な対話=入力のある前提)。

この他にも生成AIを活用することで、プログラムに対するコメントの自動挿入や、APIやユーザードキュメントの自動生成をすること、静的解析やパターンマッチングを行うことで潜在的な問題のあるコードを見付けることが可能になってきました。コードレビューなどでバグの潜在的な箇所を指摘するツールとして活用していくことが可能です。

弊社の関心

AI、LLMによってどんなことが実現できるのか?日々得られる情報の中で得てして思考やアイデアは発散しがちです。エイムネクストでは以下のテーマに分けて担当を設けて検討を行っています。

テーマ 観点 弊社サービス・キーワードとの関連
AI-コード生成 ソフトウェアの開発や
プログラミングにおける活用
ソフトウェア開発および保守
AI-コード理解 既存のソフトウェアの
理解を助けるために活用
リバースエンジニアリング、
ドキュメント再構築、
第三者コードレビュー
AI-コード変換 レガシーシステムの言語や
フレームワークの変換に活用
Struts-Spring変換、Silverlight移行、
C++からC#化、モダナイゼーション
AI-テスト テストプロセスにおける活用 テストプロセスの構築・
コンサルティング、
テスト仕様書作成サービス
AI-法と企業 企業や開発者が安心して使うため
にはという視点と整理
DevOps環境の構築
AI-テスト テストプロセスにおける活用 テストプロセスの構築・
コンサルティング、
ソフトウェアテストの改善支援

AI-コード理解

エイムネクストでは、ドキュメント化されてこなかったソフトウェア資産について、ドキュメントの再構築を行うサービス(リバースエンジニアリング)を実施しております。また、第三者コードレビューとして、開発の当事者だけでは思い込みや当たり前すぎて見落してしまうような部分を客観的にレビューを行なうサービスもご提供してきました。

従来、リバースエンジニアリングによりドキュメント(設計書等)を整備するにはコスト(時間と工数)がかかります。これをLLMを活用することで削減することが可能です。ドキュメントの整備が必要な背景や目的と、どのようなドキュメントが必要かによってアプローチや効果も異なりますが、LLMによる効果を期待できます。

現在、弊社ではコードを理解させるフェーズとドキュメントを生成するフェーズに分けてLLMの検討を行っています。また、お客様のソフトウェア資産をクローズな環境で扱える様に、各種OSSLLMを用いて検証もしています。

flowchart TB  D-->E subgraph コードの理解系 direction TB A[/Code/] --> B[Custom前処理] B --> C[/Pre-Porcessed Code/] C -->|Custom Prompt| D[OpenSource LLM] end subgraph ドキュメントの生成系 direction TB E[/中間成果物/] -->|Custom Prompt| F[OpenSource LLM] F --> G[成果物] end

PoCを実施させて頂ける企業を募集中です。
お客様の個別のアイデアやニーズに合わせたPoCの実施、その後のプランの作成や実行へと、コンセプトをエンジニアリングに落とすご支援をさせて頂きます。

AI-コード変換

エイムネクストは、レガシー化したシステムやアプリケーションを現代的なフレームワークなどに置き換える、モダナイゼーションのご支援を行ってきております。

これらのサービスでは、作業の効率化と人為的なミスの混入を減らす目的として、コード解析や調査を実施し、機械的に自動変換できる範囲を特定していく手法を取ることがほとんどです。実際に自動変換を行なう専用ツールの開発も行ってきました。機械的にできない部分は人の手で補います。

弊社では、LLMを活用することでより短期間に高品質にモダナイゼーションの支援ができないかを検証中です。コードの状況により一概には言えませんが、次の2種類のパターンを考えています。


flowchart LR A[/Code/] --> B[Custom前処理] B -->|Custom Prompt| C[OpenSource LLM] C --> D[/Modern Code/]

LLM単独で変換を行う場合


flowchart LR A[/Code/] --> B[Custom前処理] B -->|Custom Prompt| C[OpenSource LLM] C --> D[/Modern Code/] B --> E[自動変換ツール] E --> D

変換ツールとLLMの合わせ技で変換を行う場合

人の手が入る部分には、人為的なミスが入りこむ余地や作業時間がかかります。LLMを活用することで迅速なアウトプットを行えるようサービスを拡充していきます。

お問合せ

”AI-コード理解”と”AI-コード変換”を中心に弊社の取組をご紹介させて頂きました(その他のテーマについては別の機会を予定)。これらの領域でご関心がございましたら、弊社までお問合せください。

関連リンク

ITモダナイゼーション・アーキテクチャ最新化 Struts から Spring MVC への移行支援 Springフレームワーク導入支援 ドキュメント再構築サービス 第三者コードレビュー テスト仕様書作成サービス ソフトウェアテストの改善支援