はじめに
個人的なChatGPT活用方法についてまとめます。
ChatGPT関連の記事はすでに多く出ているので、備忘・記録として書きます。
「プロンプトエンジニアリング」など込み入った話には触れずゆるく使っていきます。
※ ChatGPTの回答画像は全文を掲載していない可能性があります
※ 記事用に生成されたコードの検証はしていません。
前提条件
ChatGPT Plus(GPT-4) を使う
GPT-3.5と比較して回答の精度が段違いです。
$20/月掛かりますが、それ以上の価値があるので課金しておきましょう。
プログラミングでの活用に限定する
キリがないので、プログラミングでの活用に限定しています。
気を付けること
- 質問に機密情報やキー情報を含めないようにする
- ChatGPTに限ったことではありませんが、アカウント流出もあるので必ずマスクしましょう。
- https://gigazine.net/news/20230621-chatgpt-accounts-dark-web-marketplaces/
- 自分で真偽が判断できない情報を鵜呑みにしない
- あくまで「それっぽい回答」をしてくれるだけ
- 自身でファクトチェックをするか、判断できる領域で活用しましょう
基本的な使い方
条件を箇条書きで指定する
箇条書きで条件を指定すると期待する結果を得られやすいです。
例
Javaでとあるフォルダからファイルツリーを出力するプログラムを書いて下さい。
- for文はなるべく使わないでください
- なるべくStreamAPIやLambdaを利用して下さい
- 引数はファイルパスを受け取って下さい
- 例外が発生した場合は、上位にスローして下さい
レビュアーになった気持ちで指摘をしていく
一回で期待する回答が得られることは少ないので、質問を繰り返してブラッシュアップしていきます。
レビューで人間に指摘するようにしていくと、上手く修正していってくれます。
Q1
Javaで1から10の値を合計する関数を作って下さい。
Q2
for 文を使わないでください
Q3
LambdaやStreamAPIでできませんか?
活用方法
欲しいメソッドやクラスを作ってもらう
メソッドコメントを質問として渡すを良い感じになります。
質問例
Goで以下のメソッドを作って。 # 内容 - UTCをJSTに変換する - 入力値、出力値は文字列「yyyyMMddhhmmss」とする # 入力値 UTC時間 # 出力値 JST時間
package main
import (
"fmt"
"time"
)
func convertUtcToJst(utcTime string) (string, error) {
// UTC時間の文字列をtime.Timeにパース
layout := "20060102150405"
utc, err := time.Parse(layout, utcTime)
if err != nil {
return "", err
}
// UTCをJSTに変換
jst := utc.In(time.FixedZone("JST", 9*60*60))
// JST時間を文字列にフォーマット
jstTime := jst.Format(layout)
return jstTime, nil
}
func main() {
// Example usage
utcTime := "20230709103000"
jstTime, err := convertUtcToJst(utcTime)
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println("UTC time:", utcTime)
fmt.Println("JST time:", jstTime)
}
メソッド名や変数名をつけてもらう
質問例
○○をするメソッドの名称を考えて下さい。
○○をするメソッドの名称で△△というのは自然ですか?
といった質問をすると使いやすいです。
メソッドをブラッシュアップしてもらう
質問例
以下のコードを書きましたが、間違いや改善できる点があれば指摘して下さい
クラスの配置箇所の相談
質問例
クリーンアーキテクチャでSpring/Javaの実装をしています。
Controllerでのみ利用する定数定義はどこに格納するのが良いですか?
定数は複数のControllerで利用されます。
テストデータやダミーデータの生成
架空のアイドルユニット名をいくつか考えて下さい
経験の無い/浅い言語でのプログラミング
生成した言語を微修正していけば、知らない言語でも結構実装できてしまいます。
ただし、精通している言語とあまりにかけ離れた文法のものは真偽の判断ができないため、難しいです。
あまりに構文の違うものだと厳しいと思いますが、1つ得意な言語があれば
終わりに
雑然とした記事なので、まとめることは特にありません。。。
また思いついた(or 思い出した)内容があれば追記していきます。