見出し画像

エンジニア向け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/


【あわせて読みたい関連記事】



執筆者プロフィール:Kuriyama Akira
DAAE開発エンジニア。コーヒーの焙煎はAIにできますかね?

お問合せはお気軽に
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/

みんなにも読んでほしいですか?

オススメした記事はフォロワーのタイムラインに表示されます!