この記事の内容
この記事では、ChatGPTをシステム開発やプログラミングで有効活用するための方法を紹介します。
VS Codeの拡張機能を使って、ChatGPTを使ってみる
ChatGPTをOpenAIのWebサイトから使用することもできますが、ここではVS Codeの拡張機能を使って、ChatGPTを使用していく方法を紹介します。
インストール方法
VS Codeをインストールしていない人はインストールし、拡張機能からChatGPTを検索してインストールします。
インストールすると、左側にChatGPTのマークが出てくると思うので、そこからログインします。
OpenAIのアカウントがない人は先に作っておきましょう。GoogleのアカウントやMicrosoftのアカウントを使っていくこともできます。
うまくいけば、メッセージを入れると、返答してくれます。
ログインしたときにエラーが出る場合
ログインできずに、以下のようなメッセージが出る人は、Chromeのパスを設定する必要があるので設定していきます。
Unable to login. Make sure to login and keep your browser open. This error may also be due to OpenAI servers down or that it’s throttling the requests. Error: kw Protocol error (Runtime.callFunctionOn): Argument should belong to the same JavaScript world as target object
設定するには、拡張機能のところから、歯車マークを押します。そこでChromium PathというのがあるのでそこにChromeのパスを設定します。私の場合は、C:\Program Files\Google\Chrome\Application\chrome.exeでした。
これは、以下のGitHubのissueを参考にしました。
ChatGPTの返答を日本語化する方法
この後、拡張機能を使って、ChatGPTからテストコードの提案などをしてもらいますが、デフォルトだと英語で返答されます。提案されるソースコードはそれでいいのですが、解説などは説明でほしいと思います。そのため、設定を一部変更して日本語で返るようにします。設定の Chatgpt > Prompt: Prefix:****の部分です。
この設定がデフォルトだと英語になっているので、日本語の質問にしてあげます。
項目 | 入力内容 |
---|---|
Add Tests | 次のコードに対するテストを実装してください |
Find Problems | 次のコードの問題点を見つけてください |
Optimize | 次のコードを最適化してください |
Explain | 次のコードを説明してください |
Add Comments | 次のコードにコメントを追加してください |
ChatGPTをいろいろ使いこなしていく
ここからは、実際にChatGPTを使ってどんなことができるのかを書いていきます。
何かソースコードを適当に選択して、右クリックすると、ChatGPT:*****というのが出てくると思います。これを使うとChatGPTでテストコードを書いたりなどできます。1つ1つ見ていこうと思います。
Add testsでテストコードを追加してみる
ここでは簡単な足し算するプログラムのコードをもとにやってみました。
テストコードを書いてほしい対象を選択して、右クリックAddTestを選択すると記載してくれます。
Find Problemsで不具合を見つける
まずは簡単な引き算をするプログラムでやってみます。以下のsub関数を選択してFind Problemsをした結果、特に問題ないとかえってきました。
次に、引き算しないで、leftをそのまま返すようにしてみました。すると、その間違いを指摘してくれました。よさそうですね。
もう少し進んで、関数にコメントを入れてやってみます。Notesの部分に結果が負数になる場合は例外をスローするという文言をい入れると、それにも反応してくれて、実装がないことを伝えてくれます。優秀ですね。
実際の現場で使うプログラムはこんな簡単なことではないので、どこまで通用するかは見てみたいものです。
Add Commentsで説明を追加する
Explainの機能を使って、処理のコメントなどを追加してもらいます。以下のように記載してくれました。
ちょっと表示形式がずれてますが、コメントを追加してくれました。ここで、英語でコメントを記載するケースがありましたが、質問文の最後に日本語でと追加すると日本語で書いてくれるようになりました。
関数コメントを入れてもらう
ここでは、Pythonの関数にコメントを追加してもらいました。DocStringでnumpyスタイルで指示しました。
VS Codeの右クリックでAddCommentをするのではなく、自分で以下を入力しました。
関数コメントを書いて。docstringでnumpyスタイルで。def sum(left, right):calculated = left + rightif calculated < 0:raise Exception(“error”)return calculated
以下の形でコメントを追加してくれました。
日本語で書いてほしいと指定するとうまくnumpyスタイルで出てこなかったので、いったん言語は指定しないで出して、そのあとに日本語にしてというとうまくいきました。
クラス図を書く
PlantUMLの形式でテキストを書くと、クラス図で表示することができます。
これを利用して、PlantUMLの形式でクラス図を書いてみます。PlantUMLについては以下で説明しています。
PlantUMLのプレビュー結果は以下の通り。
シーケンス図を書いてもらう
PlantUMLでシーケンス図を書いて。
– アクターがLoginFormでユーザIDとパスワードを入力
– アクターがログインボタンを押下 – LoginFormからバックエンドサーバへログイン認証要求
– バックエンドサーバでMySQLデータベースに認証要求
– 認証OKなら200 OKを返す – 認証NGなら401 Unauthorizedを返す
– 認証OKならLoginFromからMainFormへ遷移する
以下の内容がかえってきました。
@startumlactor Useractivate UserUser -> LoginForm : Enter User ID and PasswordUser -> LoginForm : Press Login buttondeactivate UserLoginForm -> BackendServer : Send login requestactivate BackendServerBackendServer -> MySQL : Check authenticationif Authentication OK thenMySQL –> BackendServer : 200 OKBackendServer –> LoginForm : 200 OKdeactivate BackendServerLoginForm -> MainForm : NavigateelseMySQL –> BackendServer : 401 UnauthorizedBackendServer –> LoginForm : 401 Unauthorizeddeactivate BackendServerLoginForm -> LoginForm : Stayendif@enduml
@startumlactor Useractivate UserUser -> LoginForm : Enter User ID and PasswordUser -> LoginForm : Press Login buttondeactivate UserLoginForm -> BackendServer : Send login requestactivate BackendServerBackendServer -> MySQL : Check authenticationalt Authentication OK caseMySQL –> BackendServer : 200 OKBackendServer –> LoginForm : 200 OKdeactivate BackendServerLoginForm -> MainForm : NavigateelseMySQL –> BackendServer : 401 UnauthorizedBackendServer –> LoginForm : 401 Unauthorizeddeactivate BackendServerLoginForm -> LoginForm : Stayend@enduml
ER図を書いてもらう
以下のように注文すると、ER図を書いてもらえました。ちょっと依存関係のところが間違ってますがそれ以外は注文通りです。
PlantUMLでER図を出力して。– m_userテーブルにid列、name列、age列を定義。– m_userテーブルのid列はPK。– t_orderテーブルはid列、order_datetime列、user_id列を定義。– t_orderテーブルのuser_id列は外部参照でm_userテーブルのid列を参照。
@startumlentity m_user {id PKnameage}entity t_order {idorder_datetimeuser_id FK}m_user –|> t_order : user_id@enduml
テスト用のデータ
データベースのユーザマスタに登録するためのデータ出力をお願いしてみました。CSVで出力してもらってインポートするイメージです。いい感じに出てます。
使うライブラリの検討材料に
使用するライブラリを選定する際に、調査を行って決めると思いますが、その際の材料として使えるかもしれません。例えばフロントエンドフレームワークの比較に使う場合だと以下のような感じです。スター数はChatGPTの学習時期によると思いますのでずれがあります。
その他
- 日本語の回答だと思ったものが出ないケースがあるので、まずは英語で質問して、英語の答えをもらって、そこから日本語にしてといったほうがいいケースがありました。
コメント