設計書を基にChatGPTがJavaのコードを出力する一連のフローをご紹介します
こんにちは、読者の皆様。本日はOpenAIが開発した人工知能モデル、ChatGPTについて触れると共に、それがどのようにJavaのプログラム生成に役立つかを解説いたします。具体的には、設計書を基にChatGPTがJavaのコードを出力する一連のフローをご紹介します。
我々が日々取り組むプログラミング作業は、多くの場合、設計書をもとにコードを書くという形をとります。今回、私たちは具体的な設計書を用意し、その設計書をChatGPTに提示しました。
設計内容は以下の通りです。
プロンプト
# 指示
次の設計からJavaで値オブジェクトとエンティティのプログラムを出力して。
# 設計
## 値オブジェクト
クラス: UserID
説明: Userに割り当てる一意の識別子
プロパティ:
String id: 識別子
コンストラクター:
UserID(String id) : 制約に従ってチェック処理
制約:
idは12桁、先頭を a として残りを数字とする。 例)a01234567890
## エンティティ
クラス: User
説明: Userエンティティ
プロパティ:
UserID userId: ユーザー識別子
String name: ユーザー名
コンストラクター:
User(String name) : UserIDはコンストラクターの中で自動生成
メソッド:
getUserID()
getName()
updateName(String name): ユーザー名を変更する
この設計書を基にChatGPTにJavaのコード生成を依頼したところ、見事な結果が返ってきました。ChatGPTは与えられた設計書を適切に理解し、それに基づいたJavaのコードを生成しました。UserIDクラスでは、コンストラクタでIDの形式を検証し、適切な形式でなければ例外をスローします。一方、Userエンティティでは、インスタンスが作成される際に自動的にIDを生成します。
ChatGPTの回答
import java.util.Random;
// 値オブジェクト
public class UserID {
private String id;
public UserID(String id) {
if (id == null || !id.matches("a\\d{11}")) {
throw new IllegalArgumentException("ID must be a 12-character string starting with 'a' followed by 11 digits.");
}
this.id = id;
}
public String getId() {
return id;
}
}
// エンティティ
public class User {
private UserID userId;
private String name;
public User(String name) {
this.userId = generateUserID();
this.name = name;
}
private UserID generateUserID() {
Random random = new Random();
String id = "a";
for (int i = 0; i < 11; i++) {
id += random.nextInt(10);
}
return new UserID(id);
}
public UserID getUserID() {
return userId;
}
public String getName() {
return name;
}
public void updateName(String name) {
this.name = name;
}
}
この実例から見て取れるように、ChatGPTは開発者の負担を軽減し、生産性を向上させる大きな可能性を秘めています。開発者としては、ChatGPTのような先進的なツールを活用することで、より効率的で質の高いコードを生成することができるでしょう。今後もAIと開発者の協働による新たな可能性について探求して参ります。