エンジニア必見：ChatGPTと開発プロセスの現場利用について

ChatGPTの登場で、会話に利用しようとか、サービスに利用するという観点で色々と皆さん工夫、思考されてるのをよく見かけます。

実は、もう一方で開発プロセスの現場においてChatGPTを利用する事により開発の生産性を飛躍的に向上できるという事も知っておかないと行けません。

知っているだけではなく、開発プロセスの現場に今スグに導入すべきだと思います。

# ChatGPTの開発プロセスの現場利用について
下記の利用シーンが考えられます。

１．ソース読解　　ー＞　実装説明生成、アルゴリズム解説

２．設計　　　　　ー＞　仕様書作成、DB設計作成、アーキテクチャ生成

３．実装　　　　　ー＞　コード生成、テスト生成、デバッグ、ソース変換

４．インフラ　　　ー＞　インフラコード生成、設定エラー解説、脆弱性チェック

５．ドキュメント　ー＞　コメント生成、ドキュメント生成

# １．ソースコード解読
```python
下記を解説お願いします # 必要なライブラリをインポート
import numpy as np
import pandas as pd

# シードの設定
np.random.seed(0)
# データのサイズ
size = 120

# 学習意欲を表す変数X1(交絡因子)
X1 = np.random.uniform(0, 1, size)
# 理系出身ダミーX2(交絡因子)
X2 = np.random.choice([0, 1], p=[0.5, 0.5], size=size)
# 特講受講ダミーD(処置変数)
D_noise = np.random.uniform(0, 0.2, size)
D_threshold = 0.6*X1 + 0.2*X2 + D_noise
D = np.where(D_threshold>=0.5, 1, 0)

# 試験の得点Y
Y_noise = np.random.normal(0, 10, size)
Y = np.clip(40*X1 + 20*X2 + 20*D + Y_noise, 0, 100).astype("int")

# データフレームに格納し、5つだけ出力
df = pd.DataFrame({"学習意欲": X1, "理系出身ダミー": X2, "特講受講ダミー": D, "試験の得点": Y})
df.head()
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23130/8b268de1-e008-f44a-cd5f-6a3978a15285.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23130/2beca82c-649d-b940-dde1-35c282177922.png)

# ２．設計
## 仕様書作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23130/bc9cbfb9-7585-6b90-06a7-01687bb5b1f7.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23130/36a2ca51-5ee4-b439-6304-da072f39d033.png)
## DB設計書作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23130/26fbc324-9da1-6d49-3041-99d25e0b7d57.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23130/5e91a66b-fbf7-e982-0f69-8aaed75e7235.png)
## アーキテクチャ作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23130/f089facc-e05f-f1b4-6a94-89e2e666be5e.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23130/b317c109-5157-08aa-20d6-87ea8a888b29.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23130/45a531a1-63ea-a941-e94c-48290553c341.png)
# ３．実装
## ソースコード作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23130/eb057daf-5c19-90c2-e2be-bcef199ec6eb.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23130/34d299c6-c88a-407c-80b8-44d99a383085.png)
## テストコード生成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23130/5c20fc58-878f-9630-104e-5ede51ed24d4.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23130/0af6614a-4e81-a93d-5774-08d742f5c919.png)
## デバッグ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23130/10d77106-fdd8-4f66-1874-9b73c1929035.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23130/90f47f3c-1317-ac43-024c-7df73e16171a.png)
## ソース変換
Sampleソースコードに該当言語がない時
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23130/806bde51-f6d5-f9ee-95c9-137a42e58180.png)
# ４．インフラ
## AWS構成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23130/7673b96c-dcd9-a8e7-29ac-57f897a4e68d.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23130/726c14d2-3edc-1f10-cf6c-c074337ba9aa.png)
## インフラコード生成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23130/272663ec-4208-7162-b934-3a08f3c5132e.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23130/6d230231-903e-9199-959b-f9f524a4c995.png)
# ５．ドキュメント
## コメント生成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23130/497aaa3a-3a07-badc-bf3e-1ea512e1e519.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23130/183d6dd3-1cf7-263e-c791-11e064330346.png)
## ドキュメント生成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23130/81428aa3-e25e-321a-737b-34711e433446.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23130/32558aa9-979e-0c63-47ac-7c7d2143964d.png)

# まとめ
ChatGPTは、自然言語処理技術を応用して、様々なタスクを自動化することができます。開発プロセスの現場においても、ChatGPTを利用することで、生産性の向上が期待できます。以下に、ChatGPTの開発プロセスの現場での利用シーンをまとめました。

ソース読解
ソースコードを読み解き、実装やアルゴリズムの説明文を生成することができます。

設計
仕様書やDB設計、アーキテクチャの生成を行うことができます。

実装
コード生成やテストケースの自動生成、デバッグ支援、ソースコードの変換など、実装工程の自動化が可能です。

インフラ
インフラコードの自動生成、設定エラーの解説、脆弱性チェックなど、インフラ関連の自動化にも利用できます。

ドキュメント
コメントやドキュメントの自動生成に利用することができます。

以上が、ChatGPTの開発プロセスの現場での利用シーンについてのまとめです。ChatGPTの活用により、開発プロセスの自動化が促進され、開発効率の向上が期待できます。
これ以外にも発想次第で色々と開発プロセスの効率化に適用できるかもしれません。皆さんのオリジナルの活用法を教えて下さい

# 最後に
未経験の皆さん、若手エンジニアの皆さん、勉強方法について悩みがあればなんでも気軽に質問して下さい！
これからも記事を書いていきますので、モチベーションアップのためフォロー、イイねお願いします。