エンジニア向けChatGPT入門:ChatGPTと対話して実装方法を検討する
はじめに
こんにちは。株式会社Shift DAAE(ダーエ)部の栗山です。
ソフトウェアエンジニアが体感的に理解できるようにChatGPTの使い方を説明していきたいと思います。
今回取り上げるテーマは以下です。
ChatGPTと対話して実装方法を検討する
ChatGPTと対話する流れと、そのときの人間側の考え方を説明します。
ぜひ応用して普段の業務に活用して頂けたらと思います。
今回は無償で使用可能なChatGPT3.5を使用します。
GPT4の方が推論能力が高いですが、今回行うことはGPT3.5で十分に可能です。
また本文では「プロンプト」という用語を使用します。
これはChatGPTへの命令(質問や依頼)のことです。
シチュエーション
以下のようなシチュエーションを想定します。
urlのドメインが一致するか確認する関数を作成したいのだけれど、どう実装したらいいのかわからない。
ChatGPTと対話しながら実装する流れ
ではやっていきましょう。
ChatGPTへのはじめの依頼
まずは以下のようなプロンプトを入力します。
以下の関数を作成してください。
言語:javascript
関数の機能:urlに含まれるドメインを比較する
引数1: url1
引数2: url2
戻り値:boolean形式での比較結果
ここでのポイントは以下です。
要件を明確にすること
言語、引数、戻り値などについて指定します。
ChatGPTのはじめの回答(第一案の提示)
ChatGPTの回答は以下のようなものでした。
これで十分な回答に思えますが、以下のような「メンドクサイ」ことがあるので、別の回答を提示してもらうことにします。
この正規表現を理解すること。
この正規表現が正しいかを確認すること。
ChatGPTへの2度目の依頼(代替案作成の依頼)
代替案を提示してもらうために、以下のプロンプトを入力します。
ありがとうございます。
正規表現を使用しない方法を教えてください。
ChatGPTの2度目の回答(正規表現を使わない方法の提示)
ChatGPTの回答は以下のようなものでした。
第一案よりも複雑になっています。
この程度の処理を実装するためにこれほどのコードを書く必要があるとは思えません。
さらに代替案を提示させることにします。
ChatGPTへの3度目の依頼(さらなる代替案作成の依頼)
次の代替案を提示してもらうために、以下のプロンプトを入力します。
ありがとうございます。
もっと簡潔な実装方法を教えてください。
ChatGPTの3度目の回答(URLを使用した方法の提示)
ChatGPTの回答は以下のようなものでした。
ChatGPTはURLオブジェクトを使用する方法を提示しました。
ここで大事なポイントです。
ChatGPTの回答にミスがあります。
// ChatGPTの回答
console.log(result); // false
// 正しい回答
console.log(result); // true
このようにChatGPTは間違えることがあるので気を付けましょう。
本筋に戻ると、この実装方針であればシンプルで、理解が容易です。
ここで私自身はURLオブジェクトについてMDNを確認します。
裏どりを終え、この方法で実装することにしました。
しかしこれでは終わりません。
エンジニアたるもの、このコードの問題点を把握する必要があります。
ChatGPTへの4度目の依頼(コードの問題点の把握)
コードの問題点を把握するために、以下のプロンプトを入力します。
ありがとうございます。最後の実装パターンを使用します。
この実装方法の問題点を考察し、教えてください。
ChatGPTの4度目の回答(コードの問題点の提示)
ChatGPTの回答は以下のようなものでした。
このように問題点を提示してもらえると、非常に助かります。
今回は、以下のような状況だったため、問題ないことがはっきりとわかりました。
1 → NodeJS上で動かす想定なので問題なし。
2 → パフォーマンスを気にする個所ではないので問題なし。
3 → URLのみをこの関数に渡す想定をしているので問題なし。
しかしながら、これでも終わりません。
エンジニアたるもの徹底的に効率化を追求するべきです。
ChatGPTへの5度目の依頼(コード変換)
バックエンドはTypeScriptを使っていたので変換します。
ありがとうございます。最後の実装方法をtypescriptにしてください。
引数と戻り値のデータ型を記載してください。
ChatGPTの5度目の回答(コード変換)
これくらいは楽勝でやってくれます。
あとは名前をis○○に変更するだけですが、最後にもう一つだけ実施しましょう。
忘れてはいけないやつが残っています。そうです。テストです。
ChatGPTへの6度目の依頼(テスト作成)
テストの作成依頼をします。
ありがとうございます。上記のテストパターンを作成してください。
言語:jest
ChatGPTの6度目の回答(テスト作成)
バッチリ回答してくれます。
テストコードを見ることで、コードの機能を詳細に把握できます。
これにより私が把握した通りの機能であることがわかりました。
以上です。
最後に
今回は、ChatGPTと対話しながらコードを実装していく流れを説明しました。ぜひ有効活用して普段の業務の生産性向上、品質向上につなげていただけたらと思います。
\もっと身近にもっとリアルに!DAAE公式Twitter/
【あわせて読みたい関連記事】
お問合せはお気軽に
https://service.shiftinc.jp/contact/
SHIFTについて(コーポレートサイト)
https://www.shiftinc.jp/
SHIFTのサービスについて(サービスサイト)
https://service.shiftinc.jp/
SHIFTの導入事例
https://service.shiftinc.jp/case/
お役立ち資料はこちら
https://service.shiftinc.jp/resources/
SHIFTの採用情報はこちら
https://recruit.shiftinc.jp/career/