![見出し画像](https://assets.st-note.com/production/uploads/images/112848604/rectangle_large_type_2_8d007cd6ef4cb363f2147773ab7b3a1c.png?width=1200)
プログラミング問題をまるっとchatGPTに投げたものと自分で作ったコードの比較
なんでそんなことやった?
新規案件を獲得するときにプログラミングテストを実施されるケースが多くなってきていると感じています。テストをすること自体は納得しているのですが、そのテストのレギュレーションが各企業でバラバラだったりしますので、どんなレギュレーションでどんな採点があるのかがイマイチわからない場合の方が多いです。
そのバラバラ具合の話はそれはそれで単独で記事にできそうなものなきもしますが、ここではおいておきます。
なのでそのバラバラなテストに合わせて頭を切り替えるという作業がやってみると結構時間が掛かってNGになることもしばしばあったので、汎用的なテスト実施環境をいうものが手元にあった方がいいと考えるようになりました。
そこでchatGPTの出番となるわけですが、そもそもchatGPTで出してくるコードはテストの解答として事足りるのか?というのがやってみた動機になります。
いざ実施
今回の記事を書くために使った問題はpaizaさんの練習問題になります。
問題は閏年判定で、そこに書いてある問題部分をまるっとコピーしてchatGPTに投げるだけという単純作業です。問題の内容を記事に書くと転載になる気がするので細かな内容は上記リンクから参照してください。
ちなみに投げる前に自分が書いたコードがこちら
// IsLeapYear 閏年か判定
func IsLeapYear(i int) bool {
if i%400 == 0 {
return true
} else if i%100 == 0 {
return false
}
return i%4 == 0
}
んで、chatGPTに丸っと投げたものがこちら
func isLeapYear(year int) bool {
if year%4 == 0 {
if year%100 == 0 {
if year%400 == 0 {
return true
}
return false
}
return true
}
return false
}
どっちも同じ処理内容なので正解だとは思いますが、なんとなくぼくが書いたコードの方が読みやすい気もします。これだとぼくが書いた方が結局いいじゃんって話になるだけでつまらないので、同じプロンプトでもう一度投げたものがこちら
func isLeapYear(year int) bool {
if year%4 == 0 && (year%100 != 0 || year%400 == 0) {
return true
}
return false
}
行数が減りました。ぼくのものと比べるとどっちもどっちなきがしてきてます。行数的にはchatGPTだし、ぱっと見で条件文を処理できるのならchatGPTだと思うけど、ぱっと見で条件文を処理できないなら行数が多いぼくの方がまだみやすい気もしなくはないです。
処理時間的にはどうなのか?という話もあると思いますがベンチマーク的に優秀なコードを狙うという目的はないためカットします。
総括
ある程度の求められる処理内容がはっきりと明記されているならchatGPTに投げてコードを貰っちゃった方が早いには早いと思います。
ですが、冒頭に書いた通りレギュレーションがバラバラであるので、処理内容がはっきり書いてなく想像部分を実装せざるを得ないテストというものも中にはありました。
ですので、chatGPT任せでいいと思う部分はざっくりこんな具合だと思います。
問題は理解できるけど具体的なコードが思いつかない場合のレコメンド
ほぼ定型な部分の自動書記
自身のコードとの比較によるコードチェック
コードチェックに関しては問題をそのまま投げたコードとの比較だけではなく、自身で書いたコードの解析を任せることで得られることもあります。
なんにせよ、一般的に認識されているテストでchatGPTを使うのは明らかなチートだとは思いますが、仕事上で使う分には問題ないというのがぼくの意見です。
この記事が気に入ったらサポートをしてみませんか?