【ChatGPT】エンジニアがChatGPTを最大限に活用するための方法

# はじめに

**ChatGPTを最大限に有効活用できている自信はありますか？**

技術の進歩は、エンジニアの学習カーブをますます急激にしています。毎日のように新しい技術やフレームワーク・ツールが生まれてきて、ついていくのが大変だと感じていませんか？

その中でも、OpenAI の ChatGPT は、その革命的な技術で業界を席巻しています。でも、実際に日常のエンジニアリングにどう取り入れるか、どう活用するか、考えたことありますか？

ChatGPT の存在を知りながら、十分に活用できていないと感じている人は少なくないと思います。特に若手エンジニアとしては、このような新技術をしっかりと理解し、スキルアップを効率よく進められるはずです。

この記事では、私が **ChatGPT をエンジニアリングにおいてどう活用するべきなのか、今日から使える方法をシェア**していきたいと思います。

一緒に ChatGPT という現代最強のツールを最大限に活用し、次のステージへとステップアップしましょう！

:::note warn
**【注意】情報の正確性とその使用について**

この記事は筆者の経験や知識に基づいていますが、最新情報と一致しない可能性があります。

また、この記事では「一歩踏み込んだ話」を目的としているため、導入方法などは省略しています。初心者向けのガイドや基本的な情報は、他のリソースを参照してください。

もし、情報に誤りや過不足・もっと良い活用方法があるよ！などがあれば、コメントやフィードバックを頂けると幸いです。
:::

# 筆者について

- 受託開発企業のエンジニア2年目
- フロントエンド（Typescript, Angular）とバックエンド（Scala, Playframework）の開発をする vimmer
- バックエンドに強くなるために学習中

# ChatGPT は、どんなことに利用できる？

エンジニアとしての日々の業務は多岐にわたり、それぞれのタスクや課題に合わせた情報やサポートが求められます。

今回、この記事で紹介する5つの活用事例は、エンジニアとしての成長や業務の効率化に繋がりそうな内容に厳選しています。

これらの事例を通じて、日常の課題や悩みを少しでも解消できるヒントやアイデアを提供できれば嬉しいです！

## 1. プログラムのデバッグやトラブルシューティング

ChatGPTにエラーメッセージや問題の説明を投げて、その原因や解決策を質問してみる。
これによって、複雑な問題や独自のバグにも効果的なヒントや考え方を得ることができるので、エラーに溶かす時間を削減したり、先輩エンジニアに質問する前に前提理解を得ることができます。

例えば、エラーを解消したい場合、下記のような形で質問しています。

```
下記のエラーの原因と解決方法を教えて

# エラーメッセージ

[error]hogehoge
[error]hogehoge
[error]hogehoge
```

## 2. 新しい技術や言語の学習

ChatGPTに特定のプログラミング言語やフレームワークの基本的な情報やベストプラクティスを問い合わせることもできる。
それによって、ググるだけのときよりも短時間でのキャッチアップや、過去の経験との結びつきを効果的に学ぶ方法。

前提として、正確な情報を追うには OSSや公式ドキュメントの参照は必須ですが、「技術の利用ケース」や「新機能の実装イメージを掴む」などにはとても重宝すると思います。

また、新しい技術を使うときなら、「あれ？この言語のデバッグの記述ってどう書くんだっけ？」みたいなときも、下記のように気軽に質問することができます。

```
Go言語のデバッグ方法を教えて
```

## 3. コードの最適化やリファクタリングのヒント

ChatGPTに現在のコードを示し、より効率的な方法や改善点を質問してみる。
それによって、自分では把握していなかった情報に触れる機会変えられるかもしれないし、より適切な書き方のアプローチや最適化の考え方を深めることにも繋げられる。

より適切なコードのアドバイスを得たい場合には、提示したコードの他に関連するファイルやディレクトリ関係なども提示してあげると、関係性を踏まえた具体的なフィードバックを得ることができます。（下記例に示したディレクトリ構成やmain.goファイルは ChatGPT で適当につくっています）

```
下記のディレクトリ構成の main.go ファイルをリファクタリングしてください。

# ディレクトリ構成

/todo_app
│
├── go.mod
├── go.sum
│
├── main.go  # エントリーポイントとなるファイル
│
├── api
│   ├── handlers  # エンドポイントのハンドラ関数を格納
│   │   ├── todo.go
│   │   └── user.go
│   │
│   └── middlewares  # ミドルウェアを格納
│       └── auth.go
│
├── config  # 設定ファイルや設定関連のスクリプト
│   └── config.go
│
└── models  # データベースのモデルや操作を格納
    ├── db.go
    ├── todo.go
    └── user.go


# main.go ファイルのコード

package main

import "github.com/gin-gonic/gin"

func main() {
    r := gin.Default()
    r.GET("/", func(c *gin.Context) {
        c.String(200, "TODO APP")
    })
    r.Run(":8080") // 8080 ポートでサーバーを起動
}
```

## 4. ライティングのサポート

コードのドキュメンテーション作成や技術的なブログの雛形を作る際のアドバイスを求めてみることもできます。

私の使い方としては、文章の新規作成だけでなく、
クライアントにメールを送るときに、失礼な表現になっていないか？読み手に伝わる技術的な文章の書き方になっているか？なども添削してもらっています笑

## 5. お悩み相談（キャリア構築・人間関係）のアドバイス

情報収集のために、キャリアに関するスキルや資格、業界のトレンドなどを知りたい場合や、人間関係のコミュニケーション方法についてのヒントを求める際に活用できます。

また、感情を持たないので深い感情的なサポートや専門的なカウンセリングは難しいと思いますが、匿名で上限回数が許す限り何度も相談でき、悩みを言語化することで情報や感情が整理されてくるので、壁打ちとしても活用できると思います。

# 効率よく使うためには？

## a. 具体的な質問をする

質問や要求が具体的であればあるほど、ChatGPTは的確な回答をしやすくなります。
なので、質問の背景や文脈を詳しく説明することで、より適切で具体的な回答を得られる可能性が高まります。

## b. ステップバイステップの指示を求める

「〜を教えて」というような抽象的な要求よりも、「〜の手順をステップバイステップで教えて」というように具体的な形で指示を求めると、明確なガイダンスを受け取りやすくなります。

## c. 質問をセグメント化する

複雑な質問は、いくつかの小さな質問に分けて順番に尋ねると、理解や回答が容易になります。
それらの得られた回答をもとに再質問することで、より適切な回答を得られることが多くなると思います。

# 【重要】 利用する際の注意点

個人情報や機密情報を共有しないように注意し、専門的なドメイン知識の情報が必要な場面では、ChatGPTの回答を唯一の情報源とせず、専門としている部門の人や先輩エンジニアに相談することが重要になります。

また、下記の記事のように、【プロフィール右側3点リーダ ＞ Settings ＞ Data Controls ＞ Chat History & Training】 をオフにすることで、モデルのトレーニング対象から外すことができます。

サイドバーの履歴が見れなくなるのは少し不便ですが、不適切な情報を学習させてしまうよりは良いと思うので、利用をおすすめします。

https://openai.com/blog/new-ways-to-manage-your-data-in-chatgpt

# さいごに

今回は ChatGPT をちゃんと利用するために、調べた内容と自分自身の使い方をアウトプットしてみました。
だいぶサラッと書いてしまったので、気づいたことや学びになったことがあれば、随時更新していこうと思います。

より具体で活用方法を知りたい方は下記の記事もおすすめです。

https://qiita.com/tak001/items/7605f0be7b424118e5a5

最後まで読んでいただきありがとうございました！