UCLは、ChatGPTなどのAI機能を活用しC言語ソースの再利用に有効なC言語ドキュメント作成システムの新展開を発表しました。
UCL「C言語ドキュメント作成システム」
UCLは、ChatGPTなどのAI機能を活用しC言語ソースの再利用に有効なC言語ドキュメント作成システムの新展開を発表。
■C言語ドキュメント作成ツール
UCLでは、C言語のソースプログラムを入力し、各種ドキュメントを自動作成する「C言語ドキュメント作成ツール」を提供しています。
当ツールは、ソースに書かれたコメントを重視してわかりやすいドキュメントを作成することが可能です。
タイミングチャート作成機能対応C言語ドキュメント作成ツール
http://ucl.jp/cds/tivwp01.html
■AI機能の活用
従来CDS製品では、コメントの無いソースプログラムからは処理説明の無いドキュメントしか出ませんでした。昨今、利用しやすくなってきたChatGPTなどを活用すればコメントの無いソースプログラムにも処理コメントを付加したり、関数の説明コメントを自動的に追加することが可能です。
■処理例
以下に処理例を示します。
【ChatGPTへの入力】
以下のソースにC言語でコメントをつけてください
Doxygenの日本語関数説明をしてください
int Character::Type_chk(int chr) { int ret;
if ( 'a' <= chr && chr <= 'z'
|| 'A' <= chr && chr <= 'Z' ) {
ret = LETTER;
} else if ('0' <= chr && chr <= '9') {
ret = DIGIT;
} else {
ret = chr;
}
return(ret);
※Doxygenとは、ソフトウェアのドキュメント化を自動で行うことができるオープンソースソフトウェアです。
【ChatGPTの出力】
下にC言語のコメントとDoxygen形式の日本語関数説明を追加しました。
/**
* @brief 文字の種類をチェックする関数
*
* この関数は、与えられた文字が英字(小文字または大文字)、
* 数字、またはその他の文字のいずれかであるかを判断します。
*
* @param chr チェックする文字(整数値として表現される)
* @return 文字の種類を示す整数値
* - LETTER: 英字
* - DIGIT: 数字
* - chr: その他の文字(そのまま返す)
*/
int Character::Type_chk(int chr)
{
int ret;
// 英字の範囲をチェック
if ( 'a' <= chr && chr <= 'z'
|| 'A' <= chr && chr <= 'Z' ) {
ret = LETTER; // 英字の場合
}
// 数字の範囲をチェック
else if ('0' <= chr && chr <= '9') {
ret = DIGIT; // 数字の場合
}
// その他の文字
else {
ret = chr; // その他の文字はそのまま返す
}
return(ret); // 結果を返す
}
このコードは、与えられた文字の種類を判定し、対応する値を返す機能を持っています。Doxygenコメントにより、関数の目的や引数、返り値を明確に説明しています。
■CDSの形式に関数見出しの形式を変換
@brief、@paramなどはDoxygenの形式で出力されますので、今後ユニバーサルコンピュータ研究所が提供するAI活用ツールで以下のようにCDS形式への自動変換を行います。
//********************************************************************
// NAME : Character::Type_chk
// FUNCTION : 文字の種類をチェックする関数
// PROCESS : この関数は、与えられた文字が英字(小文字または大文字)、
// : 数字、またはその他の文字のいずれかであるかを判断します。
// INPUT : chr : 入力文字
// RETURN : 文字の型
// : == LETTER : 文字型(英字)
// : == DIGIT : 数字型
// : == その他 : 文字型以外
//********************************************************************
int Character::Type_chk(int chr)
{
int ret; // 戻り値
// 英字の範囲をチェック
if ( 'a' <= chr && chr <= 'z'
|| 'A' <= chr && chr <= 'Z' ) {
ret = LETTER; // 英字の場合
}
// 数字の範囲をチェック
else if ('0' <= chr && chr <= '9') {
ret = DIGIT; // 数字の場合
}
// その他の文字
else {
ret = chr; // その他の文字はそのまま返す
}
return(ret);
}
■CDSで自動生成される関数仕様書の例
■CDSで自動生成される関数ロジック図の例
これはフローチャートの出力例です。
これはPAD図の出力例です。
■過去のソフト資産の有効活用
このように過去に作成されたコメントの無いソースプログラムもAI活用によりコメントを自動付加し、CDSに入力することによってプログラムドキュメントを自動作成することができます。
なお、機密保持の必要なソースプログラムをオープンなAI機能に引き渡すことについて、セキュリティ上そのままでは問題があります。
現在、AI機能のセキュリティを確保しつつ利用可能な環境提供を行っている法人向けAIサービスは数多く存在します。
そのようなAIサービスを利用することにより機密情報の漏洩防止は可能です。