こんにちは!セイル社内エンジニアの上瀬です
皆さんはChatGPT使ってますか?
セイル社内開発ではChatGPTが大活躍!

そこで今回はシステム開発にChatGPTをどのように利用しているのかご紹介します!

手を動かすだけの作業はChatGPTにお任せ!

まずは直接的に開発効率を爆上げしてくれる使い方をご紹介します
開発業務では無心で手を動かすだけの作業が発生することも多々ありますよね

そんな時はChatGPTにお任せしましょう!
現在進行中の自社開発を例にしてみます

開発中、新しいDBテーブルが必要となりました
新しいDBテーブルを追加すると、セイルの開発では以下の作業が必要になります

1. テーブル定義を記述
2. ダミーデータを作成
3. Javaモデルを作成
4. SQL文を作成
5. ビジネスロジックを書く

この 2. 3. 4. の作業、基本的にはテーブル定義に合わせて作業します

そこでChatGPTに、
テーブル定義をもとにダミーデータ、Javaモデル、SQLを生成して!とお願いすると

こんな感じでデータを作成してくれました
ダミーデータ
INSERT INTO users (id, login_id, password, role_id, mail_template, last_login, is_enabled, is_admin, created_at, created_by, updated_at, updated_by)
VALUES
('1', 'user1', 'password1', 'role1', 'template1', '2022-02-15 12:30:00', true, false, '2022-02-15 12:30:00', 'admin', '2022-02-15 12:30:00', 'admin'),
('2', 'user2', 'password2', 'role1', 'template2', '2022-02-15 12:31:00', true, false, '2022-02-15 12:31:00', 'admin', '2022-02-15 12:31:00', 'admin'),
('3', 'user3', 'password3', 'role2', 'template3', '2022-02-15 12:32:00', true, false, '2022-02-15 12:32:00', 'admin', '2022-02-15 12:32:00', 'admin')
JavaModel
public class User {
  private String id;
  private String loginId;
  private String password;
  private String roleId;
  private String mailTemplate;
  private LocalDateTime lastLogin;
  private boolean isEnabled;
  private boolean isAdmin;
  private LocalDateTime createdAt;
  private String createdBy;
  private LocalDateTime updatedAt;
  private String updatedBy;

  // コンストラクター、getter、setterは省略
}
SQL
-- SELECT文
SELECT id, login_id, role_id, mail_template, last_login, is_enabled, is_admin, created_at, created_by, updated_at, updated_by
FROM users
WHERE id = ?

-- CREATE文
INSERT INTO users (id, login_id, password, role_id, mail_template, last_login, is_enabled, is_admin, created_at, created_by, updated_at, updated_by)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)

-- UPDATE文
UPDATE users
SET login_id = ?, password = ?, role_id = ?, mail_template = ?, last_login = ?, is_enabled = ?, is_admin = ?, updated_at = ?, updated_by = ?
WHERE id = ?

-- DELETE文
DELETE FROM users
WHERE id = ?
こんなに書いてくれるなんて!
作業効率爆上がりです!

もっとこうしたい。みたいな要望があれば、都度伝えれば修正してくれます
ある程度ルールが決まった中で、記述する際はChatGPTにお願いすれば一気に終わらせてくれます

手を動かすだけの作業はChatGPTに丸投げするのが良いかもしれません

エラーについて説明してくれる

開発中にエラーが出た時
「なんだこれ?? ググってもよく分からない、、、」ってなることもありますよね

そんなときもChatGPTに聞くと、丁寧かつ分かりやすく教えてくれます
Warning: Failed prop type: Invalid prop `children` supplied to `ForwardRef(Grid)`, expected a ReactNode.
具体的にどういう問題がある?

個人的には具体例を出してくれる点がとても分かりやすいと思います
QiitaやstackOverflowの記事で理解が難しい時は、ぜひChatGPTを使ってみてください
今まで何となくで理解していた内容もスッキリ理解できるようになるかもしれません

こんなコード書いてほしい!でコード書いてくれる

先日、dockerコンテナを使ってサーバーを用意する。というタスクを担当しました
そこでChatGPTにdocker-compose.ymlを書いてとお願いしてみました
libreoffice/onlineのdockerイメージを使って、http通信するためのdocker-compose.ymlを書いてほしい
すると、ChatGPTは丁寧に説明を添えながら、以下のように書いてくれました。
このように、ChatGPTが作成したコードを参考にすることで、コードの理解度が向上し、エンジニアとしてのスキルアップにも繋がります

もちろん、このまま実装するわけではなく、必要な修正を加えてDocker Composeファイルを完成させる必要がありますが、大まかな方向性を示してくれるだけでも、とてもありがたいです

最後に

今回は、ChatGPTを開発業務でどのように活用しているかを紹介しました
ChatGPTの可能性は無限であり、他にも多くの使い方があると思います

しかし、ChatGPTが生成するコードは完璧ではないため、エンジニアとしての知識や経験が必要です
ChatGPTの回答が正しいかどうかを判断する際には、常に自己責任で行うようにしましょう

他の業務でもChatGPTは大活躍しているので、こちらの記事も是非チェックしてみて下さい

ChatGPTの活用事例 【営業・採用編】
https://sail-to.co.jp/blog/work-style/chatgpt-sales