ChatGPTという対話型自然言語生成モデルがあります。これを用いたチャット形式のWebサービスがあります。
ChatGPT: Optimizing Language Models for Dialogue
ChatGPTでは色々な対話ができ、ソースコードをやり取りすることもできます。Googleのアカウントで OpenAPI ログインすれば使えるのでお手軽です。これは例えば次の様に質疑応答をしてくれます。
なんとなくやりたいことを質問するだけでそれっぽいコードと説明を返してくれます。いわゆる逆引きです。ChatGPT は対話については優秀なのですが、プログラミング能力自体はそれ程よろしいわけではありません。説得力がありそうな論調の返しであっても中身を確認すると誤っていることがしょっちゅうあります。例えばこの二つのコードはそれぞれ、結果が偏る、n>=3以上の時に消える要素が出てくる、といった不具合を抱えています。そういった問題を見つけて修正する必要はありますが、自分が知らないことを多く知っているのでプログラミングの補助具として役立ってくれます。
ChatGPT はインターネットやGitHubの中から情報を探すのと同じ様な形で使えそうです。自分が知らないことも多くあるので参考になるけれども、真偽が怪しいことが多くて検証は必須、といった具合です。今後改善されるやもしれませんが ChatGPT の場合、検証は特に必要です。ChatGPT は説得力のある言葉を発しますが中身はだいぶ怪しいです。対話用のAIだけあってテストなしでコードを渡してくるので人間側で検証、修正しなければなりません。
ChatGPT の知識面についてですが、普通の人間より多くのことを知っています。例えば次の様にググってもなかなか出てこない様なメソッドの使い方を示してくれます。返してくれたメソッドの名前なり関数名なりライブラリなりで改めてググってリファレンスを読めば正確な情報を得られます。
不具合がないことを確認しつつコードの中身をで深く掘り下げずとも安全にコピペする方法としてテストが考えられます。このテストもひな形になるコードを ChatGPT に頼むことができます。
jest の設定がデフォルトだと document が使えないとか、elements はどこから出てきたとか、div 同士が被ってないのに被っている前提になっていないか、とか突っ込みどころが多いですが一応それっぽいコードを返してくれます。これを元に ChatGPT から受け取ったコードが正しいことを確認できるテストを作れると検証と修正がやりやすいです。
ChatGPT が明確に検索に勝る点として記号についての質問があります。検索するとメタ文字であったり区切りであったりでヒットしない語も ChatGPT なら次の様にそれっぽく返してくれます。
これも先の例と同様に ChatGPT の回答を元にリファレンス内をググれば正確さも確保できます。ちなみにこの回答のバッククォートは大分よろしくない説明と例なので検証なりリファレンスへの参考なりをしておかないと大事故が起きかねません。ChatGPTは自信満々に知ったかぶりするのが本当に上手いので何かを知りたい時はその真偽を確認するのが必須になります。
この記事では逆引きに注目して紹介しましたが、ChatGPT は対話に焦点を絞っているだけあって他にも様々なことができます。